这是Linux的iptables的一个很好的起点吗?

我是iptables的新手,我一直在试图把防火墙放在一起,目的是保护networking服务器。 下面的规则是我迄今为止所做的规定,我想听听规则是否合理 – 我是否遗漏了任何必要的规则?

除了端口80,我还需要为外部连接打开端口3306(mysql)和22(ssh)。

任何反馈是高度赞赏!

#!/bin/sh # Clear all existing rules. iptables -F # ACCEPT connections for loopback network connection, 127.0.0.1. iptables -A INPUT -i lo -j ACCEPT # ALLOW established traffic iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # DROP packets that are NEW but does not have the SYN but set. iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP # DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet. iptables -A INPUT -f -j DROP # DROP packets with all tcp flags set (XMAS packets). iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP # DROP packets with no tcp flags set (NULL packets). iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP # ALLOW ssh traffic (and prevent against DoS attacks) iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s -j ACCEPT # ALLOW http traffic (and prevent against DoS attacks) iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT # ALLOW mysql traffic (and prevent against DoS attacks) iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT # DROP any other traffic. iptables -A INPUT -j DROP 

试用开箱即用的防火墙。 从networking启用您想要的服务。 有一个,两个和三个接口的示例规则集。 该文件是好的,并积极维护。

我希望你会想要限制哪些地址可以访问MySQL,这很容易完成。 除非您最近已经探测过另一个端口,否则您还可以在端口closures的情况下保护SSH。

  1. 你真的想允许ICMP。
  2. 5 /秒可能不足以用于HTTP
  3. 我没有看到XMAS / NULL数据包的规则
  4. 也没有看到特殊的新数据包规则的原因

ETA:5.有了这样的速率限制,DoS攻击变得非常简单。 我只需要每秒发送一个SYN数据包到你的服务器来拒绝你的ssh访问。

我会考虑使用像NARC这样的东西来做你的iptables规则configuration:

http://www.knowplace.org/pages/howtos/firewalling_with_netfilter_iptables/netfilter_automatic_rule_configurator.php

这个软件包已经有了一些合理的默认设置,您应该可以信任它们。

我使用Webmin,它有一个很好的起始规则集。

http://www.webmin.com/

过滤从服务器到互联网的传出通信也很重要。 尤其是SMTPbuild议只允许一台服务器。

我pipe理Mikrotik防火墙,我习惯于这样做:

  • 从互联网与目标地址从私人范围内放入传入的小包
  • 删除端口扫描(每秒5端口检查)
  • SSH到另一个端口(默默无闻,我知道,但它工作!:-))并限制源IP
  • 丢弃路由器的广播
  • 掉TCP TCP RST

还有更多。 我build议阅读这个: http ://wiki.mikrotik.com/wiki/Dmitry_on_firewalling Mikrotik的语法是直接的,它包含良好的指向初学者。

关于XMAS数据包。

不同的扫描仪发送不同的XMAS的味道。 你所有的规则,而它应该匹配短语XMAS数据包的规范定义,实际上并没有捕获它们,因为NMAP发送它们。

http://techhelplist.com/index.php/tech-tutorials/43-linux-adventures/120-nmap-linux-iptables-xmas-packets

应该是XMAS扫描的nmap -sX将不会被ALL ALL捕获。

ALL ALL等于FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG