Iptables:RELATED 和 ESTABLISHED 状态之间的区别?

Iptables:RELATED 和 ESTABLISHED 状态之间的区别?

我尝试阅读互联网上的许多文章,但没有一篇说得很清楚。我也知道以前有人在这里发布过类似的问题,但没有一篇能解释我的情况。之前我因为这个浪费了 2-3 个小时。

手册上说:

NEW——表示数据包已启动新连接,或与尚未在两个方向上看到数据包的连接相关联,并且

ESTABLISHED——表示该数据包与一个已在两个方向上看到数据包的连接相关联,

RELATED——表示数据包正在启动一个新连接,但与现有连接相关,例如 FTP 数据传输或 ICMP 错误。

我的服务器上的 iptables 如下所示:

iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

# Flush old rules
    iptables -F

# Loopback
    iptables -I INPUT 1 -i lo -j ACCEPT

# Allow responses from OUTPUT connection
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

# Apache
    iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

每当我从 PC 上尝试时curl --verbose https://server_ip/,它都能完美运行。但是当我通过 SSH 进入服务器后从服务器内部尝试此操作时,它总是停留在CLIENT HELLO。为什么会这样?注意:(curl --verbose http://server_ip/没有 SSL)在本地 PC 和服务器上都可以完美运行。

在我执行之后iptables -A INPUT -m state --state RELATED -j ACCEPT,它也从服务器内部开始工作。为什么它又开始工作了呢?

手册上说RELATED -- meaning that the packet is starting a new connection。这是否存在安全风险?客户端可以使用此功能打开到其他端口的连接吗?什么时候有用?

答案1

RELATED对于需要打开新连接的协议很有用。它通常与ip_conntrack_ftpftp 连接结合使用,请查看这里关于主动 ftp 如何工作。

相关内容