建立安全防火墙系统实例讲解(2) 首先,我们应该确定用户的需求,再根据需求进行实现。 经调研,用户需求如下: 1、保障内部网络安全,禁止外部用户连接到内部网络。 2、保护作为防火墙的主机安全,禁止外部用户使用防火墙的主机Telnet、FTP等项基本服务,同时要保证处于内部网络的管理员可以使用Telnet管理防火墙。 3、隐蔽内部网络结构,保证内部用户可以通过仅有的一个合法IP地址202.102.184.1连接Internet。同时要求许可内部用户使用包括E-Mail、WWW浏览、News、FTP等所有Internet上的服务。 4、要求对可以访问Internet的用户进行限制,仅允许特定用户的IP地址可以访问外部网络。 5、要求具备防止IP地址盗用功能,保证特权用户的IP不受侵害。 6、要求具备防IP地址欺骗能力。 其次,根据用户需求设计解决方案。 方案设计如下: 1、安装一台Linux服务器,配置双网卡,两端地址分别为192.168.233.1 /255.255.255.252(内部端口ETH 0)和202.102.184.1/255.255.255.248(外部端口ETH 1)。在IPChains中去除诸如 HTTPD、Finger、DNS、DHCP、NFS、SendMail之类所有不需要的服务,仅保留Telnet和FTP服务,以保证系统运行稳定,提高网络安全性。 2、启动IPChains后,为保证安全性,首先将Forward Chains的策略设置为DENY,禁止所有的未许可包转发,保障内部网安全性,以满足需求1。 eg:# ipchains-P forward DENY 3、为满足需求2,必须禁止所有来自外部网段对防火墙发起的低于1024端口号的连接请求。在此,我做了如下设定来阻止对ETH1端口请求连接小于1024端口号的TCP协议的数据报(请求连接数据报带有SYN标记,IPChains中使用参数-y表示) eg:#ipchains -A input -p tcp -d 202.102.184.1 0:1024 -y -i eth1 -j DENY 之所以不是简单的拒绝所有小于1024端口号的数据报在于,某些情况下服务器会回复一个小于1024接口的数据报。比如某些搜索引擎就可能在回复查询中使用一个不常用的小于1024的端口号。此外,当使用DNS查询域名时,如果服务器回复的数据超过512字节,客户机使用TCP连接从53端口获得数据。 4、为满足需求3,必须使用IP地址翻译功能。来自内部保留地址的用户数据包在经过防火墙时被重写,使包看起来象防火墙自身发出的。然后防火墙重写返回的包,使它们看起来象发往原来的申请者。采用这种方法,用户就可以透明地使用因特网上的各种服务,同时又不会泄露自身的网络情况。注意,对于FTP服务,需要加载FTP伪装模块。命令如下: eg: # insmod ip_masq_ftp 5、为满足需求4,可以在已经设置为DENY的Forward Chains中添加许可用户。因为许可这部分用户使用所有的服务,访问所有的地址,所以不用再指定目标地址和端口号。假定许可IP地址为192.168.1.22,配置命令如下: eg: #ipchains-A forward-s 192.168.1.22 -j MASQ 同时,必须启动系统的IP包转发功能。出于安全的考虑,建议在设置了Forward Chains的策略设置为DENY,禁止所有的未许可包转发后再开启转发功能。 配置命令如下: # echo 1 > /proc/sys/net/ipv4/ip_forward 6、关于防止IP地址盗用问题,在本网络拓扑中,可见所有用户都是通过两个路由器连接到防火墙,所以只需要在路由器中建立授权IP地址到MAC地址的静态映射表即可。如果有客户机直接连接到防火墙主机,就需要使用ARP命令在防火墙主机中建立IP地址到MAC地址的静态映射表。 7、对于需求6,只要在进入端口中设定IP地址确认,丢弃不可能来自端口的数据包就可以了。配置命令如下: