1.网络结构,这个网络假设内部网有有效的internet地址,为了将内部网段192.168.80.0/24和internet隔离,在内部网络和internet之间使用了包过滤防火墙。防火墙的内网接口是eth1(198.168.80.254),防火墙的internet接口是eth0(198.199.37.254).另外,内网中有3台服务器对外提供服务。
www服务器:ip地址是:198.168.80.251
ftp服务器:ip地址是:198.168.80.252
e_mail服务器:ip地址为:198.168.80.253
2.防火墙的建立过程:
本例主要是对内部的各种服务器提供保护.下面采用编辑并执行可执行脚本的方法建立此防火墙.具体过程如下:
①:在/etc/rc.d/目录下用touch命令建立空的脚本文档,执行chmod命令添加可执行的权限。
#touch /etc/rc.d/filter-firewall
#chmod u x /etc/rc.d/filter-firewall
②:编辑/etc/rc.d/rc.local文档,在末尾加上/etc/rc.d/filter-firewall以确保开机时能自动执行该脚本.
#echo "/etc/rc.d/filter-firewall" >>/etc/rc.d/rc.local
③:使用文本编辑器编辑/etc/rc.d/filter-firewall文档,插入如下内容:
#!/bin/bash
#在屏幕上显示信息
echo “starting iptables rules....”
#开启内核转发功能
echo “1”>/proc/sys/net/ipv4/ip_forward
********************************************
#定义变量
IPT=/sbin/iptables
WWW-SERVER=198.168.80.251
FTP-SERVER=198.168.80.252
EMAIL-SERVER=198.168.80.253
IP_RANGE="198.168.80.0/24"
********************************************
#刷新任何的链的规则
$IPT -F
********************************************
首先禁止转发任何包,然后在一步步配置允许通过的包,所以首先配置防火墙FORWARD链的策略DROP
$IPT -P FORWARD DROP
*******************************************
下面配置关于服务器的包过滤规则:
由于服务器/客户机交互是双向的,所以不但仅要配置数据包出去的规则,也还要配置数据包返回的规则.
1)下面建立针对来自internet数据包的过滤规则:
(1)WWW服务:
服务器端口:80采用tcp或utp协议
规则为:eth0=>允许目的为内网WWW服务器的包:
$IPT -A FORWARD -p tcp $FTP-erver -dport www -i eth0 -j ACCEPT
(2)FTP服务:
服务器端口:命令端为:21.数据端口为:20
FTP采用tcp协议.
规则为:eth0=>允许目的为内部FTP服务器的包.
$IPT -A FORWARD -p tcp -d $FTP-SERVER -dport ftp -i eth0 -j ACCEPT
(3)EMAIL服务器 :
包含两个协议,一个是smtp ,一个是pop3
处于安全性考虑,通常只提供对内pop3服务.
所以在这里我们只考虑针对smtp的安全性问题.
#smtp端口 25 采用tcp协议.
规则为:eth0=>允许目的为内部网E_mail服务器的smtp请求.
$IPT -A FORWARD -p tcp -d $EMAIL-SERVER -dport smtp -i eth0 -j ACCEPT
2)下面建立针对intranet客户的过滤规则:
本例中防火墙位于网关的位置,所以主要是防止来自internet的攻击不能防止来自intranet的攻击.
假如网络中的,服务器都是基于linux的,也能够在每一部服务器上配置,相关的过滤规则来防止来自intranet的攻击.
对于internet对intranet客户的返回包,定义如下规则:
(1)允许intranet客户采用被动模式访问internet的ftp服务器
$IPT -A FORWARD -p tcp -s 0/0 -sport ftp-data -d $IP_RANGE -i eth0 -j ACCEPT
(2)接受来自internet的非连接请求的tcp包.
$IPT -A FORWARD -p tcp -d 198.168.80.0/24 ! -syn -i eth0 -j ACCEPT
(3)接受任何udp包,主要针对oicq等使用udp的服务:
$IPT -A FORWARD -p utp -d 198.168.80.0/24 -i eth0 -j ACCEPT
3)然后接受来自整个intranet的数据包过滤定义规则如下:
$IPT -A FORWARD -s 198.168.80.0/24 -i eth0 -j ACCEPT
*********************************************************************************
处理ip碎片:接受任何的ip碎片,但采用limit匹配扩展对其单位时间能够通过的ip碎片数量进行限制,以防止ip碎片攻击.
$IPT -A FORWARD -f -m limit --limit 100/s --limit -burst 100 -j ACCEPT
说明:对不管来自哪里的ip碎片都进行限制,允许每秒通过100个ip碎片,该限制触发的条件是100个ip碎片.
**************************************************
配置icmp包过滤:
icmp包通常用于网络测试等,故允许任何的icmp包通过,但是黑客常常采用icmp进行攻击,如:ping of death等
所以我们采用limit匹配扩展加以限制:
$IPT -A FORWARD -p icmp -m limit --limit 1/s --limit -burst 100 -j ACCEPT
说明:对不管来自哪里的icmp包都进行限制,允许每秒通过一个包给限制触发的条件是10个包.
************************************************
4)执行脚本,使之立即生效.
#/etc/rc.d/filter-firewall
通过执行上面脚本,建立了一个相对完整的防火墙,该防火墙只对外开放了有限的几个端口,同时提供了客户对internet无缝访问,并且对ip碎片攻击和icmp的ping of death提供了有效的防护手段.
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




