简易搭建基于LINUX平台上防火墙
陆晓亮
兴安盟广播电视大学
中文摘要
本文主要是使用LINUX系统自带防火墙,不具备硬件防火墙的情况下,保护服务器不受外界的攻击。很多的网络上的WEB系统是小型的服务器提供的,甚至还提供了其他的网络服务,各种服务之间可能存在漏洞,被其他人利用攻击服务器。如果我们能通过防火墙限制连接,就能提高网络的安全,同时也提升了网络的性能。
如果我们的防火墙配置得足够严密,或者说很合理的话,它还是能够抵抗一些入侵和破坏的,但是它也不能阻止所以的攻击行为,通过对状态检测防火墙的配置和调试,我们发现很多的网络安全的隐患并不是网络上的攻击行为,并不是说网络攻击攻不备威胁性的,很多的网络威胁是因为网络管理人员的疏忽,以及防火墙配置的不严密,造成防火墙本身的漏洞,如果网络安全意识提高了,很多的网络的攻击行为是可以避免的。
关键字: 防火墙 状态检查 包过滤
前言
人们使用通信技术把各个角落的计算机连接起来,达到资源共享的目的,产生了网络。网络的发展更让人们更快的认识和改变世界,而网络的发展,使以前不由单一计算机完成的工作变成现实,随之而来的问题产生了——网络安全受到威胁。
如何有效地保护服务器的安全成了新的问题,当然很多的人选择了使用硬件防火墙,保护内部网络和服务器的安全,也有人使用专业级防火墙软件。还有很多的人使用了其它的安全措施,使用入侵检测系统等。对于小型企业或者个人用户来说这些都是不现实的,今天我们来研究一种简单的由一定效果的网络安全的措施。
服务器的配置
对于这个系统,使用的是Fedora Linux Core 6 系统平台,防火墙软件为系统自带的iptables软件。尽量使用高版本的、漏洞少的软件或者源码,还要及时的更新升级软件,或者下载新的软件的补丁,降低软件本身的安全隐患。
详细设计
一般的服务器都是放在机柜中的,我们在管理时不能像本地服务器一样管理,大多数采用远程登陆管理, Ssh服务采用密文数据传输,开启22端口,即使数据被截获,对服务器也无法构成威胁,所以一般对于linux的远程管理多采用ssh的远程登陆方式。如果我们使用的是windows客户端远程管理,使用putty软件,大小只有几百K。如果使用的linux远程管理,则直接使用ssh命令就可以了。
本机服务器上有很多的默认端口都守护在127.0.0.1上,本机客户机要访问回环设备时也会被拒绝。如果不打开回环设备的通道,会影响服务器正常运行,回环设备是不能被别人访问的,我们可以放心的开放这些端口。
对于一个网络服务器都眼DNS服务,任何一个连网的主机都需要做DNS解析请求,当前服务器不能解析。当需要解析客户机地址或者其他服务器地址时,导致服务器变慢,因为它无法发送包给DNS服务器,数据包超时,大部分DNS服务器使用UDP协议的53端口,应该为服务器增加DNS通道。
配置防火墙:
服务器的防火墙主要是对INPUT链和OUTPUT链进行适当的设置,允许正常的服务通过,跟踪服务,并记录日志。
配置过程:
配置iptables的思路是先ACCEPT再DROP。
1、更改链的默认的策略:
#iptables –P INPUT DROP
#iptables –P OUTPUT DROP
#iptables –P FORWARD DROP
2、增加新的规则
远程管理:
#iptables -A INPUT –p tcp –d 10.1.15.34 - –dport 22 –j ACCEPT
#iptables –A OUTPUT –p tcp –s 10.1.15.34 - -sport 22 –j ACCEPT
WEB服务:
#iptables –A INPUT –p tcp - -dport 80 –j ACCEPT
#iptables –A OUTPUT –p tcp - -sport 80 –j ACCEPT
//省略IP地址 默认主机是自己
增加DNS服务规则
#iptables –A INPUT –p udp - -dport 53 –j ACCEPT
#iptables –A OUTPUT –p udp - -sport 53 –j ACCEPT
回环设备:
#iptables –A INPUT –s 127.0.0.1 –d 127.0.0.1 –j ACCEPT
#iptables –A OUTPUT –s 127.0.0.1 –d 127.0.0.1 –j ACCEPT
或者使用命令替换功能 : ^IN^OUT
使用命令查看防火墙的配置: iptables –L –n - -line-numbers
保存对防火墙的配置: service iptables save
3、状态检测
在实际的使用时,这个防火墙不够严密,存在有可能被利用的弱点。
以22端口为例:
客户机访问服务器的22端口服务时,通过INPUT链进来,服务器必须接受。在返回时,经过OUTPUT链出去时,同样是无条件允许的通过22端口的。如果服务器产生漏洞,被人或者木马、蠕虫利用,主动连接是否允许通过呢?
为了防止这种没有请求过的包从本机的22端口通过,需要为一个出去的包检查状态,检查是否是别人请求过回应别人的包。LINUX防火墙支持状态匹配检查。
#iptables –A OUTPUT –p tcp - -sport 22 –m state - -state ESTABLISHED
#iptables –A OUTPUT –p tcp - - sport 80 –m state - -state ESTABLISHED
检查包的状态是否为别人请求过的
#iptables –D OUTPUT 1
#iptables –D OUTPUT 1
4、记录日志
我们可以将信息记录,以便于日后的分析工作,使用LOG目标将防火墙的信息传给日志服务器。
#iptables –A INPUT –p tcp - -dport 22 –j LOG - -log-level 5 –log –prefix “FIREWALL:”
#iptables –A INPUT –p tcp - -dport 80 –j LOG - -log-level 5 –log –prefix “FIREWALL:”
当然我们要首先设置好日志服务器。
5、防止某些攻击
处理IP碎片:
#iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
说明:对不管来自哪里的ip碎片都进行限制,允许每秒通过100个ip碎片,该限制触发的条件是100个ip碎片。
设置ICMP过滤:
icmp包通常用于网络测试等,故允许所有的icmp包通过。但是黑客常常采用icmp进行攻击,如ping of death等,所以我们采用limit匹配扩展加以限制:
#iptables -A INPUT -p icmp -m limit --limit 6/m --limit-burst 5 -j ACCEPT
说明:对不管来自哪里的icmp包都进行限制,允许每10秒通过一个包,该限制触发的条件是5个包。
防止SYN FLOOD洪水攻击:
对于这种DDOS攻击,几乎到现在还没有什么好的办法,几乎是招招致被攻击者与死地,基于TCP协议的三次握手,原理是建立多个TCP的半连接,消耗TCP的连接池,默认是1024个,攻击的频率很高,最终造成拒绝服务攻击。IPTABLES不能用于防御这样的攻击,但是对于这样的攻击有一定的效果。
#iptables -A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/minute -j ACCEPT
至此,一个Linux平台防火墙系统就构建完成了。我们也可以在此平台安装入侵检测系统,其他的部分就没有太大的必要了,过多的软件会给系统带来负担,而且其他的系统还可能存在安全隐患。
参考文献:
《Linux防火墙(原书第3版)》Linux Firewalls(Third Edition)
出版社:机械工业出版社 作者:(美)Steve Suehring/Robert L.Ziegler
《Red Hat Enterprise Linux架站实务4.0》
出版社:清华大学出版社 作者:林晓飞/万辉/张鑫金
《 RedHatLinux 9 网络服务》
出版社:机械工业出版社 作者:SmarTraining 工作室
《计算机系统安全》
|