基于Linux系统的包过滤防火墙(3)

豆豆网   技术应用频道   2006年04月03日  【字号: 收藏本文

本文详细介绍基于Linux系统的包过滤防火墙(3)

  第3章、包过滤防火墙配置举例

  3.1 建立包过滤防火墙

  3.1.1网络结构

  本节为一个的网络结构建立一个包过滤防火墙。

  这个网络结构假设内部网有有效的Internet地址。为了将内部网段198.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

  3.1.2 防火墙的建立过程

  本例主要是对内部的各种服务器提供保护。下面采用编辑并执行可执行脚本的方法建立此防火墙。具本过程如下:

  #!/sbin/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)WWW服务

  #服务端口为80,采用tcp或udp协议

  #规则为eth0=>;允许目的为内部网WWW服务器的包

  $IPT -A FORWARD -p tcp -d $WWW-SERVER-dport www -i eth0 -j ACCEPT

  #

  #(2)FTP服务

  #服务端口为21,数据端口20

  #FTP的传输模式有主动和被动之分,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协议

  #规则为etho=>;仅允许目的为E-mail服务器的smtp请求

  $IPT -A FORWARD -p tcp -d $EMAIL-SERVER-dport smtp -i eth0 -j ACCEPT

  #

  # 2.下面设置针对Internet客户的过滤规则

  #本例中防火墙位于网关的位置,所以主要是防止来自Internet的攻击

  #不能防止来自Intranet的攻击

  #假如网络中的服务器都是基于Linux的,也可以在每一部服务器上设置

  #相关的过滤规则来防止来自Internet的攻击

  #对于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 udp -d 198.168.80.0/24 -i eth0 -j ACCEPT

  #

  #3.然后接受来自整个Intranet的数据包过滤,我们定义如下规则

  $IPT -A FORWARD -s 198.168.80.0/24 -i eth1 -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包过滤

  #ipmp包通常用于网络测试等,故允许所有的icmp包通过

  #但是黑客常常采用icmp进行攻击,如ping of death等

  #所以我们采用limit匹配扩展加以限制

  $IPT -A FORWARD -p icmp -m limit-limit 1/s-limit-burst 10 -j ACCEPT

  #说明:对不管来自哪里的icmp包都进行限制,允许每秒通过一个包

  #该限制触发的条件是10个包

责编:豆豆技术应用

正在加载评论...