Linux代理服务器上设置防火墙

  一般而言,实现Linux的防火墙功能有两种策略。一种是首先全面禁止所有的输入、输出和转发数据包,然后根据用户的具体需要逐步打开各项服务功能。这种方式的特点是安全性很高,但必须全面考虑用户所需的各项服务功能,不能有任何遗漏,要求系统管理员清楚地知道实现某种服务和功能需要打开哪些服务和端口。第二种方式是首先默认打开所有的输入、输出数据包,然后禁止某些危险包、IP欺骗包、广播包、ICMP服务类型攻击等;对于应用层的服务,像http、sendmail、pop3、ftp等,可以有选择地启动或安装。这种方式虽然没有第一种方式安全,但比较容易配置,不需要过多地了解ipchains命令的细节就可以配置一个基本的防火墙系统。

  我所管理的代理服务器是IBM的Netfinity3000,安装了RedHat、squid-2.3,有两块网卡,外部网卡为eth0(211.98.126.180),内部网卡为eth1 (192.168.0.1),客户机的IP地址是192.168.0.xxx。按照第二种方法设置了一个防火墙,具体过程如下:

  安装完系统之后,以root的身份登录,在/etc/rc.d/目录下用vi创建一个脚本叫firewall.rules;创建完成后,执行命令chmod 755 firewall.rules,确保其为可执行文件;然后用vi打开/etc/rc.d/rc.local文件,加入一行/etc/rc.d/firewall.rules,确保机器每次启动即可执行所设定的各项防火墙规则。(firewall.rules文件的内容略)

  如果你的机器只有一块网卡,通过Modem拨号上网,那么连接内部网络的网卡应该是eth0,IP地址可能是192.168.0.1,外部接口就是ppp0,你只须将firewall.rules文件内容中的eth0改为ppp0即可。设置了以上防火墙规则之后,你可以在/etc/inetd.conf中禁止所有不需要的服务,只保留ftp和telnet;同时设置/etc/hosts.allow和/etc/hosts.deny,仅允许内部某些管理用户登录到该防火墙。以上方法在笔者所在的环境中成功运行,并解决了outlook express收发邮件的问题。