[绝对原创] shorewall 企业防火墙的完美实现

由 xjdong 在 12-12-2003 12:04 发表:

[绝对原创] shorewall 企业防火墙的完美实现

> > 源码: >
> * * * >
>
> > > =================== 这篇文章绝对原创,作者:xjdong (Andy_xjdong ) ===============
> > > =================== 如需转载,请注明出自 LinuxSir.org ===============
> > >
>
> * * *

相信大家一定很想自己做一个企业级应用得防火墙,看到大家在论坛上常常问到类似得问题,现在我将我自己身边得一个防火墙企业级应用实例共享出来,希望能帮到需要帮助得朋友。

** 第一篇:网络接入情况 **

现在很多企业有的是用专线接入,有的是用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 ,这样管理有很多弊端。

好了,说了这么多,下面引入正题,就是分享一下我得防火墙得实际解决方案。(续看第二篇)


===========

§ 交流才会有进步 §

§ 让我们多多交流 §

§ 让我们快快进步 §

===========

http;//www.cg518.com

培训人生网,中国最多最全的培训教材直销网站,提供专业的企业内


由 xjdong 在 12-12-2003 12:05 发表:


** 第二篇:网络结构得设计 **

对于一个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

好了,网络设计好了,下面我就以 方案一 我来讲如何配置防火墙 (续看第三篇)


===========

§ 交流才会有进步 §

§ 让我们多多交流 §

§ 让我们快快进步 §

===========

http;//www.cg518.com

培训人生网,中国最多最全的培训教材直销网站,提供专业的企业内


由 xjdong 在 12-12-2003 12:06 发表:


** 第三篇 防火墙得实现 **

我选用的平台是:

Redhat 8.0 + Shorewall 1.4.8 (其实就是基于iptables), 有三块网卡,以方案一为例。

可能很多朋友都不太清楚 shorewall ( http://www.shorewall.net ),我先介绍一下 shorewall ,其实他是一个基于 iptables 得一个防火墙,他得优点在于配置方便,便于管理,用它很容易就能配出一个企业级得防火墙策略。

这里我说一下我个人观点,iptables 得命令过于复杂和麻烦,在管理方面和可读性方面比较差,我个人认为我们作为一个网管得精力应该放在如何设计防火墙策略,而不要陷身于一个命令得写法上。好了,废话不说了。

安装好 Redhat 8.0 ,并装好三块网卡后,

http://slovakia.shorewall.net/pub/s....8-1.noarch.rpm 下载 shorewall 的rpm 包(或者 tar 包都可以)

一:安装

rpm -ivh shorewall-1.4.8-1.noarch.rpm

二:配置

shorewall 得所有配置文件都在 /etc/shorewall 下面,好了我将详细得讲解如何配置 shorewall

这里我们假设 DMZ区域有如下一些的服务器:

> > 源码: >
> * * * >
>
> > > 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 可以看到有很多配置文件:

(我只讲我们要用到的配置文件,其它得很少用到,大家可以自己去看帮助,很好理解得)

zones (定义防火墙得区域)

interfaces (定义接口)

masq (定义伪装IP)

policy (定义默认策略)

rules (定义防火墙规则)

下面是各个配置文件的内容

> > 源码: >
> * * * >
>
> > > 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
> > >
> > > ================================================
> > >
>
> * * *

好了,防火墙都配置好了,现在防火墙的结果如下:

> > 源码: >
> * * * >
>
> > > 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 访问互联网
> > >
> > > Firewall 可以任意访问所有区域,包括互联网
> > > Lan A 可以任意访问互联网
> > > DMZ 服务器可以任意访问互联网
> > > Lan A 可以任意访问和管理DMZ服务器区
> > > 互联网不能随意访问内部网络和DMZ
> > >
>
> * * *

好了,到这所有配置文件都已经配好了,然后删除 /etc/shorewall/startup_disable 文件,

用 shorewall restart 就可以启动防火墙了。

总结:

相信到现在,大家对 shorewall 的配置文档有了一定的了解了,大家可以看出shorewall 的配置是很通俗易懂的,很容易的就可以配置好,希望我写的这个文章能给大家一点帮助。

唉!!!! 写了将近两个小时,好累啊!

===================================== 完 ====================================


===========

§ 交流才会有进步 §

§ 让我们多多交流 §

§ 让我们快快进步 §

===========

http;//www.cg518.com

培训人生网,中国最多最全的培训教材直销网站,提供专业的企业内


由 北南南北 在 12-12-2003 12:45 发表:


兄弟辛苦了

台兄的大作,我已经拜读过了,水平高,而且行文也很严谨。新手也能看得懂。

向台兄致意 。

我已经把文章提交入库,但vbb中能实现图文保持原样,在postnuke中,就做不到这点。

  1<code>控制无效,有点想不明白。   
  2  
  3  
  4  
  5http://www.linuxsir.org/postnuke/mo...r=0&amp;thold=0 
  6
  7__________________   
  8  
  9===========================   
 10  
 11请弟兄们发帖时要写个好标题,多谢!   
 12  
 13===========================   
 14  
 15每天以1000KM/H的速度在跑,感觉还是时间不够:(   
 16  
 17“西学东渐,洋为中用” + 创造 = ?   
 18  
 19linux ppc 
 20
 21  
 22
 23
 24* * *
 25
 26  
 27_由 xjdong 在 12-12-2003 13:00 发表:_   
 28  
 29
 30
 31****
 32
 33  
 34  
 35
 36
 37&gt; quote: 
 38&gt; 
 39&gt; * * *
 40&gt; 
 41&gt; _最初由 北南南北 发表_   
 42&gt;    
 43&gt;  **兄弟辛苦了![](http://linuxsir.zahui.net/html/11/http_3A/linuxsir.zahui.net/html/11/images/smilies/smile.gif)   
 44&gt;    
 45&gt;    
 46&gt;    
 47&gt;  台兄的大作,我已经拜读过了,水平高,而且行文也很严谨。新手也能看得懂。   
 48&gt;    
 49&gt;    
 50&gt;    
 51&gt;    
 52&gt;    
 53&gt;  向台兄致意 。   
 54&gt;    
 55&gt;    
 56&gt;    
 57&gt;  我已经把文章提交入库,但vbb中能实现图文保持原样,在postnuke中,就做不到这点。<code>控制无效,有点想不明白。   
 58&gt;    
 59&gt;    
 60&gt;    
 61&gt;  http://www.linuxsir.org/postnuke/mo...r=0&amp;thold=0 **
 62&gt; 
 63&gt; * * *
 64
 65  
 66  
 67  
 68  
 69呵呵,是啊,我也是第一次发这么长的帖子,平时都没空,今天难的有空所以就写了一篇,我真心的希望这个论坛办的越来越好。这个Linux 论坛是我最常来的。 一开始我也不知道如何保存图文原样,后来不知道怎么就好了,后来看到多了个 code 代码,后来我就修改了。如果没有图的话新手看起来就没有这么直观了。   
 70  
 71  
 72  
 73希望大家多多交流,这样大家才会进步。 呵呵 ![](http://linuxsir.zahui.net/html/11/images/smilies/tongue.gif)
 74
 75__________________   
 76  
 77===========   
 78  
 79§ 交流才会有进步 §   
 80  
 81§ 让我们多多交流 §   
 82  
 83§ 让我们快快进步 §   
 84  
 85===========   
 86  
 87http;//www.cg518.com   
 88  
 89培训人生网,中国最多最全的培训教材直销网站,提供专业的企业内 
 90
 91  
 92
 93
 94* * *
 95
 96  
 97_由 feelfirst 在 12-12-2003 21:09 发表:_   
 98  
 99
100
101****
102
103  
104  
105
106
107强.....   
108  
109学习中.... 
110
111__________________   
112  
113昨夜西风凋碧树,独上高楼,望尽天涯路。   
114  
115衣带渐宽终不悔,为伊消得人憔悴。   
116  
117众里寻他千百度,蓦然回首,那人却在灯火阑珊处。 
118
119  
120
121
122* * *
123
124  
125_由 yzyangfs 在 12-13-2003 16:48 发表:_   
126  
127
128
129**请教~~~~~**
130
131  
132  
133
134
135关于   
136  
137cat /etc/shorewall/masq   
138  
139================================================   
140  
141eth0 192.168.1.2/32 211.111.111.1 #----- Firwall To Internet   
142  
143eth0 10.1.1.1/24 211.111.111.1 #----- Lan A To Internet   
144  
145eth0 10.1.2.2/24 211.111.111.2 #----- mail server To Internet   
146  
147eth0 10.1.2.3/24 211.111.111.3 #----- pptp server To Internet   
148  
149eth0 10.1.2.4/24 211.111.111.4 #----- dns server To Internet   
150  
151eth0 10.1.2.5/24 211.111.111.5 #----- http server To Internet   
152  
153================================================   
154  
155  
156  
157这一段能不能改成:   
158  
159cat /etc/shorewall/masq   
160  
161================================================   
162  
163  
164  
165eth0 10.1.1.0/24 211.111.111.1 #----- Lan A To Internet   
166  
167eth0 10.1.2.2/24 211.111.111.2 #----- mail server To Internet   
168  
169eth0 10.1.2.3/24 211.111.111.3 #----- pptp server To Internet   
170  
171eth0 10.1.2.4/24 211.111.111.4 #----- dns server To Internet   
172  
173eth0 10.1.2.5/24 211.111.111.5 #----- http server To Internet   
174  
175================================================   
176  
177因为上面有ip的部分是网段,而且关于eth0接口的地址   
178  
179必须要注明吗??? 
180
181  
182
183
184* * *
185
186  
187_由 大熊宝宝 在 12-13-2003 17:05 发表:_   
188  
189
190
191****
192
193  
194  
195
196
197兄弟文章写的很好 惭愧啊 刚刚看见 
198
199__________________   
200  
201请兄弟们正确发贴,把问题发到相关版块 发贴标题请简明扼要 谢谢大家配合.   
202  
203新会员发贴前请学会搜索论坛 有可能你的问题已经有答案了 
204
205  
206
207
208* * *
209
210  
211_由 xjdong 在 12-14-2003 09:47 发表:_   
212  
213
214
215**回复: 请教~~~~~**
216
217  
218  
219
220
221&gt; quote: 
222&gt; 
223&gt; * * *
224&gt; 
225&gt; _最初由 yzyangfs 发表_   
226&gt;    
227&gt;  **关于  
228&gt;    
229&gt;  cat /etc/shorewall/masq   
230&gt;    
231&gt;  ================================================   
232&gt;    
233&gt;  eth0 192.168.1.2/32 211.111.111.1 #----- Firwall To Internet   
234&gt;    
235&gt;  eth0 10.1.1.1/24 211.111.111.1 #----- Lan A To Internet   
236&gt;    
237&gt;  eth0 10.1.2.2/24 211.111.111.2 #----- mail server To Internet   
238&gt;    
239&gt;  eth0 10.1.2.3/24 211.111.111.3 #----- pptp server To Internet   
240&gt;    
241&gt;  eth0 10.1.2.4/24 211.111.111.4 #----- dns server To Internet   
242&gt;    
243&gt;  eth0 10.1.2.5/24 211.111.111.5 #----- http server To Internet   
244&gt;    
245&gt;  ================================================   
246&gt;    
247&gt;    
248&gt;    
249&gt;  这一段能不能改成:   
250&gt;    
251&gt;  cat /etc/shorewall/masq   
252&gt;    
253&gt;  ================================================   
254&gt;    
255&gt;    
256&gt;    
257&gt;  eth0 10.1.1.0/24 211.111.111.1 #----- Lan A To Internet   
258&gt;    
259&gt;  eth0 10.1.2.2/24 211.111.111.2 #----- mail server To Internet   
260&gt;    
261&gt;  eth0 10.1.2.3/24 211.111.111.3 #----- pptp server To Internet   
262&gt;    
263&gt;  eth0 10.1.2.4/24 211.111.111.4 #----- dns server To Internet   
264&gt;    
265&gt;  eth0 10.1.2.5/24 211.111.111.5 #----- http server To Internet   
266&gt;    
267&gt;  ================================================   
268&gt;    
269&gt;  因为上面有ip的部分是网段,而且关于eth0接口的地址   
270&gt;    
271&gt;  必须要注明吗??? **
272&gt; 
273&gt; * * *
274
275  
276  
277  
278  
279对的兄弟,你第一行是对的,是我写错了:   
280  
281  
282  
2831: masq 是顺序执行的,你第一行写对了,就是   
284  
285eth0 10.1.1.0/24 211.111.111.1 ,意思就是说所有 10.1.1.0/24 的网段从 eth0 接口出去的数据包都伪装成 211.111.111.1   
286  
287  
288  
2892:但是eth0 192.168.1.2/32 211.111.111.1 #----- Firwall To Internet   
290  
291这一行一定要加上,不然 Firewall 自己就不能上互联网了。   
292  
293  
294  
2953:你第二行开始都写错了, 全部都应该是/32的掩码,因为 10.1.2.2/24 不是一个网络地址,所以必须用 10.1.2.2/32 来表示一个主机地址,后面的几行也都应该是 /32的掩码。   
296  
297  
298  
2994:eth0 的出口伪装地址必须要写,你看拓扑结构就知道了,因为 eth0 是没有绑定任何一个公网地址的,他绑定的是私网地址,但他这个eth0的私网IP能够获得一个 C 类的公网地址路由,所以你必须指定你的出口伪装IP,当然,如果你在 eth0 已经绑定了公网IP的话,就不必指定了。 # 号后面的都可以不用写,不过写了就容易看懂一些。 
300
301__________________   
302  
303===========   
304  
305§ 交流才会有进步 §   
306  
307§ 让我们多多交流 §   
308  
309§ 让我们快快进步 §   
310  
311===========   
312  
313http;//www.cg518.com   
314  
315培训人生网,中国最多最全的培训教材直销网站,提供专业的企业内 
316
317  
318
319
320* * *
321
322  
323_由 xjdong 在 12-14-2003 10:06 发表:_   
324  
325
326
327**重要更正!!!**</code></code>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus