《第七章 代理 和防火墙实验.doc》由会员分享,可在线阅读,更多相关《第七章 代理 和防火墙实验.doc(6页珍藏版)》请在金锄头文库上搜索。
1、第七章 代理 和防火墙实验第七章 代理 和防火墙实验.txt爱情是艺术,结婚是技术,离婚是算术。这年头女孩们都在争做小“腰”精,谁还稀罕小“腹”婆呀?高职不如高薪,高薪不如高寿,高寿不如高兴。用iptables构建DMZ防火墙编辑:刘承麟-一般被保护的内部网络可分成两部分,一部分是内部通讯区,只允许内部用户访问,绝对禁止外部用户访问,另一部分是停火区DMZ,对外提供有条件的服务。前者是系统的核心子网,后者易受到外部的攻击,是一个比较危险的子网环境。一方面要求严格保护内部子网,另一方面又要满足DMZ对外提供服务的需要,因此,必须采用分别保护的策略,对上述两个区域进行保护。两个区域要尽量独立,即使
2、DMZ受到外部攻击,内部子网仍处于防火墙的保护之下。 本文介绍利用Linux的iptables工具来建立一个具有DMZ的防火墙。 一、软硬件要求 充当防火墙的机器是一台支持iptables的Linux系统,装有三个网卡。 二、具体配置 步骤1:配置内核 netfilter要求Linux内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目,这些项目通常都是位于“Networking options”子项下。 步骤2:环境构造 这里给出一个用于测试的例子,实际应用可根据具体的情况进行设置。 对外提供服务的内部主机构成一个停火区(假设分配的网段为192.168.1.0/2
3、4),防火墙的两个网卡eth1、eth2分别通过hub1、hub2与停火区、内部通讯区相连,另一个网卡eth0通过直连线(或hub)与路由器的网卡eth1相连,路由器的另一网卡eth0通过一个hub与外部通讯区相连。如图所示。 路由器增加以下设置: route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.9.200.2 arp -i eth1 -Ds 192.168.1.1 eth1 pub 防火墙的设置为: route add default gw 192.168.1.1 route add -host 192.168.1.1 gw 1
4、92.168.1.2 route add -net 192.169.1.0 netmask 255.255.255.0 gw 192.168.1.3 eth1 停火区主机的网关设为防火墙的网卡eth1地址192.168.1.3。 外部主机的网关设为路由器的外网卡eth0地址10.0.0.1。 内部主机的网关设为路由器的内网卡eth2地址168.1.1.1。 步骤3:建立规则 在防火墙上创建如下脚本并运行之。 #!/bin/sh # default firewall rules-deny all # iptables -P INPUT DROP iptables -P OUTPUT DROP i
5、ptables -P FORWARD DROP # # Rules between EXTERNAL LAN and INTERNAL LAN # # # masquerade INTERNAL Address to xx.xx.xx.xx when going out # iptables -t nat -A POSTROUTING -s 168.1.1.0/24 -d 10.0.0.0/24 -o eth0 -j SNAT -to xx.xx.xx.xx # deny all from EXTERNAL LAN to INTERNAL LAN directly # iptables -t
6、nat -A PREROUTING -s 10.0.0.0/24 -d 168.1.1.0/24 -i eth0 -j DROP # # Rules between DMZ and INTERNAL LAN # # # allow INTERNAL LAN to DMZ # iptables -A FORWARD -p icmp -s 168.1.1.0/24 -d 192.168.1.0/24 -m limit -limit 1/s -limit-burst 10 -j ACCEPT iptables -A FORWARD -s 168.1.1.0/24 -d 192.168.1.0/24
7、-i eth2 -j ACCEPT # forbid DMZ to INTERNAL LAN except following instance # iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 168.1.1.0/24 ! -syn -i eth1 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.0/24 -sport 20 -d 168.1.1.0/24 -i eth1 -j ACCEPT iptables -A FORWARD -p icmp -icmp-type 0 -s 192.16
8、8.1.0/24 -d 168.1.1.0/24 -m limit -limit 1/s -limit-burst 10 -j ACCEPT iptables -A FORWARD -p udp -s 192.168.1.0/24 -d 168.1.1.0/24 -sport 53 -j ACCEPT # # Rules between EXTERNAL LAN and DMZ # # # allow EXTERNAL LAN to DMZ but deny all from EXTERNAL LAN to DMZ directly # iptables -t nat -A PREROUTIN
9、G -s 10.0.0.0/24 -d 192.168.1.0/24 -i eth0 -j DROP # REAL_XX is real address of XX server in DMZ # # MASQ_XX is the masquaded address of REAL_XX supplied to EXTERNAL LAN # # allow DNS service # iptables -t nat -A PREROUTING -p udp -d MASQ_DNS -s 10.0.0.0/24 -dport 53 -i eth0 -j DNAT -to REAL_DNS ipt
10、ables -A FORWARD -p udp -s 10.0.0.0/24 -d REAL_DNS -i eth0 -dport 53 -j ACCEPT iptables -A FORWARD -p udp -d 10.0.0.0/24 -s REAL_DNS -i eth1-sport 53 -j ACCEPT iptables -t nat -A PREROUTING -p tcp -d MASQ_DNS -s 10.0.0.0/24 -dport 53 -i eth0 -j DNAT -to REAL_DNS iptables -A FORWARD -p tcp -s 10.0.0.
11、0/24 -d REAL_DNS -i eth0 -dport 53 -j ACCEPT iptables -A FORWARD -p tcp -d 10.0.0.0/24 -s REAL_DNS -i eth1 -sport 53 ! -syn -j ACCEPT # allow HTTP service # iptables -t nat -A PREROUTING -p tcp -dport 80 -d MASQ_HTTP -s 10.0.0.0/24 -i eth0 -j DNAT -to REAL_HTTP iptables -A FORWARD -p tcp -s 10.0.0.0
12、/24 -d REAL_HTTP -i eth0 -dport 80 -j ACCEPT iptables -A FORWARD -p tcp -d 10.0.0.0/24 -s REAL_HTTP -i eth1 -sport 80 ! -syn -j ACCEPT # allow FTP service # iptables -t nat -A PREROUTING -p tcp -dport 21 -d MASQ_FTP -s 10.0.0.0/24 -i eth0 -j DNAT -to REAL_FTP iptables -A FORWARD -p tcp -s 10.0.0.0/2
13、4 -d REAL_FTP -i eth0 -dport 21 -j ACCEPT iptables -A FORWARD -p tcp -s REAL_FTP -d 10.0.0.0/24 -i eth1-sport 20 -j ACCEPT iptables -A FORWARD -p tcp -d 10.0.0.0/24 -s REAL_FTP -i eth1-sport 21 ! -syn -j ACCEPT # You can add other services in DMZ here such as TELNET、SMTP、 POP3 & IMAP etc. # # deny DMZ to EXTERNAL LAN except to external smtp server # iptables -t nat -A POSTROUTING -p tcp -dport 25 -d 10.0.0.0/24 -s REAL_SMTP -o eth0 -j SNAT -to MASQ_SMTP iptables -A FORWARD -p tcp -s REAL_SMTP -d 10.0.0.0/24 -i eth1 -dport 25 -j ACCEPT iptables -A FORWARD -p tcp -d R