![iptables 仅允许 Web 服务器的输入和输出流量](https://linux22.com/image/633988/iptables%20%E4%BB%85%E5%85%81%E8%AE%B8%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%BE%93%E5%85%A5%E5%92%8C%E8%BE%93%E5%87%BA%E6%B5%81%E9%87%8F.png)
我有一个 Elastic Search 服务器似乎已被利用(它被用于 DDoS 攻击,大约一个月没有防火墙)。
作为创建新服务器的临时措施,我希望阻止所有不来自或不去往我们 Web 服务器的流量。这些 iptables 规则能否实现这一点:
iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 9200 -j DROP
iptables -P FORWARD \! --src 1.2.3.4 DROP
iptables -P OUTPUT \! --src 1.2.3.4 DROP
第一条规则已经尝试和测试过,但显然无法阻止从我的服务器到其他 IP 地址的流量,所以我希望可以添加后两条规则来完全保护它。
答案1
为了实现这一点,我将在定义允许的 IP 之后实现默认丢弃。因此它看起来像
iptables -I INPUT --src 1.2.3.4 -p tcp --dport 9200 -j ACCEPT
iptables -P INPUT DROP
iptables -I FORWARD --src 1.2.3.4 ACCEPT
iptables -P FORWARD DROP
iptables -I OUTPUT --src 1.2.3.4 ACCEPT
iptables -P OUTPUT DROP
另外,请记住,FORWARD 链很可能不会执行任何操作,除非您有多个 nic、vlan 标记等...并且 中的“1” /proc/sys/net/ipv4/ip_forward
。
另外,先测试你的规则,并可能添加一个 10 分钟的 cron 来刷新规则,或者你可能如果这是一台远程机器,则将自己锁定,没有带外控制台访问权限:)