用Linux iptables做防火墙具有很高的灵活性和稳定性,但安装和设定起来比较麻烦,而且容易出错,本文旨在用为公司做防火墙的实例,让大家对Linux iptables做防火墙的安装和配置有一个大致的了解.
用/etc/rc.d/init.d/iptables save可在/etc/sysconfig/中产生一iptables文件,大家可以看到,它有三个*号开始的行,其每一个以*号开始的行对应一个table,以COMMIT表示此table 的结束。可将要定的规则加入到对应的table中,如下:
[root@jiaoyuang init.d]# ./iptables saveSaving current rules to /etc/sysconfig/iptables:
[ OK ][root@jiaoyuang init.d]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*mangle
:PREROUTING ACCEPT [61522:8074850]
:OUTPUT ACCEPT [1079:79301]
COMMIT
# Completed on Sat Sep 28 16:51:22 2002
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*nat
:PREROUTING ACCEPT [31850:5091703]
:POSTROUTING ACCEPT [20:1240]
:OUTPUT ACCEPT [12:776]
COMMIT
# Completed on Sat Sep 28 16:51:22 2002
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*filter
:INPUT ACCEPT [61444:8070296]
:FORWARD ACCEPT [34:1984]
:OUTPUT ACCEPT [1079:79301]
COMMIT
|
安装并启动IPTABLES在安装RedHat Linux V7.3后,iptables就已经被安装了,但默认启动的是ipchains。你在安装时所定义的一些规则也在/etc/sysconfig/ipchains中被定义。我们需要将其停止,才能启动iptables(注意:虽然不停止ipchains也可以启动iptables,但这时iptables并没有真正的起作用。Ipchains和iptables是两个防火墙,你只能选择一个)。
service ipchains stop (停止ipchains)
chkconfig ——level 2345 ipchains off (使ipchains系统启动时不自动启动)
chkconfig ——level 2345 iptables on (使iptables 在系统启动时自动启动)
vi /etc/rc.d/rc.local (编辑rc.local,将下面四行加到最后)
ifconfig eth0 add 218.4.62.18 netmask 255.255.255.248
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
echo “1” > /proc/sys/net/ipv4/ip_forward
|
(第一行是在eth0上再加一个IP:218.4.62.18,因在安装时只能设一个IP:218.4.62.14。Ip_conntrack_ftp 和ip_nat_ftp为iptables运得必须的两个模块;最后一行为使开启服务器IP转发功能。)
(如果你将iptables的模块加到了内核中,以上第二,三行可省略。)
配置DHCP Server,以便让公司PC自动获得IP和网关,网关为192.168.2.9。具体的方法请参见相关资料,本文不作详述。
reboot
重新启动服务器后,Iptables 就已经开始运行了。
配置IPTABLES对iptables 有了一个基本的了解后,我们就可以来配置我们的服务器了。首先要发布我们的WEB Server,将以下二行加入/etc/sysconfig/iptables中的nat table内:
-A PREROUTING -d 218.4.62.18 -j DNAT ——to-destination 192.168.20.254
-A POSTROUTING -s 192.168.2.254 -j SNAT ——to-source 218.4.62.18
|
第一行为将至服务器的所有目地地址为218.4.62.18的包都NAT为192.168.2.254,第二行为将至服务器的所有源地址为192.168.2.254的包为NAT到218.4.62.18。请把WEB Server 的网关设为192.168.20.9。
下面我们将所有从服务器共享出去的包都SNAT为218.4.62.14,就可完成共享上网的功能了:
-A POSTROUTING -s 192.168.0.0/16 -j SNAT ——to-source 218.4.62.14
|
将下面的规则加入到/etc/sysconfig/iptables中的filter tables内:
-A INPUT -p icmp -m icmp ——icmp-type 8 -m limit ——limit 6/min ——limit-burst 2 -j ACCEPT
-A INPUT -p icmp -m icmp ——icmp-type 8 -j REJECT ——reject-with icmp-port-unreachable
|
以上两行是为了防止Dos攻击做的一个简单的处理,大家对于各种攻击可做出相应的处理。
-A INPUT –i eth0 –m state –state ESTABLISHED,
RELATED –j ACCEPT-A INPUT –i eth0 –j DROP
|
以上两行是做了一个INPUT状态防火墙的处理,其主要作用为防止外部的连接和攻击,因其接受