可能是我的最后一次作业(希望大家指出我的错误)(Linux下的NAT及防火墙的混合应用)

由 saying 在 06-03-2003 10:01 发表:

可能是我的最后一次作业(希望大家指出我的错误)(Linux下的NAT及防火墙的混合应用)

Linux下的NAT及防火墙的混合应用

【摘要】

主要讲述Linux系统下的NAT(网络地址转换)和基于NAT的防火墙技术。

首先由Linux系统的安装引入,着重介绍LINUX下的NAT的网络配置(服务端和客户端),以及防火墙配置原则。

其次,从理论上阐述,“什么是NAT”和网络上的攻击方法。

【引言】

LINUX凭借其稳定性、安全性和代码开放在这几年中,风靡全球;作为一种类UNIX系统,Linux正在互联网的各个层面得到应用,从科学计算到银行取款机,从网络web服务到高层的Oracle 数据库应用。都可以看到linux的影子。而由于Linux遵循于GPL协议(公共软件许可证),任何人可以得到并且修改它的源代码,所以他的安全性相较于其他的非开源系统来说要高的多;并且它可以从网络中免费下载。从这2点来说他非常适合用于网络信息闸(软路由或网关)和自制防火墙(事实上国内的硬件防火墙厂商都是用工业X86硬件和linux来做他们的产品,虽然那不是真正意义上的硬件防火墙)。现在学校过于注重对windows及其windows平台上的软件、开发工具的学习。但是学生们没有意识到,真正撑起这个互联网的正是UNIX系统;就从我对Linux的见解为大家展示UNIX系统的一角吧。

什么是NAT?

NAT英文全称是Network Address Translation,称是网络地址转换,它是一个IETF标准,允许一个机构(包括多个网络节点)以一个地址出现在Internet上。NAT将每个局域网节点的地址转换成一个IP地址,反之亦然。它也可以应用到防火墙技术里,把个别IP地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP地址 的使用。

为什么要进行NAT

假设校园网提供园区Internet接入服务,为了方便管理,校园网络中心分配给园区用户的IP地址都是伪IP(内部ip),但是部分用户要求建立自己的WWW服务器对外发布信息,这时候我们就可以通过NAT来提供这种服务了。我们可以在防火墙的外部网卡上绑定多个合法IP地址或端口,然后通过NAT技术使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。

实验环境介绍

本文所有到的实验环境如下:

LINUX系统主机一台(服务端):双网卡 REDHAT 9.0 主机名:host

WINDOWS 98 系统主机一台(客户端):单网卡 主机名:test

联想D-link 8口 10M/100M交换机一个

【正文】

网络拓扑结构:

一、 RED HAT 9.0安装和注意点

Linux是一个独立的操作系统,所以不能在其他操作系统下进行安装,他有自己的启动方式,可以采用以下两种方法进行安装。

● 从CD-ROM进行安装

● 从FTP服务器进行安装

由于Linux系统安装(第一种方法),有随机参考手册,难度不大,所以我们着重介绍从ftp安装。

在安装之前制作启动盘:

1. 在windows操作系统下将安装盘放入光驱;

2. 运行 e:\dosutils\rawrite.exe(e盘为光驱)

3. 在运行后的界面中输入e:\images\bootnet.img

4. 指定目标盘,输入用户软盘盘符:a

这样一张安装程序的启动盘就建好了。

用软盘引导计算机,进入蓝色界面后,输入FTP服务器地址和ftp上的用户名及口令就可以下在安装了。

RED HAT 9.0安装界面为中文,安装中文说明基本可以完成系统定制,在此要强调的是,分区的时候,/swap(交换分区)大小要是内存大小的2倍;既然是作NAT网关,要把/var(日志分区)单分出来,并且不要少于500M,有充裕的空间存储日志,也为将来将来系统故障或受到攻击做到有据可查。

二.LINUX的网络设置和NAT原理

2.1网络设置

我们把Linux系统安装完后,整个设置平台算是搭建完毕,但是还要设置网络;设置网络之前,或者说让linux上网前,应该把和这台服务器应该起到作用的无关服务关掉。

可以在命令行下敲入setup回车,会出现一个文本菜单,里面有“系统服务”一项,直接用空格键取消服务前面的勾然后重新启动系统就行了。

假如是UNIX的熟练用户,可以在取消服务后,不用重新启动,在命令行侠打入

ps aux

会显示现在在后台运行的所有服务,看到要杀死的进程后,打入

kill -9

  1<pid>   
  2  
  3(-9代表强制杀掉进程)杀死进程。   
  4  
  5然后进入/etc/sysconfig/network-scripts/目录   
  6  
  7vi ifcfg-eth0会出现以下内容   
  8  
  9device=eth0   
 10  
 11onboot=yes   
 12  
 13bootproto=none   
 14  
 15IPADDR=192.168.0.1 #(内网网卡iP)   
 16  
 17netmask=255.255.255.0   
 18  
 19TYPE=ETHERNET   
 20  
 21USERCTL=NO   
 22  
 23PEERDNS=NO   
 24  
 25NETWORK=192.168.0.0(网络号)   
 26  
 27Broadcast=192.168.0.255(广播号)   
 28  
 29上面的设置的意思是:eth0对内的内网网卡,ip地址为192.168.0.1,子网掩码为:255.255.255.0;   
 30  
 31  
 32  
 33vi ifcfg-eth1会出现以下内容   
 34  
 35device=eth1   
 36  
 37onboot=yes   
 38  
 39bootproto=none   
 40  
 41IPADDR=202.204.208.5 #(外网网卡iP)   
 42  
 43netmask=255.255.255.128   
 44  
 45TYPE=ETHERNET   
 46  
 47USERCTL=NO   
 48  
 49PEERDNS=NO   
 50  
 51NETWORK=202.204.208.0(网络号)   
 52  
 53Broadcast=202.204.208.127(广播号)   
 54  
 55上面的设置的意思是:eth1是对外的外网网卡,ip地址为202.204.208.5。   
 56  
 57网卡的设置就完成了   
 58  
 59  
 60  
 61  
 62  
 63加入nat客户端ip和名称   
 64  
 65vi /etc/hosts   
 66  
 67格式为:   
 68  
 69ip地址 主机名   
 70  
 71127.0.0.1 host   
 72  
 73  
 74  
 75指定内网网关   
 76  
 77vi /etc/sysconfig/network   
 78  
 79gateway=202.204.208.7 #(网关地址,假如服务端的外网为拨号,就不要指定)   
 80  
 81  
 82  
 83设置DNS服务器   
 84  
 85vi /etc/resolv.conf   
 86  
 87格式为   
 88  
 89nameserver ip地址   
 90  
 91nameserver 202.106.196.115   
 92  
 93都设置好后,从新启动系统,在命令行下打入   
 94  
 95route -a #察看路由表,看一下默认网关是否为202.204.208.7   
 96  
 97假如是的话,服务端的网络配置就已经全部完成。   
 98  
 99  
100  
101下面是客户端的网络配置   
102  
103因为是win 98系统,所以只给出配置参数,配置方法略   
104  
105ip地址为192.168.0.2   
106  
107子网掩码:255.255.255.0   
108  
109域名服务器:202.106.196.115   
110  
111网关:192.168.0.1   
112  
113全部网络设置完成   
114  
115  
116  
1172.2 NAT原理   
118  
1192.2.1在进入NAT设置之前,我们要先讨论一下NAT的工作原理   
120  
121在引言部分,我们已经提到了一个NAT应用实例,从这个实例中可以看出NAT和防火墙是一体的,换句话说,NAT就是防火墙。NAT对防火墙来说是子集的关系。   
122  
123在本节,我们会深入讨论NAT的原理部分,为了更清晰的认识NAT,我们借用INTERNET标准化组织发布的RFC3022文档的部分内容。   
124  
125NAT有三种类型:静态NAT(Static NAT)、网络地址端口转换DNAT(destination- NAT)、动态地址NAT(Pooled NAT)。我们主要讨论前面2种NAT.   
126  
127静态nat解决问题的办法是:在内部网络中使用内部地址,通过NAT把内部地址翻译成合法的IP地址在Internet上使用,其具体的做法是把IP包内的地址域用合法的IP地址来替换。NAT设备维护一个状态表(路由表,所以也称NAT为软路由),用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。   
128  
129网络地址端口转换NAT,也叫做反向NAT,他解决问题的方法是:在内部网络中,使用内部地址的计算机开设了网络服务(80,21等),当外部ip想访问这些服务时,NAT网关把外部访问ip翻译成内部ip,也就是说,把内部开设的服务,映射到一个合法的ip和端口上,已供外部访问。   
130  
131假如想进一步了解他的工作原理,NAT其实就是一种IP包欺诈,也可以说是对IP报头的修改,请看下表   
132  
1334位版本   
134  
1354位首部长度   
136  
1378位服务类型   
138  
13916位总长度(字节数)   
140  
14116位标识   
142  
1433位标志   
144  
14513位片偏移   
146  
1478位生存时间(ttl)   
148  
1498位协议   
150  
15116位首部校验和   
152  
15332位源ip地址   
154  
15532位目的ip地址   
156  
157其他选项   
158  
159携带数据   
160  
161IP数据包格式和报头中的各字段   
162  
163NAT网关(外202.204.208.5;内192.168.0.1)收到本地局域网内的客户机(192.168.0.2),发来的ip数据,先判断是否是本地子网中发来的,假如通过,则按照她的目的ip地址查找本地路由表进行转发,NAT在包被继续向前送出之前转换32位源地址192.168.0.1成202.204.208.5。相应的,IP包往回传时依据相同的地址进行转换。   
164  
1652.2.2 NAT设置   
166  
167我们知道了NAT的原理,就可以进行NAT的配置了,我们前面说过了NAT就是防火墙,在RED HAT 9.0下自带防火墙 IPTABLES   
168  
169我们在做好网络设置后,假如要实现客户端(win98)通过服务端上网(静态NAT),可以在命令行下直接打入   
170  
171iptables -t nat -A POSTROUTING -o eth1 -j SNAT - to 202.204.208.5   
172  
173说明:   
174  
175-t nat : 调用NAT表,调用这个表说明遇到了产生新的连接的包。   
176  
177-A :该命令将一条规则附加到链的末尾。   
178  
179POSTROUTING:指定正当信息包打算离开防火墙时改变它们的规则。   
180  
181-o eth1:输出接口为eth1   
182  
183-j SNAT:跳转,也叫触发条件,当满足SNAT规则是便发生跳转   
184  
185整条语句的意思为: 当防火墙遇到产生新的连接的包,则在他要离开防火墙时改变他的源ip为202.204.208.5并且从eth1出口送出。   
186  
187  
188  
189nat的规则指定完成后,还要打开ip转发功能:   
190  
191echo 1 &gt; /proc/sys/net/ipv4/ip_forward   
192  
193这样,客户端就可以通过208.5上网了。   
194  
195  
196  
197假如208.5的客户端192.168.0.2开设了80端口的web服务,如何让外部访问到这个局域网内部的服务呢?   
198  
199这就用到了Dnat(也叫反向NAT,端口跳转),在命令行下打入:   
200  
201iptables -t nat -A PREROUTING -i eth1 -d 202.204.208.5 -p tcp -dport 80 -j DNAT -to-destination 192.168.0.2:80   
202  
203语句说明:当有通过eth1接口的tcp协议访问202.204.208.5的80端口的时候,则触发跳转,跳转至局域网的192.168.0.2的80端口。   
204  
205但是这同时也出现一个问题,在同一局域网内的机器,无法访问202.204.208.5的80端口。以下是原因:   
206  
207假设192.168.0.3不通过 http://192.168.0.2:80这种方式进行浏...蛲</pid>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus