基于LINUX操作系统 的防火墙技巧及其具体实现

时间:2024-10-19 22:30:16 计算机毕业论文 我要投稿
  • 相关推荐

基于LINUX操作系统 的防火墙技巧及其具体实现

摘要  本文介绍了LINUX下常用的防火墙规矩配置软件Ipchains;从实现原理、配置法子 以及功效特性的角度描绘了LINUX防火墙的三种功效;并给出了一个LINUX防火墙实例作为参考。

要害字    LINUX防火墙  ipchains  包过滤  代理  IP装作

1      前言
防火墙作为网络安全措施 中的一个首要组成部分,一直受到人们的广泛关注。LINUX是这几年一款异军崛起的操作系统 ,以其公开的源代码、强大稳固的网络功效和大宗的免费资源受到业界的广泛赞美 。LINUX防火墙其实是操作系统 本身所自带的一个功效模块。通过安装特定的防火墙内核,LINUX操作系统 会对接管到的数据包按必然的策略进行处理 。而用户所要做的,就是应用特定的配置软件(如ipchains)去定制适宜自己的“数据包处理 策略”。
2      LINUX防火墙配置软件—Ipchains
Ipchains是LINUX 2.1及其以上版本中所带的一个防火墙规矩管理程序。用户可以应用
它来建立 、编辑 、删除系统 的防火墙规矩。但通常,需要 自己创立一个防火墙规矩脚本 /etc/rc.d/rc.firewall,并使系统 启动时主动运行这个脚本。
一个LINUX防火墙系统 的安全机制是通过Input、Output、Forward这三个“防火链”来实现的。而用户正是应用 ipchains在这三个“链”上分辨 创立一套“防火规矩 ”,来完成对到来数据包层层限制的目标,其组织结构 如图1所示。
 
    其中,每个链都包孕一组由用户创立的过滤规矩,数据包依次达到每个链,并对比其中的每条规矩,直到找出匹配规矩并履行相应策略(如通过、回绝等),否则履行默认策略。实际中,数据包在达到 Input链之前还要进行测试和正常性反省,在到路由表之前还要被确定 是否被装作,这些,在本图中都被省略了。
Ipchains 经常应用的命令行款式如下:
Ipchains –A chain [–i interface] [–p protocol] [[!] -y]
[–s source-ip [port]] [-d destination-ip [port]] –j policy [-l]
对各选项的阐明如下表:
-A <chain>      添加一规矩到链尾。chain可为input、output、forward。
-i <interface>      指定本规矩实用的网络接口。通常有eth0、eth1、lo、ppp0等。
-p <protocol>      指定本规矩实用的IP协议 ,如tcp、udp、icmp等。
[!] –y      -y表明tcp握手中的连接 恳求标记位SYN; ! –y 表现对该恳求的响应。
-s src-ip [port]      指明数据包的源IP地址,port表现本规矩实用的端口号。
-d dst-ip [port]      指明数据包的目标 IP地址及端口号。
-j policy      指定本规矩对匹配数据包的处理 策略:ACCEPT、DENY或REJECT。
-l      在系统 日志/var/log/messages中记载 与该规矩匹配的数据包。

3      LINUX防火墙的几种常见功效
由于每一个用户的请求和所处的环境都不一样,LINUX防火墙会根据 用户的设置实现各种不同的功效。但一般说来,以下三种功效是大多数用户最常用到的。
3.1 包过滤
对数据包进行过滤可以说是任何防火墙所具备的最根基的功效,而LINUX防火墙本身从某个角度也可以说是一种“包过滤防火墙”。在LINUX防火墙中,操作系统 内核对到来的每一个数据包进行反省,从它们的包头中提取出所需要 的信息,如源IP地址、目标 IP地址、源端口号、目标端口号等,再与已建立 的防火规矩逐条进行对比,并履行所匹配规矩的策略,或履行默认策略,这个历程在图1中已经形象的表现 出来。
值得注意的是,在制定 防火墙过滤规矩时通常有两个根基的策略法子 可供选择:一个是默认容许一切,即在接管所有数据包的根基上明确 地阻挠那些特别的、不盼望收到的数据包;还有一个策略就是默认阻挠一切,即首先阻挠所有的数据包通过,然后再根据 所盼望供给的服务去一项项容许需要 的数据包通过。一般说来,前者使启动和运行防火墙变得更加容易,但却更容易为自己留下安全隐患。
通过在防火墙外部接口处对进来的数据包进行过滤,可以有效地禁止绝大多数有意或无意地网络攻击,同时,对发出的数据包进行限制,可以明确 地指定内部网中哪些主机可以造访互联网,哪些主机只能享用哪些服务或登陆哪些站点,从而实现对内部主机的管理。可以说,在对一些小型内部局域网进行安全保护和网络管理时,包过滤确凿是一种简略而有效的手法。
3.2 代理
LINUX防火墙的代理功效是通过安装相应的****实现的。它使那些不具备公共IP的内部主机也能造访互联网,并且很好地屏蔽了内部网,从而有效保障了内部主机的安全。为了明确地描绘这一首要功效的实现历程,特假设以下范例情况 ,如图2所示:
 
    steven为内部网中一台IP是192.168.0.2的主机,其上安装有IE5.0涉猎器,并配置为应用防火墙主机192.168.0.1:8080作为代理。firewall就是我们讨论的LINUX防火墙,有两个网络接口,分辨 是内部接口eth1=192.168.0.1、外部接口eth0=202.117.120.1。在firewall主机上安装有Web****“squid”,并配置其代理端口为8080。www.263.net为263网站的Web服务器,IP为211.100.31.131,Web服务端口80。
如果要从steven主机造访 263的主页,其具体的通信 历程如图中所示:
(1)IE通过steven的非专用端口1110 (在1024~65535之间随机产生 )与防火墙的代理
端口8080建立 连接 ,恳求 “http://www.263.net”页面。
(2)squid代理接管到恳求后,先查找域名“www.263.net”,得到地址211.100.31.131(该
步骤图中省略),然后通过防火墙端口1050与该地址的80端口建立 一个连接 ,恳求页面。
(3)www.263.net服务器接到恳求后将页面传给squid代理。
(4)防火墙代理得到页面后,把数据复制到(1)中所建立 的连接 上,IE得到数据并
将“www.263.net”页面显示出来。
    通过以上描绘,可以明确地领会 到内部主机、LINUX代理防火墙以及外部服务器之间是如何进行数据传输的,那么,在LINUX防火墙内部,那些“防火链”又是如何工作的呢?其工作历程如图3所示:
 
    steven主机发来的数据包经由内部接口eth1进来后,首先接管INPUT链的“反省 ”:系统 内核从包头中提取出信息,与INPUT链中所有实用于eth1接口的过滤规矩逐个对比,直到匹配通过。之后,该数据包被转发给本地的代理历程。同样,代理历程发送给远程Web服务器的数据包在从防火墙外部接口发送出去之前,也要经过OUTPUT链的“反省 ”,即与OUTPUT链中所有实用于eth0接口的规矩一一对比。返回的历程正好与上述相反,在此就不再赘述
为了实现以上历程,我们必须 在防火墙规矩脚本中添加以下规矩:
ipchains –A input –i eth1 –p tcp –s 192.168.0.2 1110 –d 192.168.0.1 8080 –j ACCEPT
ipchains –A output –i eth0 –p tcp –s 202.117.120.1 1050 –d 211.100.31.131 80 –j ACCEPT
ipchains –A input –i eth0 –p tcp !-y –s 211.100.31.131 80 –d 202.117.120.1 1050 –j ACCEPT
ipchains –A output –i eth1 –p tcp ! –y –s 192.168.0.1 8080 –d 192.168.0.2 1110 –j ACCEPT
    从上文对代理功效的原理和实现的叙述中,我们可以看出,LINUX防火墙实际上扮演了一个“代理网关”的角色。内部主机和远程服务器分辨 都只与防火墙进行连接 ,而真正的“起点”和“终点”之间却毫无接洽。
3.3 IP装作
IP装作(IP Masquerade)是LINUX操作系统 自带的又一个首要功效。通过在系统 内核增长相应的装作模块,内核可以主动地对经过的数据包进行“装作”,即修正包头中的源目标 IP信息,以使外部主机误觉得该包是由防火墙主机发出来的。这样做,可以有效解决应用内部保存 IP的主机不能造访互联网的问题,同时屏蔽了内部局域网。这一点,与前面所讲的代理所达到 的目标是很类似 的。
关于IP装作在LINUX防火墙内部的具体实现历程,请看图4。
 
仍以图2中所示的范例情况 为例,steven主机的IE历程直接与远程的Web服务器建立 一个连接 。当数据包达到防火墙的内部接口后,照样要例行INPUT链的反省。之后,数据包被送到FORWARD链,接管系统 内核的“装作处理 ”,即将包头中的源IP地址改为防火墙外部接口eth0的地址,并在系统 中做下记载 ,以便一会儿对其回应包的目标 IP进行“恢复”。这样,当该数据包顺利从外部接口出来时,其包头中源IP已被改为202.117.120.1。远程服务器会觉得这是从防火墙的合法地址发来的,从而对其做出响应。当远程服务器返回的回应包达到防火墙时,先经过INPUT链,然后会根据 系统 关于IP装作的记载 对数据包的目标 IP进行恢复,即将202.117.120.1改为192.168.0.2,最后再经过OUTPUT链返回到steven主机。
    为了实现这个历程,我们必须 在防火墙规矩脚本中添加以下规矩:
ipchains –A input –i eth1 –p tcp –s 192.168.0.2 1110 –d 211.100.31.131 80 –j ACCEPT
ipchains –A output –i eth0 –p tcp –s 202.117.120.1 1050 –d 211.100.31.131 80 –j ACCEPT
ipchains –A input –i eth0 –p tcp !-y –s 211.100.31.131 80 –d 202.117.120.1 1050 –j ACCEPT
ipchains –A output –i eth1 –p tcp ! –y –s 211.100.31.131 80 –d 192.168.0.2 1110 –j ACCEPT
  ipchains –A forward –i eth0 –s 192.168.0.2 1110 –d 211.100.31.131 80 –j MASQ
    与代理功效对比而言,IP装作不需要 安装相应的****,数据包的装作对用户来说都是“透明”的,并且全部历程都是在IP层实现,因此实现速度较快。错误是不能对经过的数据包作详细的记载 。
以上介绍了LINUX防火墙在实际的设置中常用到的三种功效。但一般说来,用户在创立自己的防火墙规矩脚本时,可以根据 自己的需要 将这三种功效组合起来实现。
4      一个LINUX防火墙实例
以下是我前一段光阴为某办公室搭建的LINUX防火墙的实际配置,给出以供参考。
    有两个局域网,LAN1地址:202.117.120.65/255.255.255.248
为公共网络IP,LAN2地址为192.168.0.0/255.255.255.0,为内部保存地址。LINUX防火墙有两个内部接口:202.117.120.70接LAN1;192.168.0.1接LAN2。
现对防火墙进行配置,使LAN2的主机通过IP装作造访互联网,但只容许应用外部Web*****202.117.112.34的1252端口。LAN1中的主机被限制应用几种常用的互联网服务(DNS、SMTP、POP3、HTTP和FTP)。
下面就是创立的防火墙规矩脚本:
#/etc/rc.d/rc.firewall
#!/bin/sh
# eth0---External_interface
# eth1---LAN1_interface
# eth2---LAN2_interface
echo "Starting firewalling . . ."
#Flush any existing rules from all chains
ipchains -F
#Set the default policy to deny
ipchains -P input DENY
ipchains -P output REJECT
ipchains -P forward REJECT
#Enable traffic on the loopback interface
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
#Enable the traffic on the eth1
ipchains -A input -i eth1 -j ACCEPT
ipchains -A output -i eth1 -j ACCEPT
#the traffic on the eth2 only enablling using the WEB PROXY
ipchains -A input -i eth2 -p tcp -s 192.168.0.0/24 1024:65535 -d 202.117.112.34 1252 -j ACCEPT
ipchains -A output -i eth2 -p tcp ! -y -s 202.117.112.34 1252 -d 192.168.0.0/24 1024:65535 -j ACCEPT
#Forwarding rules
ipchains -A forward -i eth0 -s 202.117.120.64/29  -j ACCEPT
ipchains -A forward -i eth0 -s 192.168.0.0/24  -j MASQ
ipchains -A forward -i eth1 -d 202.117.120.64/29 -j ACCEPT
#Enable outgoing the packets from LAN on the External_Interface
ipchains -A output -i eth0 -j ACCEPT
#Enable incoming some ICMP messages on eth
# 1.Dest_Unreachable,Service_Unavailable
ipchains -A input -i eth0 -p icmp -s any/0 3 -d 202.117.120.64/29 -j ACCEPT
# 2.Time_Exceeded
ipchains -A input -i eth0 -p icmp -s any/0 11 -d 202.117.120.64/29 -j ACCEPT
# 3.Allow outgoing pings to anywhere
ipchains -A input -i eth0 -p icmp -s any/0 0 -d 202.117.120.64/29 -j ACCEPT
#Enable Proxy of 202.117.112.34:1252
ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.34 1252 -j ACCEPT
#DNS (53) (DNS:202.117.112.3)—client modes
ipchains -A input -i eth0 -p udp -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp ! -y -s 202.117.112.3 53 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#SMTP(25)Enable sending mail through a remote SMTP gateway
ipchains -A input -i eth0 -p tcp ! -y -s any/0 25 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#POP(110)--Enable receiving mail from a remote POP server
ipchains -A input -i eth0 -p tcp ! -y -s any/0 110 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#HTTP(80) --Enable accessing remote WEB sites as a client
ipchains -A input -i eth0 -p tcp ! -y -s any/0 80 -d 202.117.120.64/29 1024:65535 -j ACCEPT
#FTP(20,21) --Enable accessing remote FTP servers
ipchains -A input -i eth0 -p tcp ! -y -s any/0 21 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp -s any/0 20 -d 202.117.120.64/29 1024:65535 -j ACCEPT
ipchains -A input -i eth0 -p tcp ! -y -s any/0 1024:65535 -d 202.117.120.64/29 1024:65535 -j ACCEPT
echo "done"
exit 0

5  收场语
本文偏重从防火墙内部工作历程的角度分辨 对LINUX防火墙的包过滤、代理以及IP装作功效进行了分析,同时涉及到了一些网络配置、用ipchains具体实现等方面的内容。文末给出的实例已在实际中调试通过。

参考文献
1  Robert L.Ziegler,《Linux防火墙》国民邮电出版社,2000.10
2  W.Richard Stevens,《TCP/IP详解 卷一:协议 》机械工业出版社,2000.4.1
3  Rusty Russell,“Linux IPCHAINS-HOWTO”,netfilter.samba.org,Jul 4,2000
5      Rawn Shah,“Using your old Pentiums and Linux to create a Firewall”,Independent
6      technologist and freelance journalist,September,1999

【基于LINUX操作系统 的防火墙技巧及其具体实现】相关文章:

基于Linux系统的包过滤防火墙03-08

基于linux的网络对讲机的研究与实现03-07

基于Vxworks实时操作系统的串口通信程序设计与实现03-18

基于嵌入式Linux的终端AVI视频编码器的实现03-07

基于ARM9微处理器与Linux操作系统的SD驱动开发03-07

组件机制与操作系统的实现03-18

基于模糊控制的迟早门同步器及其FPGA实现03-20

基于Windows Media技巧的流媒体系统 的设计与实现03-23

基于Netfilter的包过滤防火墙设计03-08