📄 firewall-howto.txt
字号:
版本为准)。系统中安装的软件越少,毛病和漏洞也越少,因为这些毛病和漏洞 对系统的安全都会产生问题,所以只要安装够用的最少量软件即可。 选用一个稳 定的内核。我的系统用了Linux 2.0.14的内核。 因此,这份文件以这种内核设置 为基础。 根据适当的选项(options)重新编辑内核。 如果以前没有读 过Kernel HOWTO、 Ethernet HOWTO和NET-2 HOWTO,此时不妨利用这个机会读一 读这些HOWTO。 以下是在‘make config’内与网路有关的设定。 1. 在General setup中 1. 设Networking Support 为ON 2. 在Networking Options中 1. 设Network firewalls为 ON 2. 设TCP/IP Networking为 ON 3. 设IP forwarding/gatewaying为 OFF (除非要用IP过滤) 4. 设IP Firewalling为ON 5. 设IP firewall packet loggin为 ON(不是必需,设了更好) 6. 设IP: masquerading 为OFF(不属本文范围) 7. 设IP: accounting 为ON 8. 设IP: tunneling 为OFF 9. 设IP: aliasing 为OFF 10. 设IP: PC/TCP compatibility mode 为OFF 11. 设 IP: Reverse ARP 为OFF 12. 设Drop source routed frames 为ON 3. 在Network device support项下 1. 设Network device support 为ON 2. 设Dummy net driver support 为ON 3. 设Ethernet (10 or 100Mbit) 为ON 4. 选择网路卡 现在重新编辑,重新安装内核,重新启动。网路卡应在启动的提示中显示。如果 没有抓到网路卡,查阅其他HOWTO,直到设对为止。 5.2 设定两张网路卡 电脑中如有两张网路卡,极可能需要在/etc/lilo.conf档中增加一行,说明两张 网路卡的IRQ和地址。在我的机器中,lilo.conf档增加的一行如下∶ append="ether=12,0x300,eth0 ether=15,0x340,eth1"5.3 设定Network Addresses 这部分比较有趣,而且得要做些决定。由于不打算让网际网路进入自设网路的任 何部分,因此网路中不需要用实际的网址。在网际网路中留了一些地址可让网路 随意使用,因为自设网路总得需要地址,而且这些地址也无法进入网际网路,搅 浑全局。因此不妨选用这些地址。 在这些地址中,192.168.2.xxx是被留用的地 址,因此就用这些地址来作说明。 由于代理伺服器同时身处两个网路,因此它能居中传送两边的数据。 199.1.2.10 __________ 192.168.2.1 _ __ _ \ | | / _______________ | \/ \/ | \| |/ | | 网际网路 \-------------| 防火墙 |-------------------| 工作站 | \_/\_/\_/\_/ |_________| |______________| 如要设置过滤防火墙,依旧可用这些网址,不过得使用IP masquerading。经过这 种设定,防火墙就会转送数据包,并加附实际的IP地址送往网际网路。 在网路卡 的网际网路端(外端)得设定真正的IP地址,在以太网卡的内端设 为192.168.2.1。这是这台电脑代理/网关的IP地址。受保护的网路内的所有其他 电脑均可选用192.168.2.xxx中的任何一个作为地址(从192.168.2.2 到192.168.2.254)。 在RedHat Linux 中,得在 /etc/sysconfig/network-scripts目录下增加一个ifcfg-eth1档,以便在启动时 ,通过这个档设定网路和routing表。 ifcfg-eth1的参数可设定如下∶ #!/bin/sh #>>>Device type: ethernet #>>>Variable declarations: DEVICE=eth1 IPADDR=192.168.2.1 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 GATEWAY=199.1.2.10 ONBOOT=yes #>>>End variable declarations 可试用这些参数使数据机与ISP自动连接。不妨看看 ipup-ppp档。 如用数据机与 网际网路连接,ISP会在连接时指定外端的IP地址。 5.4 测试网路 从测试ifconfig和route开始。如机器上有两张网路卡,各项设置应有如下情况∶ #ifconfig lo Link encap:Local Loopback inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:1620 errors:0 dropped:0 overruns:0 TX packets:1620 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55 inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:12 Base address:0x310 eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base address:0x350 route 表应看起来如下∶#route -nKernel routing tableDestination Gateway Genmask Flags MSS Window Use Iface199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1127.0.0.0 * 255.0.0.0 U 3584 0 2 lodefault 199.1.2.10 * UG 1500 0 72 eth0 注∶ 199.1.2.0在防火墙的网际网路端,192.168.2.0在自设网路一端。 首先试 试从防火墙ping 网际网路。不妨把nic.ddn.mil作试验点。这个试验点还不错, 只是不如我预期的可靠。如果没联上,试试ping几个不是你网路上的地址。如果 仍联不上,则PPP的设定一定不对。再读一次Net-2 HOWTO,然後再试。 然後,试 验从防火墙ping保护网路内的电脑。所有网路内的电脑应能ping网路内的任何其 他一台电脑。如果不行,再读读Net-2 HOWTO,再试一次。 接著试验从保护网路 内ping防火墙以外的地址。(注意∶不属于192.168.2.xxx的任何地址)如果可以 ,表示IP Forwarding的功能没有取消。想一想这是否符合原先的构想。如果保 留IP Forwarding的功能,就别放过下面设定IP filtering的部分。 现在试试从 防火墙後ping 网际网路。利用以前试通的同一地址(例如,nic.ddn.mil)。如 果 IP Forwarding功能已经取消,就不应接通。不过如果这项功能没有取消,就 应该接通。 假设保留了IP Forwarding功能,而在自设的网路中使用实际的IP地 址(不是192.168.2.*),在这种设定下,如果无法ping 网际网路,但能够ping 网际网路边的防火墙,就得检查上一层的router有否把数据包传送到自设网路的 地址上。(可能得由ISP作这项检查) 如果保护网路的地址定为192.168.2.*,则 任何数据包都不能传送。如果没有作这些设定,而使用了IP masquerading,这项 试验应该成功。 至此,各项设定基本完成。 5.5 加固防火墙 如果通过防火墙上没有使用的功能能够随意进出防火墙,则这种防火墙也就没有 什么用处。 "骇客" 能到防火墙内作出必要的修改,供其所用。 首先关闭所有不 用的功能。先检查 /etc/inetd.conf档。这个档控制所谓的"超级伺服器"。它控 制了许多伺服器的daemon,然後在需要时启动这些daemon。 完全取消netstat、 systat、 tftp、 bootp和finger功能。取消功能的方法是把#作为功能行的行首 字母。设定完毕後,键入"kill -HUP <pid>",执行SIG-HUP ,其中<pid> 是inetd的程序编号。inetd会再次读取配置档(inetd.conf),并从新启动系统 。 利用telnet 测试防火墙的埠号(port)15,这是netstat的埠号。如netstat 回应网路情况,系统并没有按要求正确地从新启动。 6. IP filtering 的设置(IPFWADM) 首先设定内核的IP Forwarding功能,系统应开始转送每一信息。路径表 (routing table)应已设定,因此应该可以通往任何地点,从网内可以联到网外 ,从网外也可进到网内。 但是防火墙的作用是不让任何人可以随便进出网路。 在示□系统中设定了两套指令(script),对防火墙的forwarding和accounting 作了规定。系统在运行/etc/rc.d时取用这两套指令,因此在系统启动时就对系统 作了设置。 Linux的内核自设转送一切信息的IP Forwarding系统。因此,防火墙 的指令应首先禁止一切进入系统的权利,清除上次运行後留下的任何ipfw规则。 下面的指令应能达到这项目的。 # # setup IP packet Accounting and Forwarding # # Forwarding # # By default DENY all services ipfwadm -F -p deny # Flush all commands ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f 好了,现在有了绝对保险的防火墙。一切都被屏挡在外面,无法穿越防火墙一步 。当然,有些功能还是需要的,下面的一些例子可作参考。 # Forward email to your server ∶转送电子邮件到伺服器 ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # Forward email connections to outside email servers ∶将电子邮件连到网路外的电子邮件伺服器 ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 # Forward Web connections to your Web Server∶将Web连到Web伺服器 /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # Forward Web connections to outside Web Server∶将Web连到外界Web伺服器 /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # Forward DNS traffic∶转送DNS信息 /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24 如果想知道通过防火墙的信息来往情况,下列指令会统计所有数据包。 # Flush the current accounting rules ipfwadm -A -f # Accounting /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24 如果只把电脑设为过滤防火墙,到这里就大功告成了! 7. 安装TIS代理伺服器7.1 取得软件 TIS FWTK软件可从下列网址得到∶ftp://ftp.tis.com/. 千万记住∶从TIS下载软 件後,首先阅读README。TIS fwtk存放在伺服器的一个隐藏目录内,需要发电子 邮件给fwtk-request@tis.com 并在信文内填入SEND才能得知隐藏的目录的名字 。Subject栏内不必填入任何内容。在回覆的电子邮件内会告知存放软件的目录的 名字,有效时间为12小时,得赶快下载。 在编写本文时,FWTK的最新版本为2.0 (beta)。除了几个小地方之外,这个版本在编辑时没有问题,运行时也正常, 此处就以这一版本为例。如有最後定本时,将在以後的HOWTO中增订。 安装FWTK 时,首先在 /usr/src下建立fwtk-2.0目录。将FWTK(fwtk-2.0.tar.gz)放在这 个目录内解压(tar zxf fwtk-2.0.tar.gz)。 FWTK并无代理SSL的网路文件 ,Jean-Christophe Touvet写了一些附加资料,可 从ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl-gw.tar.Z取得。 Eric Wedel写 了修订本,其中包括使用网景(Netscape)的新闻伺服器。这套软件可从下列网 址取得∶ftp://mdi.meridian-data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z 以下以Eric Wedel的版本为例。 要安装,只要在/usr/src/fwtk-2.0目录内建立 一个 ssl-gw目录,把文档放在其中即可。 在安装这个网关时,得要作些改动才 能进行编辑。 首先改变ssl-gw.c档,其中遗漏了必要的include档。 #if defined(__linux) #include <sys/ioctl.h> #endif 其次,也没有Makefile档。不妨从其他网关目录拷贝一个,然後将网关的名字改 为ssl-gw。 7.2 编辑TIS FWTK 版本2.0的FWTK比以往任何一个版本都易于编辑。不过在编辑以前还需要对BETA版 本作一些更动。希望这些更动会加附到最後定本中。 修改方法如下∶首先进 入/usr/src/fwtk/fwtk目录,拷贝Makefile.config.linux档,以此档替 代Makefile.config档。 不要运行FIXMAKE。虽然在说明中建议执行这个程序。但 运行後会破坏每一个目录中的makefile。 修改fixmake的方法是在每一 个Makefile的sed指令的include行中添加‘.’和"。按下例更改,便可运行无碍 。 sed 's/^include[ ]*\([^ ].*\)/include \1/' $name .proto > $name 然後需要编辑Makefile.config档,但首先得作两项修改。 Makefile.config档中 的source目录应改为进行编辑的/usr/src,因此FWTKSRCDIR应作相应的改变。 FWTKSRCDIR=/usr/src/fwtk/fwtk 有些Linux系统使用gdbm数据库。Makefile.config使用dbm。例如,RedHat 3.0.3就使用dbm,因此需要作出相应更动。 DBMLIB=-lgdbm 最後需要改x-gw。BETA版内socket.c中的下列数行必需删除。 #ifdef SCM_RIGHTS /* 4.3BSD Reno and later */ + sizeof(un_name->sun_len) + 1 #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -