Linux下常用的防火墙有TCP Wrappers和Netfilter。
1.TCP Wrappers
TCP Wrappers是通过/etc/hosts.allow和/etc/hosts.deny这两个配置文件来实现一个类似防火墙的机制。控制的规则如下:
(a)先以/etc/hosts.allow进行检查,若规则符合就予以放行。
(b)再以/etc/hosts.deny进行检查,若规则符合就予以抵挡。
(c)若都不在这两个文件内,即规则都不符合,那么就会放行。
2.Netfilter
(1)Netfilter的介绍
Netfilter利用一些数据包过滤的规则设置,来定义出什么数据可以接收,什么数据需要过滤,来达到保护主机的目的。Netfiler提供了一个iptables这个工具软件来设置Netfilter的防火墙数据包过滤的规则。
iptables在配置防火墙规则时,有表格(table)、链(chain)和规则(rule)三个维度。其中table包含多个chain,每个chain包括默认策略和规则,而且用户可以自定义表格,如下所示:
数据包在iptable的复杂的规则图中的流向如下图所示:
(2)Netfilter的注意点
#规则的查看 -t table —— 指定table的名称,如filter,nat,mangle等等。如果使用iptables不指定该参数的话,那么默认为filter -L —— 列出指定table的所有chain以及chain下面的规则和默认策略 -n —— 显示ip和port,不反查主机名或服务 -v —— 列出更多信息 #规则的清理 -F —— 清除所有的规则 -X —— 清除所有用户“自定义”的chain -Z —— 将所有的chain的计数与流量统计都归为零 #定义默认的策略 -P chain —— 为指定的table的指定chain定义默认策略 #其他 -A chain —— 为指定chain新增一条rule,作为该chain的最后一条规则 -I chain —— 为指定chain新增一条rule,作为该chain的第一条规则 -i 网络接口 —— 数据包进入的网络接口 -o 网络接口 —— 数据包留出的网路接口 -s str —— 数据包来源src主机 -d str —— 数据包的目的dest主机 -j action —— 动作类型,包括接受(ACCEPT)、丢弃(DROP)、拒绝(REJECT)等一些简单的操作举例:
(1)列出filter表格的所有chain和rule iptables -L -n #亦可以使用iptables-save [-t table]来查看 (2)列出nat表格的所有chain和rule iptables -t nat -L -n (3)清楚所有的已制定的规则(不包括自定义) iptables -F #默认为filter table (4)清楚所有用户“自定义”的规则 iptables -X #默认为filter table (5)将所有的chain的计数和流量统计都归为零 iptables -Z #默认为filter table (6)定义默认的策略 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT (7)只要是来自内网的192.168.100.0/24的数据包都接收 iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT (8)将来自192.168.100.230的数据包丢弃 iptables -A INPUT -i eth1 -s 192.168.100.230 -j DROP