linxu包过滤防火墙配置实例 (原创)

包过滤防火墙配置实例

1.网络结构

本节要为如图8-12所示的网络结构建立一个包过滤防火墙。

这个网络结构假设内部网有有效的Internet地址。为了将内部网段192.168.80.0/24与Internet隔离,在内部网络和Internet之间使用了包过滤防火墙。防火墙的内网接口是eth1(198.168.80.254),防火墙的Internet接口是eth0(198.199.37.254)。另外,内网中有3台服务器对外提供服务。

图8-12 包过滤防火墙结构图

WWW服务器:IP地址为198.168.80.251

FTP服务器:IP地址为198.168.80.252

E_mail服务器:IP地址为198.168.80.253

2.防火墙的建立过程

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

(1)在/etc/rc.d/目录下用touch命令建立空的脚本文件,执行chmod命令添加可执行权限。

# touch /etc/rc.d/filter-firewall

# chmod u+x /etc/rc.d/filter-firewall

(2)编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/filter-firewall 以确保开机时能自动执行该脚本。

# echo “/etc/rc.d/filter-firewall” >>/etc/rc.d/rc.local

(3)使用文本编辑器编辑/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 FORWORD –p tcp –d $WWW-SERVER –dport www –i eth0 –j ACCEPT

#

# (2)FTP服务

# 服务端口为:命令端口21,数据端口20

# FTP服务采用tcp协议

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

$IPT –A FORWORD –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 FORWORD –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 FORWORD –p tcp –s 0/0 –sport ftp-data –d $IP_RANGE –i eth0 –j ACCEPT

#

# (2)接受来自Internet的非连接请求tcp包

$IPT –A FORWORD –p tcp –d 198.168.80.0/24 ! –syn –i eth0 –j ACCEPT

#

# (3)接受所有udp包,主要是针对oicq等使用udp的服务

$IPT –A FORWORD –p utp –d 198.168.80.0/24 –i eth0 –j ACCEPT

#

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

$IPT –A FORWORD –s 198.168.80.0/24 –i eth0 –j ACCEPT

#

##########################################################################

# 处理IP碎片

# 接受所有的IP碎片,但采用limit匹配扩展对其单位时间可以通过的

# IP碎片数量进行限制,以防止IP碎片攻击

$IPT –A FORWORD –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 FORWORD –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.gomoth.com
  • 您可能感兴趣的相关文章