Kri*_*ris 61 firewall iptables packet
服务器上防火墙的一部分:
iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP
Run Code Online (Sandbox Code Playgroud)
当我在线搜索时,我总是看到该规则中使用了 NEW,但我很难理解为什么没有使用 ESTABLISHED 和 RELATED。
像这样 :
iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释什么时候新数据包完全变为 ESTABLISHED 和 RELATED 吗?
Aar*_*ley 60
将新数据包视为接收方接听之前的电话呼叫。一个 ESTABLISHED 数据包是他们的“你好”。如果您打电话告诉他们您将要向他们发送的电子邮件,则相关数据包将是。(电子邮件是相关的。)
如果我的类比不是很好,我个人认为手册页处理得很好:
NEW——意味着数据包已经开始了一个新的连接,或者与一个在两个方向都没有看到数据包的连接相关联,和
ESTABLISHED——意味着数据包与一个在两个方向都看到数据包的连接相关联,
RELATED -- 意味着数据包正在启动一个新连接,但与现有连接相关联,例如 FTP 数据传输或 ICMP 错误。
Jai*_*zel 20
假设服务器和客户端都具有限制性INPUT和开放性OUTPUT,即:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
Run Code Online (Sandbox Code Playgroud)
来自iptables-extensions(8)在主动模式下的 FTP 示例:
1. 新
NEW 数据包已经开始了一个新的连接,或者与一个在两个方向都没有看到数据包的连接相关联。
端口上的客户端50000(任何随机的非特权端口)连接到端口上的 FTP 服务器21,服务器至少需要这个来接受这个传入的连接:
iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
2. 成立
ESTABLISHED 数据包与在两个方向都看到数据包的连接相关联。
现在在客户端,他21使用本地端口在端口上打开了到服务器的传出连接50000,他需要以下 iptables 以允许响应从server (21)to到达client (50000):
sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
3. 相关
RELATED 数据包正在启动一个新连接,但与现有连接相关联,例如 FTP 数据传输或 ICMP 错误。
现在在建立 FTP 连接并且即将执行数据连接后,客户端将在端口上打开一个服务器套接字(是的,活动的 FTP 客户端成为数据连接的服务器)60000(据我了解,客户端将标记此端口)60000至于RELATED来自50000->21)的另一个连接,并将使用 FTPPORT命令将此端口号发送到服务器。然后 FTP 服务器将打开一个从其端口20到60000客户端端口的新连接,那么,客户端现在需要以下内容才能使这个新连接成功:
sudo iptables -A INPUT -m state --state RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
最后,要使其正常工作,您需要启用ip_conntrack_ftp内核模块以允许系统将连接/包标记为RELATED(这是我的理解,我没有深入研究):
modprobe ip_conntrack_ftp
Run Code Online (Sandbox Code Playgroud)