AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[port](unix)

Martin Hope
HippoMan
Asked: 2022-06-09 08:05:40 +0800 CST

iptables 不阻止通过端口访问?

  • 1

我正在Debian 8.11运行iptables v1.4.21and ipset v6.23, protocol version: 6。

我试图阻止除一小组主机之外的所有主机访问某些端口,但它似乎不起作用。

首先,我将一小部分 IP 地址放入一个ipset名为allowed-hosts. 然后,在运行sudo /sbin/iptables -Fand之后sudo /sbin/iptables -X,我发出以下命令:

sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -j DROP
sudo /sbin/iptables -I INPUT -p tcp -m multiport --destination-port 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT

但是,即使在这样做之后,来自不存在 IP 地址的客户端allowed-hosts仍然成功连接到所有命名端口。

没有其他有效的iptables规则。

以下是sudo /sbin/iptables -L...的结果

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s match-set allowed-hosts src
DROP       tcp  --  anywhere             anywhere             multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

这是sudo /sbin/iptables-save...的结果

# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*security
:INPUT ACCEPT [16777464:2727427757]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*raw
:PREROUTING ACCEPT [21444955:3000669583]
:OUTPUT ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*mangle
:PREROUTING ACCEPT [21444955:3000669583]
:INPUT ACCEPT [21444952:3000669415]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18889599:33356814491]
:POSTROUTING ACCEPT [18889599:33356814491]
COMMIT
# Completed on Wed Jun  8 11:53:09 2022
# Generated by iptables-save v1.4.21 on Wed Jun  8 11:53:09 2022
*filter
:INPUT ACCEPT [2130649:527089827]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4465281:1887206637]
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allowed-hosts src -j ACCEPT
-A INPUT -p tcp -m multiport --dports 110,143,993,995 -j DROP
COMMIT
# Completed on Wed Jun  8 11:53:09 2022

我可能做错了什么?

先感谢您。

**更新**

首先,确实指定了“src”,这与下面评论中的建议相反。它出现在上面的“... src -j ACCEPT”行中。

iptables其次,我使用的这些命令的语法来自iptables文档和通过网络搜索找到的讨论中显示的内容。

第三,看上面的iptables -L输出。source=anywhere这清楚地表明,对于列表destination=anywhere中的 IP 地址,应该接受到端口的连接allowed-hosts。这也清楚地表明,对于不在列表中的 IP 地址,应该从source=anywhere到断开与端口的连接。destination=anywhereallowed-hosts

至少这iptables似乎是在告诉我。但是,从不在列表中的 IP 地址到这些端口的连接allowed-hosts仍然在我的机器上被接受。

此外,如果我这样做ipset test allowed-hosts aaa.bbb.ccc.ddd,其中“aaa.bbb.ccc.ddd”表示不在的IP 地址allowed-hosts,我正确地得到以下输出:

aaa.bbb.ccc.ddd is NOT in set allowed-hosts.

如果我这样做ipset test allowed-hosts www.xxx.yyy.zzz了,其中“www.xxx.yyy.zzz”代表一个 IP 地址,我allowed-hosts正确地得到以下输出:

www.xxx.yyy.zzz is in set allowed-hosts.

查看iptables-save上面的输出,我的配置中还有什么可能导致这些与端口的连接不allowed-hosts被接受?

再次感谢您,提前。

iptables port
  • 1 个回答
  • 96 Views
Martin Hope
always-a-learner
Asked: 2019-09-02 23:25:46 +0800 CST

检查服务器上的端口时获取连接超时

  • 1

我对服务器没有任何深入的了解,但最近我在一台服务器上遇到了一些邮件问题。

我试过这个命令

telnet 77.242.116.45 587

它给了我

telnet: Unable to connect to remote host: Connection timed out

我正在附加端口图像,但我不知道哪个帖子正在运行,哪个没有。

在此处输入图像描述

任何人都可以请指导我。

在尝试了斯蒂芬基特的解决方案后,我得到了这个错误。

外部主机关闭连接。

在此处输入图像描述

linux port
  • 1 个回答
  • 2828 Views
Martin Hope
Tim
Asked: 2019-03-21 18:30:52 +0800 CST

`rpcinfo` 是否列出了 RPC 服务的端口号?

  • -2
$ rpcinfo 
   program version netid     address                service    owner
    100000    4    tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6      ::.0.111               portmapper superuser
    100000    4    udp6      ::.0.111               portmapper superuser
    100000    3    udp6      ::.0.111               portmapper superuser
    100000    4    tcp       0.0.0.0.0.111          portmapper superuser
    100000    3    tcp       0.0.0.0.0.111          portmapper superuser
    100000    2    tcp       0.0.0.0.0.111          portmapper superuser
    100000    4    udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp       0.0.0.0.0.111          portmapper superuser
    100000    2    udp       0.0.0.0.0.111          portmapper superuser
    100000    4    local     /run/rpcbind.sock      portmapper superuser
    100000    3    local     /run/rpcbind.sock      portmapper superuser

根据https://unix.stackexchange.com/a/234158/674 ,我认为“地址”显示了 RPC 服务的 IPv6 地址。

是否rpcinfo列出了 RPC 服务的端口号?我怎样才能找到它?

onc-rpc port
  • 1 个回答
  • 1750 Views
Martin Hope
kiigass
Asked: 2018-09-15 05:12:25 +0800 CST

systemd 打开套接字,服务无法绑定到该套接字

  • 1

我正在研究 RedHat7.5。

我制作了一个 systemd 套接字(/etc/systemd/system/barfoo.socket):

[Unit]
Description=This is the barfoo socket

[Socket]
ListenStream=0.0.0.0:123
NoDelay=true
BindIPv6Only=both

对于学习者:BindIPv6Only=都为 IPv6 和 IPv4 打开端口。格式 ListenStream=0.0.0.0:123 为 IPv4 明确打开端口。

和相应的 systemd 服务(/etc/systemd/system/barfoo.service):

对于学习者:服务文件和套接字文件同名很重要

[Unit]
Description=This is the barfoo service
Requires=barfoo.socket

[Service]
RestartSec=2s
User=installation
Group=installation
ExecStart=/home/installation/tests/a.out
Restart=always

[Install]
WantedBy=multi-user.target

对于学习者:“Requires=barfoo.socket”使套接字可用于此服务。RestartSec 和 Restart 将使服务每 2 秒重新启动一次(退出后)。用户和组使服务以安装权限运行。ExecStart 是要启动的实际二进制文件。

我还做了一个小测试程序(test.c):

#include<stdio.h> 
#include<arpa/inet.h> 

int main() 
{ 
    int server = socket(AF_INET, SOCK_STREAM, 0); 
    if (server < 0) 
        printf("Error in server creating\n"); 
    else
        printf("Server Created\n"); 

    struct sockaddr_in my_addr, peer_addr; 
    my_addr.sin_family = AF_INET; 
    my_addr.sin_addr.s_addr = INADDR_ANY; 
    my_addr.sin_addr.s_addr = inet_addr("10.0.1.10"); 
    int b = 1, i = 123; 

    my_addr.sin_port = htons(i); 

    b = bind(server, (struct sockaddr*) &my_addr, sizeof(my_addr)); 

    if(b)
      printf("Error binding to port %d, return %d\n", i, b);
    else
      printf("Bound to port %d, return %d\n", i, b); 

   return 0;
}

然后我做了:

  • gcc test.c(创建 a.out)
  • systemctl daemon-reload(这使得 systemd 读取我的 barfoo 文件)
  • systemctl start barfoo

当我这样做时,netstat -tulpen我可以看到 systemd 已经打开了端口。但是服务(a.out)总是返回“错误绑定到端口......”。

这个想法是使端口 123 可用于以非 root 权限运行的程序。通常低于 1024 的端口仅对 root 可用。

我的问题是:为什么它不起作用/我做错了什么?

systemd port
  • 2 个回答
  • 4911 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve