iptables 规则针对来自特定 IP 和端口的传入

iptables 规则针对来自特定 IP 和端口的传入

我有 2 台服务器,一台用于 Web 请求(我将其命名为web),另一台用于数据库(我将其命名为db)。两台服务器都是 CentOS 7。

我想制定以下规则iptables

  • 所有对服务器的请求db都应被阻止(所有端口上的所有 IP);
  • 只有web服务器(y.y.y.y)可以db通过端口5432和访问服务器6379
  • 只需静态ip(x.x.x.x)即可访问端口22

所以我写了这些规则,但我不确定它们是否正确

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 5432 -s y.y.y.y -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -s y.y.y.y -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT

答案1

虽然这些规则看起来正确(假设它们进入服务器db),但您缺少一条重要规则,即:

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

如果没有该规则,并且采用默认INPUT策略DROP,您的db服务器本身将无法访问网络,例如安装升级或ping/traceroute可达性检查等。

因此完整的iptables规则集应该是

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 5432 -s y.y.y.y -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -s y.y.y.y -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s x.x.x.x -j ACCEPT

请确保不要执行iptables -P INPUT DROPvia,ssh因为它会将您锁定在服务器之外。

相关内容