IT源码网

用iptables构建简单DMZ防火墙讲解

xmjava 2021年05月16日 程序员 200 0

说明:一般被保护的内部网络可分成两部分,一部分是内部通讯区,只允许内部用户访问,绝对禁止外部用户访问,另一部分是停火区DMZ,对外提供有条件的服务。前者是系统的核心子网,后者易受到外部的攻击,是一个比较危险的子网环境。一方面要求严格保护内部子网,另一方面又要满足DMZ对外提供服务的需要,因此,必须采用分别保护的策略,对上述两个区域进行保护。两个区域要尽量独立,即使DMZ受到外部攻击,内部子网仍处于防火墙的保护之下。
步骤1:环境构造
充当防火墙的机器是一台支持iptables的Linux系统,实验使用Centos6.5-i386装有三块网卡。
这里写图片描述
一台有三块网卡的Linux系统主机称为NAT:(作为网络防火墙)
eth0 : inet addr:10.33.1.142 (连接外网)
eth1: inet addr:192.168.5.125(连接内网的DMZ区)
eth2: inet addr:172.16.10.7 (连接内网的终端)
这里写图片描述
根据实验拓扑图设置网络,使得主机NAT中eth0连上外网
这里写图片描述
内网中设定DMZ服务器的网络参数,将网关指向NAT主机的eth1
这里写图片描述
这里写图片描述
这里写图片描述
内网一台测试主机,网关指向NAT主机的eth2
这里写图片描述
步骤2:首先激活路由的转发功能
这里写图片描述
设定iptables规则,写在shell脚本中并保存执行
这里写图片描述
这里写图片描述
这里写图片描述
步骤3测试:(1)确保DMZ已经启动HTTP服务和FTP服务器:
这里写图片描述
同时确保NAT主机上没有提供httpd和vsftpd服务
这里写图片描述
(2)测试内网主机172.16.10.8能否连接外网:
这里写图片描述
(3)测试内网主机172.16.10.8能否访问DMZ区中192.168.5.131的Web服务器:
这里写图片描述
(4)验证内网主机172.16.10.8能访问DMZ中192.168.5.131的FTP服务器:
这里写图片描述
(5)验证外网不能访问内网
这里写图片描述
(6)验证外网能访问DMZ中的FTP服务器:
这里写图片描述
(7)验证外网能访问DMZ中的WEB服务器:
这里写图片描述
(8)验证DMZ不可访问外网且不可访问内网
这里写图片描述
这里写图片描述
附:iptables脚本

#!/bin/bash 
modprobe ip_nat_ftp

#把ip_nat_ftp模块载入内核,实现对nat,ftp的支持功能

modprobe ip_conntrack_ftp

#把ip_conntrack_ftp模块载入内核实现对ftp会话的跟踪

iptables -F 
iptables -F -t nat 
iptables -F -t mangle

#以上3条分别清空filter,nat和mangle3张表

iptables -P INPUT DROP 
iptables -P OUTPUT DROP

#设定INPUT,OUTPUT 链的默认策略为DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

#放行远程连接,这里为了方便使用X-shell远程连接,非必要策略

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT 
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 
iptables -A OUTPUT -p icmp  --icmp-type 0 -j ACCEPT

#放行ping请求,方便测试网络是否连通

iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o eht0 -j SNAT --to-source 10.33.1.142

#内网需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。做SNAT,当位于内网网段172.16.0.0/16的客户机访问外网时,将其地址转换为10.33.1.142

iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j DNAT --to-destination 192.168.5.131 
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 21 -j DNAT --to-destination 192.168.5.131

#内网可以访问DMZ ,此策略是为了方便内网用户使用和管理DMZ中的服务器。

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#开放DMZ中ftp服务数据连接的被动传输模式

iptables -A FORWARD -i eth0 -d 172.16.0.0/16 -p tcp --syn -j DROP

#阻止外网主机直接以内网IP网段作为目标地址访问内网,一是为了安全,二是为了体现本例的nat功能

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 192.168.5.131 
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.5.131

#外网可以访问DMZ ,DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外#网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -j DROP

#DMZ不能访问外网 此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作

iptables -A FORWARD -i eth1 -o eth2 -m state --state NEW -j DROP

#DMZ不能访问内网 ,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内#网的重要数据。


发布评论
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

DNS+LAMP+NFS实现负载均衡讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。