linux作为网络防火墙,如何用linux做防火墙

1.4. 写这篇文章的动机

过去一年来在comp.os.linux 论坛上有一大堆人在求救, 寻求Firewall方面的

协助, 似乎也没有什麽人要回答。我猜是没人知道要怎麽回答吧! 所以我花了一点

时间玩了玩Firewall, 写这篇文章来回应那些需求。

1.5. 尚待努力方向

o 学习Macintosh的做法

o 学习不同的Windows TCP/IP套装软体

o 找个好用的UDP Proxy Server和Linux搭配

1.6. 深入研究时的参考资料

o TIS Firewall Toolkit文件

o NET-2 HOWTO

o PPP HOWTO

o Ethernet HOWTO

o MultIPle Ethernet Mini HOWTO

o Networking with Linux

o TCP/IP Network Administrator's Guide by O'Reilly and Associates

Firewall Toolkit by TIS 有一套很棒的文件, 其中有谈到Firewall及相关的

资料, 至於Firewall Toolkit的进一步说明, 请看Firewall软体那一节。

2. 了解Firewalls

Firewall原来是汽车上的一个术语, 它用来隔离引擎和乘客, 在引擎爆炸时可

以发挥保护乘客的功能。电脑上的Firewall是一个逻辑装置, 用来保护私人的区域

不受公用部份的侵害, 做法是:

1. 找一部有Routing能力的电脑(例如Linux)

2. 加入两个界面(例如: 序列埠、Ethernet、Token Ring等等)

3. 关掉IP forwarding的功能

4. 把其中一个界面接上Internet

5. 把受保护的网路接在另一个界面上

现在你使电脑接到两个不同的网路上。这部Firewall电脑, 现在就称为Firewall

了, 可以接到Internet上, 也可以接到保护网路(Protected Network) 上。但保护网

路无法连上 Internet, Internet也连不上保护网路。

如果要从保护网路内连上Internet, 必须要先telnet到Firewall, 从那里使用

Internet。同样的, Internet上的人要进入保护网路, 也必须先透过Firewall。

这种作法对於Internet上的攻击有很优秀的免疫作用。如果有人企图对受保护的

网路进行攻击, 则必须先穿过Firewall, 攻击必须分成两步骤, 难度也增加了。如果

有人想藉著使用一般的手法, 如邮件炸弹(MAIL BOMB)或"Internet Worm", 来攻击受

保护的网路, 他们可能是无法如愿的。

2.1. Firewall的缺点

Firewall最大的问题在於由内部Access Internet的困难。基本上, Firewall

利用Dial-Up Shell 的帐号来减少对於Internet的使用, 必须先login Firewall

才能做其他对Internet的Access动作。因此一些需要直接连接Internet的程式(如

Netscape) 便无法在Firewall後方顺利动作, 解决的办法——Proxy Server。

2.2. Proxy Server

Proxy Server可用来协助由Firewall後方直接Access到Internet。它们的工作是

在Server上开启一个Socket, 作为和Internet沟通的管道。举例来说, 我的电脑drig

是在保护网路内, 当我要使用Netscape去浏览Web 时, 我得在Firewall上建个Proxy

Server, 这个Proxy Server设定好可以接受我的电脑的请求, 把要连上Port 80请求

转接到它的Port 1080上。

任何用过TIA 或TERM的人应该对这个观念不会太陌生, 在这两个程式里, 你可以

对一个Port做转向的动作。我的一个朋友用TIA 设定允许大家用192.251.139.21 port

4024去连上他的web server。这里提到的Proxy Server原理也差不多, 只是恰好相反,

让你使用port 1080(或某特定值)去连接其他人的port 80。Proxy Server最了不起的

地方在於它的安全性, 如果你设定正确的话, 它不会允许任何人逾越它。

3. 动手吧!

3.1. 硬体需求

本例中, 电脑采用486-DX66, 8M RAM, 500M Linux 分割, 以一台1.44 bps

MODEM连到ISP上。这就是原本Linux box的基本配备, 要架成Firewall, 我们还得加

上一块NE2000 Ethernet网路卡。接著连上三部PC(Win 3.1+Trumpet Winsock)和两

台Suns(SunOS 4.1)。我选择这样的架构是著眼於它很普通常见, 而且我对这两种平

台都蛮熟悉的。本来有考虑要加上Mac, 可是我不太常用也不熟, 就算了。

3.2. 设定软体

现在, Linux box 透过14.4 PPP line连上Internet, 再用Ethernet连上其他

的电脑。首先, 先recomplie linux kernel, make config时得做适当的调整。

我参考了Kernel HOWTO, Ethernet HOWTO, NET-2 HOWTO然後进行"make config":

1. 使用Networking Support

2. 使用TCP/IP Networking

3. 取消IP Forwarding (CONFIG_IP_FORWARD).

4. 使用IP Firewalling

5. 可以使用IP accounting, 这样比较审慎一点。

6. 使用Networking Device Support

7. 使用PPP 及Ethernet support, 视你的界面而定

接著, 我们recompile, reinstall kernel 後重开机。应该可以在开机过程中

看到我们所加入的界面的资料, 如果没有, 参考其他的HOWTO, 看看是那里做错了。

3.3. 设定网路位址

这是很有趣的一部份。因为我们不希望Internet直接Access我们的网路, 所以

不必使用真实位址。一个不错的选择是C Class的192.168.2.xxx, 它是设定来做测

试的dummy domain。所以放心大胆的用它吧! 没人会跟你抢的。在我们的设定中,

只需要一个真实的位址, 其他的自设就可以了。指定连上PPP 的串列埠一个真实IP

位址, Firewall上的Ethernet卡设为192.168.2.1, 将其他电脑设为192.168.2.xxx。

3.4. 测试看看

试著从Firewall上ping一个Internet上的Node。我使用nic.ddn.mil做为测试点

。[译注: 在国内可以ping edu.tw 看看]如果不行, 查查你的PPP 有没有设好,

仔细的读一下Net-2 HOWTO, 再试一次。

现在, 试著ping保护网路内的电脑, 所有网路内的电脑应该可以ping其他任何

一台电脑, 如果不行, 老话一句, 看看NET-2 HOWTO 再试一次。接著, 所有在保护

网路内的机器应该都可以ping Firewall。若不行, 再重覆以上步骤, 记得, 你该

ping 192.168.2.1, 而非PPP 的真实IP位址。

然後试著从Firewall里的电脑去ping PPP的IP位址, 如果可以, 表示你IP

Forwarding的功能未取消, 你必须重新compile kernel。虽然我们已经把受保护的

网路设为192.168.2.1 domain, 不会收到来自Internet的封包, 可是把IP Forwarding

关掉还是比较保险一点, 可以自己主控全局而非仰赖ISP。

最後, 从Firewall上ping一下受保护的网路内的机器, 到这个地步, 应该不会

有什麽问题。到这里, 我们已经完成了最基础的Firewall安装。

3.5. Firewall的安全性

目前的Firewall还不够好, 因为它还敞开著大门等待别人来攻击。首先, 找到

/etc/inetd.conf, 它又被称为"super server", 因为在上面有超过一打的server

daemon被执行。例如:

o Telnet

o Talk

o FTP

o Daytime

取消所有不需要的功能, 例如netstat、systat、tftp、bootp、finger。甚至

你可以关掉telnet只允许rlogin或vica-versa。你只要在该功能前加上# 就可以轻

易的把它取消掉。利用kill -HUP 送出一个SIG-HUP给inetd, 使inetd 重新

去读取我们刚才改的设定(inetd.conf)同时restart。试试telnet Firewall的port

15(netstat port), 如果你还读得到netstat的资料, 表示你没有正确的restart

inetd。[译注: 如果还搞不定, 考虑reboot吧!]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值