查看“ShoreWall企业级防火墙的实现”的源代码
来自Ubuntu中文
←
ShoreWall企业级防火墙的实现
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
<h2>原文说明</h2> <ul> <li> 引自www.linuxsir.org,感谢作者 </li> <li> 原文地址:http://www.linuxsir.org/bbs/showthread.php?t=78668 </li> <li> 针对debian/ubuntu进行局部修改 </li> </ul> <h2>前言</h2> 相信大家一定很想自己做一个企业级应用得防火墙,看到大家在论坛上常常问到类似得问题,现在我将我自己身边得一个防火墙企业级应用实例共享出 来,希望能帮到需要帮助得朋友。 <h2>网络接入情况</h2> 现在很多企业有的是用专线接入,有的是用ADSL 接入,但最终结果都是一样,就是在互联网上有一个公网IP(或者一个网段)得Route 到你得网关服务器上或者接入路由器上。 好了,知道了这点我就来说一下互联网得接入这一部分,我以专线接入为例子: 如图: 代码: Route A ( Internet or ISP ) /(192.168.5.2/255.255.255.252) / /\/ / / (IP:192.168.5.1/255.255.255.252) (Route B) | (IP 211.111.111.1/255.255.255.0) | |_____ (局域网) 当你是专线接入得时候,一般都会有一个专线接入单,上面会有如下相关信息: 1:你得IP地址范围 2:用户端接入IP,以及局端IP 从上图中我们可以看出: 1:ISP分配给你得是一个C类公网地址 2:用户端得接入IP 是 192.168.5.1,局端IP 是 192.168.5.2 好了,下面是我要重点说得了,很多人以为在一个防火墙得外网接口上一定得绑定公网IP,其实这是一个错误得认识,其实只要有 Route 信息,你就可以上互联网。怎么以上面得图为例子,在 ISP 商得路由器那头,就是绑定 192.168.5.2 那个路由器一定有一个 Route 信息是这样得: ip route 211.111.111.0/24 via 192.168.5.1 通常得做法就是像如图一样在Route B 得以太网口处帮定一个公网IP 211.111.111.1 ,然后大家以这个为网关上网,通常会先接入防火墙,然后后面接局域网用户,如图: 代码: Route A ( Internet or ISP ) /(192.168.5.2/255.255.255.252) / /\/ / / (IP:192.168.5.1/255.255.255.252) (Route B) | (IP 211.111.111.1/255.255.255.0) | | | (211.111.111.2/24) |----------| | Firewall | |----------| (10.1.2.0/24)/ \(10.1.1.0/24) / \ / \ / \ (局域网 A) ____/ \_____ (局域网 B) 这是一个很典型得企业应用,我想我说得没错吧,但是我觉得这里面有几个不好得地方: 1:就是公网IP不能很好得管理,在 Firewall 和 Route B 之间是通过公网IP 连接得,比如通过交换机连接,这样如果有人在交换机上接一个计算机自己随意绑定公网IP 就可以上网了。 2:这是一个C类得IP ,在Firewall 上需要绑定很多公网IP ,才能使用这些IP ,这样管理有很多弊端。 好了,说了这么多,下面引入正题,就是分享一下我得防火墙得实际解决方案。 <h2>网络结构得设计</h2> 对于一个C类得公网IP 我们可以重新设计一个网络拓扑: 方案一:就是不对C类网段分段,还是用一个网段,如图: 代码: Route A ( Internet or ISP ) /(192.168.5.2/255.255.255.252) / /\/ / / (IP:192.168.5.1/255.255.255.252) (Route B) | (IP 192.168.1.1/255.255.255.252) | | | (192.168.1.2/255.255.255.252) |----------| | Firewall | |----------| (10.1.1.1/24)/ \(10.1.2.1/24) / \ / \ / \ (局域网 A) ____/ \_____ (局域网 B DMZ 服务器区) 注意: 在 Route B 上需要添加一个静态路由, ip route 211.111.111.0 255.255.255.0 192.168.1.2 好了,这样 Firewall 就可以完全控制和分配这 254 个公网IP 了 方案二:就是对C类网段分段,分成两个公网IP网段,有两个防火墙如图: 代码: Route A ( Internet or ISP ) /(192.168.5.2/255.255.255.252) / /\/ / / (IP:192.168.5.1/255.255.255.252) |----------| | Route B | |----------| |(IP 192.168.1.1/255.255.255.248) | /------------\ (IP 192.168.1.2/255.255.255.248)/ \ (IP 192.168.1.3/255.255.255.248) |-----------| |-----------| | Firewall A| | Firewall B| |-----------| |-----------| / \ (局域网 A) ____/ \_____ (局域网 B) 在 Route B 上添加两条静态路由: ip route 211.111.111.0 255.255.255.128 192.168.1.2 ip route 211.111.111.128 255.255.255.128 192.168.1.3 这样一来,我们就将一个 C类得公网IP 拆分成了两个: Firewall A 得IP 范围是211.111.111.1-127 Firewall B 得IP 范围是211.111.111.129-254 好了,网络设计好了,下面我就以 方案一 我来讲如何配置防火墙 <h2>第三篇 防火墙得实现</h2> 我选用的平台是: Redhat 8.0 + Shorewall 1.4.8 (其实就是基于iptables), 有三块网卡,以方案一为例。 可能很多朋友都不太清楚 shorewall (http://www.shorewall.net),我先介绍一下 shorewall ,其实他是一个基于 iptables 得一个防火墙,他得优点在于配置方便,便于管理,用它很容易就能配出一个企业级得防火墙策略。 这里我说一下我个人观点,iptables 得命令过于复杂和麻烦,在管理方面和可读性方面比较差,我个人认为我们作为一个网管得精力应该放在如何设计防火墙策略,而不要陷身于一个命令得写法上。好了,废话不说了。 安装好 Redhat 8.0 ,并装好三块网卡后, 在http://slovakia.shorewall.net/pub/sh...8-1.noarch.rpm下载 shorewall 的rpm 包(或者 tar 包都可以) <h3>安装</h3> 执行下面的命令安装ShoreWall <pre>sudo apt-get install ShoreWall</pre> <h3>配置</h3> shorewall 得所有配置文件都在 /etc/shorewall 下面,好了我将详细得讲解如何配置 shorewall 这里我们假设 DMZ区域有如下一些的服务器: 代码: <pre> mail server: 10.1.2.2/24 公网地址:211.111.111.2 pptp vpn server: 10.1.2.3/24 公网地址:211.111.111.3 dns server: 10.1.2.4/24 公网地址:211.111.111.4 http server: 10.1.2.5/24 公网地址:211.111.111.5 在 /etc/shorewall 可以看到有很多配置文件: </pre> (我只讲我们要用到的配置文件,其它得很少用到,大家可以自己去看帮助,很好理解得) <pre> zones (定义防火墙得区域) interfaces (定义接口) masq (定义伪装IP) policy (定义默认策略) rules (定义防火墙规则) <pre> 下面是各个配置文件的内容 代码: <pre> cat /etc/shorewall/zones: ================================================ wan Internet Internet dmz DMZ Dmz lan Lan Lan ================================================ cat /etc/shorewall/interfaces ================================================ wan eth0 detect lan eth1 detect dmz eth2 detect ================================================ cat /etc/shorewall/masq ================================================ eth0 192.168.1.2/32 211.111.111.1 #----- Firwall To Internet eth0 10.1.1.0/24 211.111.111.1 #----- Lan A To Internet eth0 10.1.2.2/32 211.111.111.2 #----- mail server To Internet eth0 10.1.2.3/32 211.111.111.3 #----- pptp server To Internet eth0 10.1.2.4/32 211.111.111.4 #----- dns server To Internet eth0 10.1.2.5/32 211.111.111.5 #----- http server To Internet ================================================ cat /etc/shorewall/policy ================================================ fw all ACCEPT # Firewall 可以任意访问所有区域,包括互联网 lan wan ACCEPT # Lan A 可以任意访问互联网 dmz wan ACCEPT # DMZ 服务器可以任意访问互联网 lan dmz ACCEPT # Lan A 可以任意访问和管理DMZ服务器区 wan all DROP # 互联网不能随意访问内部网络和DMZ all all REJECT ================================================ cat /etc/shorewall/rules ================================================ #---------------------- Internet To mail Server ------------------------------- DNAT wan dmz:10.1.2.2 tcp smtp - 211.111.111.2 DNAT wan dmz:10.1.2.2 tcp POP3 - 211.111.111.2 #---------------------- Internet To PPTP Server ------------------------------- DNAT wan dmz:10.1.2.3 tcp 1723 - 211.111.111.3 DNAT wan dmz:10.1.2.3 47 - - 211.111.111.3 #---------------------- Internet To DNS Server ------------------------------- DNAT wan dmz:10.1.2.4 tcp 53 - 211.111.111.4 DNAT wan dmz:10.1.2.4 udp 53 - 211.111.111.4 #---------------------- Internet To http Server ------------------------------- DNAT wan dmz:10.1.2.5 tcp http - 211.111.111.5 ================================================ </pre> 好了,防火墙都配置好了,现在防火墙的结果如下: 代码: <pre> Lan A 的用户 10.1.1.0/24 的用户全部伪装成 211.111.111.1 去访问互联网 mail server: 10.1.2.2/32 以公网地址:211.111.111.2 访问互联网 pptp vpn server: 10.1.2.3/32 以公网地址:211.111.111.3 访问互联网 dns server: 10.1.2.4/32 以公网地址:211.111.111.4 访问互联网 http server: 10.1.2.5/32 以公网地址:211.111.111.5 访问互联网 </pre> Firewall 可以任意访问所有区域,包括互联网 Lan A 可以任意访问互联网 DMZ 服务器可以任意访问互联网 Lan A 可以任意访问和管理DMZ服务器区 互联网不能随意访问内部网络和DMZ 好了,到这所有配置文件都已经配好了,然后删除 /etc/shorewall/startup_disable 文件, 用 shorewall restart 就可以启动防火墙了。 <h2>总结</h2> 相信到现在,大家对 shorewall 的配置文档有了一定的了解了,大家可以看出shorewall 的配置是很通俗易懂的,很容易的就可以配置好,希望我写的这个文章能给大家一点帮助。 [[Category:服务器]]
返回
ShoreWall企业级防火墙的实现
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息