数据包在端口 22 上被 iptables 阻止

数据包在端口 22 上被 iptables 阻止

在运行调用 paramiko 的 python 库时,我注意到 iptables 日志中有一些被阻止的数据包。我在尝试弄清楚为什么 iptables 运行时此库的网络性能不一致时注意到了被阻止的数据包。基本上,服务器(下面日志中的 10.0.12.206)运行使用 paramiko 的库,通过端口 22 在客户端(下面日志中的 10.0.10.103)上安全地执行命令。当客户端运行宽容的 iptables 时,它工作得很好。当客户端使用以下规则运行 iptables 时,通常会出现无限期的挂起,我怀疑这可能是由于客户端上运行的 iptables 阻止了一些数据包,因为这些数据包仅在库运行时出现在日志中。

这些是我的 iptables 规则-

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP

-A INPUT -i lo -j -ACCEPT
-A OUTPUT -o lo -j -ACCEPT

-A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

-A OUTPUT -o eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -m state --state ESTABLISHED,RELATED -j -ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j -ACCEPT

-A INPUT -j LOG --log-prefix "IPtables DROP DEFAULT IN: " 
-A OUTPUT -j LOG --log-prefix "IPtables DROP DEFAULT OUT: " 

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP

这些是客户端日志中的常见消息-

Oct  7 16:43:08 ip-10-0-10-103 kernel: IPtables DROP DEFAULT IN: IN=eth0 OUT= MAC=<withheld> SRC=10.0.12.206 DST=10.0.10.103 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=18436 DF PROTO=TCP SPT=58634 DPT=22 WINDOW=523 RES=0x00 ACK FIN URGP=0

Oct  7 16:44:14 ip-10-0-10-103 kernel: IPtables DROP DEFAULT OUT: IN= OUT=eth0 SRC=10.0.10.103 DST=10.0.12.206 LEN=260 TOS=0x00 PREC=0x00 TTL=64 ID=57627 DF PROTO=TCP SPT=22 DPT=58634 WINDOW=240 RES=0x00 ACK PSH URGP=0

我想看看这些被阻止的数据包是否造成了问题。我该如何允许这些被阻止的数据包通过?我尝试了一些规则,但没有成功,例如-

-A OUTPUT -o eth0 -p tcp --tcp-flags ALL ACK,PSH,URG -j ACCEPT

答案1

我认为问题是你允许OUTPUT 端口 22,但它应该端口22:

-A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

这应该可以修复您发布的第二行日志。但我不确定您记录的第一个数据包为什么会被捕获。您能检查iptables -nvL并确保这些规则确实得到应用吗?

相关内容