很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
6.DMZ不能访问外网
此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。
DMZ的实现
根据以上访问控制策略可以设定Linux防火墙的过滤规则。下面将在一个虚构的网络环境中,探讨如何根据以上六条访问控制策略建立相应的防火墙过滤规则。这里的讨论和具体应用会有所区别,不过这种讨论将有助于实际应用。用户在实际应用时可根据具体的情况进行设置。该虚拟环境的网络拓扑如图1。

图1 DMZ网络拓扑图
如图1所示,路由器连接Internet和防火墙。作为防火墙的Linux服务器使用三块网卡:网卡eth0与路由器相连,网卡 eth1与DMZ区的Hub相连,网卡eth2与内网Hub相连。作为一个抽象的例子,我们用“[内网地址]”来代表“192.168.1.0/24”之类的具体数值。同理还有“[外网地址]”和“[DMZ地址]”。
对于防火墙,原则之一就是默认禁止所有数据通信,然后再打开必要的通信。所以在防火墙脚本的最初,需要清空系统原有的规则,然后将INPUT、OUTPUT、FORWARD的默认规则设置为丢弃所有数据包。
对应的防火墙脚本片段如下:
|
接下来,逐一解释六种策略的实现。
1.内网可以访问外网
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A POSTROUTING -s [内网地址] -d [外网地址] -o eth0 -j SNAT --to [NAT的真实IP]
当数据从连接外网的eth0流出时,要将来自内网的数据包的源地址改成Internet上的真实IP,这样才能和外网的主机进行通信。“[NAT的真实IP]”表示分配给NAT用户的真实IP,有几个就写几个,以空格分开,但至少要写一个。
2.内网可以访问DMZ
对应的防火墙脚本片段如下:
/sbin/iptables -A FORWARD -s [内网地址] -d [DMZ地址] -i eth2 -j ACCEPT
以上命令允许所有来自内网、目的地为DMZ的数据包通过。
3.外网不能访问内网
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A PREROUTING -s [外网地址] -d [内网地址] -i eth0 -j DROP
以上命令将来自外网、去往内网的数据包全部丢弃。
4.外网可以访问DMZ
为了保护DMZ中的服务器,外网对DMZ的访问也要加以限制。通常的思路是,只允许外网访问DMZ中服务器所提供的特定服务,比如HTTP。
对应的防火墙脚本片段如下:
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 80 -d [分配给HTTP服务器的Internet上的真实IP] -s [外网地址] -i eth0 -j DNAT --to [HTTP服务器的实际IP]
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 构建 防火墙 DMZ 外网 访问 地址 数据 网络 服务器 可以 |
注册
个人空间
