我正在为工作中的一个项目构建一个 Web 服务器,从底层开始。在阅读了大量资料(观看了一些 YouTube 视频等)之后,我想到了一个脚本(或者更好的程序),用于为 Debian 8.5 或 Ubuntu 14.04 lts 服务器应用一些入门 iptables 规则。
如果我做错了什么或者我需要添加什么来使防火墙运行得更好,我很乐意向您展示这里的代码并得到您的一些建议和回复。
我的问题是:
1:脚本和流程可以吗?
2:由于我默认阻止了 OUTPUT 链上的所有内容,但我在 ACCEPT 上保留了一些端口,因此更新服务器时我会遇到任何问题吗?
3:我必须应用哪些其他实现才能使 iptables 性能更好,例如删除端口扫描器等?
非常感谢您抽出时间。
这是我们用名称firewall.sh创建的代码:
#!/bin/sh
#We flush all the previous rules we had in iptables
iptables -F
#Policies - We need to DROP everything
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
#Established Connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Loopback Authorization
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Ping Enable
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
#SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
#HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
我们需要让这个脚本在服务器重启时运行:
sudo mv firewall.sh /etc/init.d
cd /etc/init.d
sudo mv firewall.sh firewall
sudo chmod +x firewall
sudo update-rc.d firewall defaults
答案1
该脚本可以添加规则...我不会在每次启动系统时都调用它。如果您希望这些规则在重新启动后仍然存在,我建议使用 iptables-persistent。您可以通过运行以下命令来安装它:
sudo apt-get install iptables-persistent
对于已建立的连接,您可以简单地使用以下命令:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
此外,如果您愿意,您还可以在一行内为 tcp 协议添加多个端口,但是您现在这样做就可以了。例如:
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443,8080:8082,26900 -j ACCEPT sudo iptables -A OUTPUT -p tcp -m multiport --sports 80,443,8080:8082,26900 -j ACCEPT
我还会考虑为 DNS 打开端口 53,因为根据你的 repo 设置,你可能无法更新软件包。我使用这个:
sudo iptables -A INPUT -p udp --dport 53 --dport 1024:65535 -j ACCEPT sudo iptables -A OUTPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT