一个好老好老的老程序员了。
全部博文(915)
分类: LINUX
2009-05-11 20:17:00
随着Internet的飞速发展,安全问题越来越重要。利用Linux构建企业网深受中小企业的青睐,而利用Linux构建企业网的防火墙系统也成为众多中小企业的理想选择。 Linux 内核从1.1版本开始,就已经具备包过滤功能。在2.0内核中,开始采用Ipfwadm来操作内核的包过滤规则。到2.2版本时,Linux内核采用了 Ipchains来控制内核的包过滤规则。发展到2.4.x时,Ipchains被一个全新的包过滤管理工具Iptables所替代。新发布的2.6版内核也在安全方面进行了改进。因此,无论拥有哪个版本的Linux内核,无论选择哪个版本的Linux来构建自己的企业网,都可以利用现有的系统构建出一个理想实用的防火墙。 防火墙系统可分为包过滤型、应用级网关(也叫代理服务器型防火墙)和电路级网关三种基本类型。
Linux提供的防火墙软件包内置于Linux内核中,是一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底的过滤则是检查包中的源端口、目的端口以及连接状态等信息。 Netfilter是Linux核心中一个通用架构,用于扩展各种服务的结构化底层服务。它提供一系列的表(tables),每个表由若干链(chains)组成,而每条链中可以由一条或数条规则(rule)组成。它可以和其它模块(如iptables模块和nat模块)结合起来实现包过滤功能。Iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是Netfilter 。
硬件平台:
① R.H linux9.0系统pc一台(FireWall)三个8139 TP-LINK 网卡
Eth0(IP:218.197.93.115)
Eth1(IP:192.168.1.1)
Eth2(IP:192.168.2.1)
② R.H linux9.0系统pc一台B(SERVER)一个8139 TP-LINK 网卡
C(IP:192.168.1.2)
③ 笔记本A一台双系统(windows Xp和R.H linux9.0)一个8139网卡,Cute-ftp软件一套
A(IP:192.168.2.2)
④windows Xp系统pc一台一个8139网卡,Cute-ftp软件一套
B(IP:218.197.93.161)
⑤RJ45交叉线若干
实验目的:
一> 实现FireWall的NAT功能让A能访问WAN(218.197.93.254)
二>在SERVER上开启ftp,web服务(简单的)使得A,B正常访问C
三>开启防火墙
1. 内网可以访问外网
内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。
2. 内网可以访问DMZ
此策略是为了方便内网用户使用和管理DMZ中的服务器。
3. 外网不能访问内网
很显然,内网中存放的是内部数据,这些数据不允许外网的用户进行访问。
4.外网可以访问DMZ
DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
5.DMZ不能访问内网
很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
6.DMZ不能访问外网
DMZ中的服务器专门用于给外界提供服务的,所以外网必须可以访问DMZ,而DMZ中的服务器则不允许主动访问外网。
实验步骤:
一>实现路由功能:
首先来配置eth0。给这个网络接口分配地址218.197.93.115,运行下列命令:
# ifconfig eth0 218.197.93.115 netmask 255.255.255.0
为了使这个地址不再计算机重新启动后消失,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,
DEVICE = eth0
ONBOOT = yes
BROADCAST = 218.197.93.255
NETWORK = 218.197.93.0
NETMASK = 255.255.255.0
IPADDR = 218.197.93.115
增加一条静态路由:
# route add -net 218.197.93.0 netmask 255.255.255.0
接下来,配置eth1,eth1与192.168.1.0网段相连,分配给它的地址是192.168.1.1,使用ifconfig命令为它配置参数:
# ifconfig eth1 192.168.1.1 netmask 255.255.255.0
编辑/etc/sysconfig/network-scripts/ifcfg-eth1文件,
DEVICE = eth1
ONBOOT = yes
BROADCAST = 192.168.1.255
NETWORK = 192.168.1.0
NETMASK = 255.255.255.0
IPADDR = 192.168.1.1
增加一条静态路由:
# route add -net192.168.1.0 netmask 255.255.255.0
最后配置eth2,它连接192.168.2.0网段,分配的IP地址是192.168.2.1,执行下列命令:
# ifconfig eth2 192.168.2.1 netmask 255.255.255.0
- 5 -
编辑/etc/sysconfig/network-scripts/ifcfg-eth2文件
DEVICE = eth2
ONBOOT = yes
BROADCAST = 192.168.2.255
NETWORK = 192.168.2.0
NETMASK = 255.255.255.0
IPADDR = 192.168.2.1
增加一条静态路由:
# route add -net 192.168.2.0 netmask 255.255.255.0
这样网络中就有三条静态路由记录了:
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
218,197.93.115 *255.255.255.0U 0 0 0 eth0
192.168.1.0*255.255.255.0U 0 0 0 eth1
192.168.2.0*255.255.255.0U 0 0 0 eth2
还要为系统增加一条缺省路由,因为缺省的路由是把所有的数据包都发往它的上一级网关,因此增加如下的缺省路由记录:
# route add default gw 218.197.93.254
这样系统的静态路由表建立完成,它的内容是
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
218,197.93.115 *255.255.255.0U 0 0 0 eth0
192.168.1.0*255.255.255.0U 0 0 0 eth1
192.168.2.0*255.255.255.0U 0 0 0 eth2
default218.197.93.254 0.0.0.0 UG 0 0 0 eth0
二>在C上开启www,ftp服务:
#service httpd start
#service vsftpd start
三>在防火墙上初始化设置
◆防火墙上初始化
#service iptables stop
#iptables -F
#iptables -t nat -F
#iptables -X
#iptables -t nat -X
#iptables -Z
#iptables -t nat -Z
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP
#iptables -t nat -P POSTROUTING DROP
#service iptables start
◆最后一步,要增加系统的IP转发功能,执行如下命令打开ip转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
四>在防火墙上实现端口地址映射:
◆允许A机器访问WAN
iptables -A FORWARD -s 192.168.2.0/24 -i eth2 -j ACCEPT
◆A往C的包都允许
iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.1.0/24 -i eth2 -j ACCEPT
◆WAN往A的包都不允许
iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.2.0/24 -i eth0 -j DROP
◆允许WAN向内部发送已建立连接的包和相关连接的包。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 218.197.93.115
◆允许WAN发往www,ftp服务器的包并把对网关的www,ftp请求转发到内部的www,ftp服务器上。
#iptables -t nat -A PREROUTING -p tcp --dport 80 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2
#iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 80 -j ACCEPT
#iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 80 ! --syn -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp --dport 20,21 -d 218.197.93.115 -s 0.0.0.0/0 -i eth0 -j DNAT --to 192.168.1.2
#iptables -A FORWARD -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -i eth0 --dport 20,21 -j ACCEPT
#iptables -A FORWARD -p tcp -d 0.0.0.0/0 -s 192.168.1.2 -i eth1 --sport 20,21 ! --syn -j ACCEPT
#iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 192.168.1.0/24 -i eth0 -j DROP
C不能访问A,B
iptables -A FORWARD -s 192.168.1.0/24 –d 0.0.0.0/0 -i eth1 -j DROP