我编写了第一个IPtables规则文件,试图在除SSH和Web所需端口之外的所有端口上保护我的服务器.
这就是我想出的:
- i=/sbin/iptables
- # Flush all rules
- $i -F
- $i -X
- # Setup default filter policy
- $i -P INPUT DROP
- $i -P OUTPUT DROP
- $i -P FORWARD DROP
- # Allow unlimited traffic on loopback
- $i -A INPUT -i lo -j ACCEPT
- $i -A OUTPUT -o lo -j ACCEPT
- # Open up ports for Nginx
- $i -A INPUT -p tcp --dport 443 -j ACCEPT
- $i -A INPUT -p tcp --dport 80 -j ACCEPT
- $i -A INPUT -p tcp --dport 22 -j ACCEPT
- # Make sure nothing comes or goes out of this Box
- $i -A INPUT -j DROP
- $i -A OUTPUT -j DROP
我知道在IP表方面有一些黑色艺术,所以我想知道是否有人可以投入,看看这是否是保护Web服务器的正确方法.
解决方法
您可能不希望删除所有传出连接.
您可能希望尽早添加规则以允许ESTABLISHED连接,如果使用像ftp这样的协议,您可能会将RELATED添加到规则中,例如
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
记住规则顺序很重要 – 第一场比赛胜利.
你应该看看我们在保护网络服务器Tips for Securing a LAMP Server时所拥有的这个Q& A它有很多很棒的信息.