如何用老式奔腾机和Linux构建防火墙(组图)(2)
时间:2018-05-08 20:49 来源:网络整理 作者:墨客科技 点击:次
首先要做的事情是确认您的机器上是否已经安装了防火墙。请查看 /etc/rc.d/init.d目录下有没有类似于packetfilter、ipchains、pifwadm、firewall 或proxy等名字的"开始/关闭"脚本。如果存在这样的文件,并且有来自 /etc/rc.d/rc2.d 或/etc/rc.d/rc3.d的符号连接,那么该机器上很可能已安装了防火墙,也许它还正运行在没有任何具体防火墙策略的环境下呢。要验证这一点,可以敲入如下命令: # cat /proc/sys/net/ipv4/ip_forward 如果找不到这个文件,说明防火墙尚未安装。如果返回值为0,则意味着防火墙已经安装但没有运行;返回值为1表示正在运行。 您也可以下载 ipchains 的源码 来自己编译。这么的时候,要运行校验和程序来确认这份源码是可靠的。(通常采用md5sum命令)。ipchains 网站上列出了校验和的有效值,您校验的结果应该和它们完全匹配。当前的 ipchains版本是1.3.9。 如果这些值全部无法匹配,就得查查编译内核时是否把Masquerading打开了。缺省情况下,这些选项在编译内核时是打开的。但如果您决定自己来编译 Linux 2.2.x版本的内核,就必须对如下选项说YES : CONFIG_EXPERIMENTAL CONFIG_MODULES CONFIG_NET CONFIG_FIREWALL CONFIG_INET CONFIG_IP_FORWARD CONFIG_IP_MASQUERADE CONFIG_IP_MASQUERADE_IPPORTFW CONFIG_IP_MASQUERADE_IPAUTOFW CONFIG_IP_MASQUERADE_ICMP CONFIG_IP_ALWAYS_DEFRAG CONFIG_DUMMY CONFIG_IP_MASQUERADE_MFW 内核编译完毕,就要把防火墙安装为系统服务的一项。这样系统初始化时就会启动它。系统服务是系统启动过程中由系统初始进程执行的,不同的系统服务有不同的初始化优先级别。级别0表示系统完全卸载可以关断电源;级别 1 则表示没有网络支持的单用户模式;级别 2 和3一般用作网络支持的多用户模式,也就是多数机器的运行模式。还有一些其他的级别,但都不常用。 为了创建防火墙服务的开始脚本并安装在级别 2 和 3 下,首先要如下所示创建ipchains的系统"开始/关闭"脚本文件,并把它保存在 /etc/rc.d/init.d 或/etc/init.d/目录下(保存在哪个目录据所使用 Linux 版本而定)。 #!/bin/sh # Firewalling with ipchains, startup/shutdown t PATH=/sbin:/bin:/usr/sbin:/usr/bin [ -f /etc/packetfiler.rules ] exit 0 case "$1" in start) echo -n "Starting ipchains firewall:" /sbin/depmod -a # Comment the following line if you do not intend to support # using FTP through the firewall /sbin/modprobe ip_masq_ftp # Insert lines to support other application protocols here /sbin/ipchains-restore < /etc/firewall.rules exit 1 echo "1" > /proc/sys/net/ipv4/ip_forward # If you do NOT use PPP, SLIP or DHCP for any of your network # interfaces on this machine, comment the following line echo "1" > /proc/sys/net/ipv4/ip_dynaddr echo "." ;; stop) echo -n "Shutting down ipchains firewall:" echo "0" > /proc/sys/net/ipv4/ip_forward # Comment the following line if you do NOT use PPP, SLIPorDHCP echo "0" > /proc/sys/net/ipv4/ip_dynaddr /sbin/ipchains -X /sbin/ipchains -F /sbin/ipchains -P input ACCEPT /sbin/ipchains -P output ACCEPT /sbin/ipchains -P forward ACCEPT echo "." ;; *) echo "Usage: /etc/rc.d/init.d/packetfilter startstop" exit 1 ;; esac exit 0 在要从不同级别执行包过滤服务之前,您得建立符号链接。网络已经启动的情况下,首先确认包过滤器已运行在初始级别2和3下。 # ln -s/etc/rc.d/init.d/packetfilter/etc/rc.d/rc2.d/S09packetfilter # ln -s/etc/rc.d/init.d/packetfilter/etc/rc.d/rc3.d/S09packetfilter 以上两条命令建立了符号链接,从而保证在 Red Hat Linux的网络有效前启动包过滤器。某种网络服务的名称应该类似于SXXnetwork,其中的"XX"指定了该服务的启动次序。请选择一个其他启动脚本内未指定的,比所有网络服务启动次序号都低的"XX"。上面的例子中,网络启动脚本命名为"S10network"。 类似的,在网络服务关闭后也应该停止包过滤器的符号连接。该例子中,网络接口关闭位于脚本K90network,因此包过滤器脚本链接为K91packetfilter。 # ln -s/etc/rc.d/init.d/packetfilter/etc/rc.d/rc0.d/K91packetfilter # ln -s/etc/rc.d/init.d/packetfilter/etc/rc.d/rc1.d/K91packetfilter 最后,在 Red Hat 系统中,您务必确保文件 /etc/sysconfig/network 中含有下列条目: FORWARD_IPV4="yes" 一旦重新启动机器,包过滤器就启动了。到目前为止,您还没有制定任何过滤规则。下面我们将继续这个规则设置步骤。 配置防火墙 (责任编辑:admin) |