Linux实践工程师学习笔记二十四
时间:2007-01-09 来源:cyrich
实际配置防火墙时,首先将所有门都关闭,如将三条链的默认策略都改为DROP,再根据服务器需要一个端口一个端口地打开。首先需要分析这台服务器是干什么用的,假设只是一台提供http服务的Web服务器。
首先把服务器所有端口关闭,为了方便远程管理开一个22的端口,端口可以在/etc/services文件中查看。添加规则时分析一下数据包的格式,再确定规则参数。
#iptables -A INPUT -p tcp -d 192.168.0.22 --dport 22 -j ACCEPT
#iptables -A OUTPUT -p tcp -s 192.168.0.22 --sport 22 -j ACCEPT
注意通信的双向性,在INPUT添加一条规则,一般要在OUTPUT添加一条与之对应,所谓有出必有入。
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -p FORWARD DROP
上面首先打开22端口,防止正在使用的远程管理断掉,再改变三条链的默认策略。
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
打开一个80端口,本机地址可省略
#service iptables save 保存劳动成果(保存规则)
将刚才添加的规则保存到/etc/sysconfig/iptables文件
或使用#iptables-save > /etc/sysconfig/iptables
系统启动时会加载这个文件中的规则。
现在服务器挡住所有服务,只开了两个端口80,22,对一台网络服务器来说,绝不能缺少DNS服务,任何联网的主机都需要做DNS请求,目前这台服务器还无法发送DNS请求。增加一条DNS通道,首先作为一台客户机出现:
#iptables -A OUTPUT -p udp --dpott 53 -j ACCEPT 首先经过OUTPUT链
#iptables -A INPUT -p udp --sport 53 -j ACCEPT 请求后得到回复数据雹,允许进入
测试#host fedora.cyrich.com
如出现无法解析,或很慢,则#more /etc/resolv.conf查看域名解析配置文件,看是否本机为DNS服务器,如果是还需添加一条规则,在规则时,应该分析这个数据包如何进出哪条链,以及这人数据包的格式,如上面#host fedora.cyrich.com因为本身作为DNS服务器,所以会发送一个包到自己,
192.168.0.22:*――>102.168.0.22:53 (允许)
但当时入INPUT链时,没有一条跟它匹配,所以会拒绝。所以如果同时作为DNS服务器和客户机,还需添加下面规则:
#iptables -A INPUT -p udp --dport 53 -j ACCEPT
#iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
当同时作为某种服务的服务端和客户端时,需在规则中添加两条规则,即源端口和目标端口。
当前的规则设置忽略了本机的内部服务,在本机上有很多端口守护在127.0.0.1上,当本机的客户端访问回环设备时会拒绝。
127.0.0.1上的服务如不打开,会影响本机内部服务的正常运行,打开了也不会造成服务器什么危害,所以还是最好打开:
#iptables -A INPUT -s 127.0.0.1 -j ACCEPT
#iptables -A INPUT -d 127.0.0.1 -j ACCEPT
#service iptables save (保存劳动成果)
经过FORWARD链的数据包不是发送给本机,而是发送给别人的,当作为路由器使用时才需配置FORWARD链。现配置一台路由器,如允许局域网用户浏览网页配置方法与INPUT.OUTPUT一样。
#iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT 允许局域网发送数据包
#iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT 允许局域网接收数据包
这样相当于把局域网和互联网打通了,任何包都可通过,在实际使用中可以加上端口,做些限制,过滤某些数据包,也可以使用LOG目标加进日志。其实光打开FORWARD链还不行,还需要打开内核的转发文件。
#echo 1 >/proc/sys/net/ipv4/ip_forward (默认为0)
0表示关闭转发,1为启用,要永久启用,可修改配置文件/etc/sysctl.conf:
net.ipv4.ip_forward =1
如需访问互联网,这样的配置还不行,因为私有地址是无法直接访问互联网的,这里我们做NAT网络地址转换,这时网需两个地址,一个局域网的,一个互联网的,当收到访问互联网的包时,将源地址替换为互联网地址。
#iptables -t nat -L -n 查看nat表内容