我尝试阅读互联网上的许多文章,但没有一篇说得很清楚。我也知道以前有人在这里发布过类似的问题,但没有一篇能解释我的情况。之前我因为这个浪费了 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_ftp
ftp 连接结合使用,请查看这里关于主动 ftp 如何工作。