📄 00000014.htm
字号:
<BR> :output ACCEPT <BR> <BR> -A forward -s 202.199.249.0/255.255.255.0 -d 0.0.0.0/0.0.0.0 -j ACCEPT <BR> <BR> 如果要从文件中读入ipchains的配置,使用ipchains-restore命令: <BR> <BR> $ipchains-restore < mychains <BR> <BR> 同样,ipchains-restore从标准输入读取信息,因此需要使用重定向命令。 <BR> <BR> 8.2.2 NAT和IP代理 <BR> <BR> 现在我们来考虑一个重要的ipchains应用,即NAT(网络地址翻译),也称为IP代理。在 <BR>第一章我们已经介绍过有关的概念,处于私用网络内的主机将自己的请求传递给代理机 <BR>器,由代理机器重写源地址和端口,使得看上去数据包好像是从代理机器发出的,接受 <BR>到的数据包也由代理机器转发给私用网络内的主机。在ipchains的术语中,这称为“伪 <BR>装”(MASQ)。 <BR> <BR> 要使用伪装功能,可以简单地使用-j MASQ命令。考虑一个典型的例子,eth0接到正常 <BR>的internet中,地址是202.199.248.120,现在在eth1上连接一个私用网络,地址是192 <BR>.168.254.0/24,eth1的地址是192.168.254.1,而且eth0已经能够正常访问internet, <BR>那么需要作的事情就是设置所有从192.168.254.0/24发出的请求包应该被伪装然后发送 <BR>,因此,首先要按照前面的方法打开核心IP转发,然后设置对192.168.254.0的机器发出 <BR>的数据包进行伪装: <BR> <BR> ipchains –A forward –s 192.168.254.0/24 –d !192.168.254.0/24 –j MASQ <BR> <BR> 然后把私用网络中的机器的网关设置成eth1的地址(192.168.254.1)就可以让私用网 <BR>络中的机器访问internet了。 <BR> <BR> 这种技术也用于设置拨号网关,即用一个拨号网络连接让局域网内的所有机器都能连 <BR>接到internet。 <BR> <BR> telnet,www等服务都可以简单地通过这种伪装方法代理出去,但是ftp有一个特殊的 <BR>问题。在第一章中,我们已经指出,ftp依赖于两个连接,其中用来传输数据的连接通常 <BR>由服务器发起。问题是远端服务器根本不知道关于私用网络的事情,因此连接不会成功 <BR>,例如,当你通过我们这里介绍的网关让私用网络内的机器进行ftp请求时,会产生这样 <BR>的情况: <BR> <BR> C:\>ftp <BR> <BR> ftp> o 202.199.248.3 <BR> <BR> Connected to 202.199.248.3. <BR> <BR> 220 asnt_1 Microsoft FTP Service (Version 4.0). <BR> <BR> User (202.199.248.3:(none)): ftp <BR> <BR> 331 Anonymous access allowed, send identity (e-mail name) as password. <BR> <BR> Password: <BR> <BR> 230 Anonymous user logged in. <BR> <BR> ftp> ls <BR> <BR> 500 Invalid PORT Command. <BR> <BR> 150 Opening ASCII mode data connection for file list. <BR> <BR> 然后这个ftp程序就会挂起。 <BR> <BR> 解决问题的第一个办法是使用被动(passive)模式,在被动模式下,所有的ftp连接 <BR>和数据传输请求都由ftp客户发起,这样就可以避免服务器反过来连接私用网络的机器。 <BR>通常基于GUI的ftp客户软件一般都是使用的被动模式(例如cute_ftp),而命令行ftp工 <BR>具则使用的是主动模式。 <BR> <BR> 不幸的是,最常用的浏览工具:Internet Explorer 用的正好是主动模式。显然,让 <BR>你的客户了解这种晕头转向的概念显然无益于帮助他们使用internet。因此,ipchains <BR>提供了一个附加模块,专门用于解决ftp的问题,可以用insmod命令来加载这个模块: <BR> <BR> insmod ip_masq_ftp <BR> <BR> 然后客户机器就可以正确地使用ftp了: <BR> <BR> C:\>ftp <BR> <BR> ftp> o 202.199.248.3 <BR> <BR> Connected to 202.199.248.3. <BR> <BR> 220 asnt_1 Microsoft FTP Service (Version 4.0). <BR> <BR> User (202.199.248.3:(none)): ftp <BR> <BR> 331 Anonymous access allowed, send identity (e-mail name) as password. <BR> <BR> Password: <BR> <BR> 230 Anonymous user logged in. <BR> <BR> ftp> ls <BR> <BR> 200 PORT command successful. <BR> <BR> 150 Opening ASCII mode data connection for file list. <BR> <BR> incoming <BR> <BR> pub <BR> <BR> 226 Transfer complete. <BR> <BR> ftp: 15 bytes received in 0.11Seconds 0.14Kbytes/sec. <BR> <BR> ftp> <BR> <BR> 对于那些不想对客户解释什么是被动模式的管理者,这可能是唯一的方法了。 <BR> <BR> 还有一些应用软件也需要类似的内核不定,其中最重要的应该是irc,要使得私用网上 <BR>的用户能够使用irc程序,使用这个模块: <BR> <BR> insmod ip_masq_irc <BR> <BR> 还有几个这一类的模块,都放在/lib/modules/2.2.14/ipv4目录下,你可以自己参考 <BR>,例如连线对战quake用的模块等等。 <BR> <BR> 8.3 基于IPChains的防火墙系统 <BR> <BR> 现在我们可以考虑如何实现一个简单的防火墙了。在这里我们将考虑一个代理和包过 <BR>滤混合的防火墙系统,尽管比较简单,但是它仍然包含通常所说的防火墙的主要内容。 <BR>对于这样的防火墙,ipchains就是你需要的一切。技术上,更强大的防火墙系统(例如 <BR>带有数据过滤功能)也是存在的,但是对于一般的单位,下面解释的防火墙强度已经足 <BR>够了。 <BR> <BR> 8.3.1 防火墙的设计 <BR> <BR> 防火墙有两种,称为代理防火墙和包过滤型的防火墙。代理防火墙基本上就是前面说 <BR>的NAT系统,或者是其他某种代理软件,客户机器把自己的请求提交给代理机器,然后由 <BR>代理服务程序代替它进行网络访问。这种防火墙的主要优势在于其安全性,理论上,只 <BR>要防火墙主机不出现问题,对客户机器进行非授权访问实际是不可能的。但是它的主要 <BR>缺陷就是灵活性和功能,显然,页面服务是无法安装在私用网络中的(除非使用端口转 <BR>发或者反向的NAT服务)。 <BR> <BR> 包过滤型的防火墙是一个软件的路由器,由路由机器对通过的数据包进行检查,拦截 <BR>所有非法的请求,并且对必要的情况进行记录。这种防火墙不会影响内部网络的正常功 <BR>能,缺点则是不像代理防火墙那样可靠,必须记住,由于TCP/IP的实现,数据包可能会 <BR>在你注意不到的地方穿过,而过分严厉的过滤策略又会影响网络的正常使用。 <BR> <BR> 一般来说,设计防火墙的主要任务是确定哪些数据包可以透过,哪些数据包必须加以 <BR>阻挡。这里,最重要的是熟知TCP/IP连接的性质和传输模式。 <BR> <BR> 设计防火墙的策略有两种基本的思路,一种是一开始就禁止所有的数据包流通,然后 <BR>根据需要打开的服务,依次开放各种端口;另外一种是一开始开放所有的服务,然后对 <BR>不可靠的端口进行封锁。原则上,前一种方法比较可靠,但是对于不熟悉TCP/IP的用户 <BR>,可能会导致一些困扰。 <BR> <BR> 要使得防火墙起作用,显然必须将你的本地网络放在防火墙后面,这又存在许多的情 <BR>况,最常见的情况,是将本地网络分成两部分,一部分使用正常的Internet地址,另一 <BR>部分则使用私用的网络地址。这两部分可以正常相互通信。当与外部网络的机器对话的 <BR>时候,使用正常地址的机器简单地通过防火墙,而私用网的机器则通过防火墙使用代理 <BR>方式访问。 <BR> <BR> 显然,这个系统需要有三个网络接口,一个用于连接到internet,另一个与正常地址 <BR>的内部机器对话,另一个用来和私用网络地址的机器对话。其中,正常地址的内部机器 <BR>是网络的中心部分,因为所有的本地服务器必须放在这个区域。在文献中,这个部分通 <BR>常称为DMZ(停火区)。 <BR> <BR> 在设计包过滤策略的时候,主要的应该是考虑TCP/IP连接的方式,如同我们知道的那 <BR>样,TCP/IP连接是双向的,如果你要访问某台主机的www服务,那么这个连接涉及到的是 <BR>:对方的主机地址;对方的www端口地址(80);自己的IP地址;除此之外,你的ftp程序 <BR>还要申请一个端口地址用来通讯,本地机器的TCP/IP管理程序将为它分配一个大于1024 <BR>的端口地址,这样才能实现连接。这样,通常为了避免对自己机器的非授权访问,你需 <BR>要封禁对本地网络机器所有非必要的小于1024端口的访问,但是你仍然应该允许大于10 <BR>24的端口的使用,否则本地机器无法使用internet。 <BR> <BR> 从/etc/services文件可以查找到各种端口的定义,不过要注意ftp使用两个端口,即 <BR>端口21(ftp)和20(ftp-data),分别用于发送ftp命令和发送ftp数据。另外,NFS服务要 <BR>使用portmap端口。 <BR> <BR> ftp是一个几乎象是噩梦一样的东西,在主动模式中,除了我们说的两个端口之外,实 <BR>际上,由于数据连接是从服务器发起,因此它是申请一个客户机器上的端口(同样>102 <BR>4),然后构作这个连接。显然,这个端口的值是不固定的,因此你实际上没有办法来判 <BR>断一个连接会不会是ftp主动模式的数据,这也就意味着如果你想允许主动模式,那么对 <BR>大于1024的端口进行过滤实际是不可能的。如果你坚持要一个“可靠”的防火墙,那么 <BR>唯一的方法是强制性地命令你的员工使用被动模式的ftp工具。这是过分严厉的管理政策 <BR>使得工作效率降低的一个例子。 <BR> <BR> 另外一个需要注意的内容是关于IP隧道。IP隧道可以让TCP/IP连接运行在别的协议之 <BR>上,例如IPX。这样,如果你的系统允许IPX路由,就有可能有别的网络上的用户利用IP <BR>隧道功能穿透你的防火墙设置。这是危险的事情,解决的方法就是原则上不对TCP/IP以 <BR>外的任何协议路由。如果你的路由器有多协议路由功能,将它禁止掉。 <BR> <BR> 8.3.2 实例说明 <BR> <BR> 现在我们用实例来说明一下一个上述的标准防火墙的配置过程,我们完全用ipchains <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -