NetFilter/iptables防火墙设置(上)
2007-02-23 12:39:38 来源:WEB开发网核心提示: ICMP我不允许所有的ICMP数据传输,但允许ping,NetFilter/iptables防火墙设置(上)(6),使用ICMP的echo请求是最简单的主机扫描模式,如果主机存在并且有自由的IP堆栈,如果我从公网能够跟防火墙建立一个SSH会话的话,那将很方便,那么它将给发送者一个ICMP
ICMP
我不允许所有的ICMP数据传输,但允许ping。使用ICMP的echo请求是最简单的主机扫描模式。如果主机存在并且有自由的IP堆栈,那么它将给发送者一个ICMP echo回复。因此,可以用ping来确定上行的主机是否被分配了IP地址。这就会暴露我的主机,但是由于我要公开web和mail服务器,主机始终也是要被人知道的,因此没必要限制ping的使用。
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/second -j
ACCEPT
ICMP echo请求的代码是8。如你所见,应用于那些数据包的规则加载了limit模块并且限制为每秒1个包。其它类型代码还有echo响应(0),无法到达目的地(3)以及超时(11)。它们没有限制速率,因为它们不会让主机对请求作出响应(像echo请求那样)。Echo响应和无法到达目的地很容易理解,而允许超时这个类型似乎不太好理解。超时ICMP消息被用来返回一个生存周期(TTL)超时错误报告。IP包中有一个包含一位数字的部分叫做time-to-live。每次数据包经过路由器时,TTL就被消耗掉一些。当TTL变为0时,数据包就不再被继续转发了,并且发送者会收到一条ICMP超时消息。
这些规则是应用于所有接口的,不单单是公网接口。我并没有什么特殊的理由来解释这点,但是我觉得这么做对防火墙或者内网主机也没有什么显著的影响。
防火墙主机上的服务
到目前为止,防火墙可以自己连接也可以转发内网的连接了。它允许已建立的会话的返回数据传输发送给防火墙本身和内网上的主机。它还允许内网任何的数据传输发送到防火墙。现在我要把防火墙上的一个服务公开给公网。如果我从公网能够跟防火墙建立一个SSH会话的话,那将很方便。谨慎起见,我不会用标准的SSH端口(22)而用2202:
更多精彩
赞助商链接