shorewall企业防火墙的完美实现

作者:xjdong

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

第一篇:网络接入情况

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

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

我选用的平台是:

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 的配置是很通俗易懂的,很容易的就可以配置好,希望我写的这个文章能给大家一点帮助。

版权声明:本文为F4ncy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/f4ncy/archive/2005/01/03/85752.html