Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1285853
  • 博文数量: 273
  • 博客积分: 5865
  • 博客等级: 准将
  • 技术积分: 3280
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-11 10:01
文章分类

全部博文(273)

文章存档

2015年(33)

2014年(11)

2013年(11)

2012年(136)

2011年(32)

2010年(50)

分类: LINUX

2012-07-30 14:42:38

一、Linux防火墙的工作原理

我们设想一下,一台Linux主机一般会作哪些数据包相关的工作。其实,我们可以把一台Linux形象的比喻成一个地铁车站。一个地铁车站一般有三个口子,一个是进口,乘客需要去做地铁的话,必须通过这个地铁的进口,而且必须凭合法的票子才能进去。第二个是出口,若乘客需要离开地铁站的话,则也必须凭着票子出站。三是一个中转的接口,也就是说,在地铁的中转站中,你可以直接通过过道到另外一条线上去。

而一台Linux主机也有三个口子。一个是进口(INPUT),到这台主机的任何数据包都需要通过这个接口才能够进入Linux系统的应用程序空间。第二个是出口(OUTPUT),从应用程序发送出去的任何数据包都必须通过这个出口,才能够进入到Linux系统的内核,让它把数据发送出去。第三个是转发接口(FORWARD),主要用来进行数据包的转发。

在Linux主机上要实现包过滤,其实也就是在这三个口子上添加包过滤条件。这就好像在每个口子上设置“验票员”。当“乘客”手里的票是合法的,则“验票员”就允许其通过;若这票是不允许的,则“验票员”就会拒绝其通过这个口子。通过这种方式,我们网络员就可以很好的网络中传递的数据包,并且对于一些的防问权限进行合理且有效的控制。

如有时候我们为了防止DDOS攻击,我们就可以设置让所有主机都拒绝ICMP。如此的话,任何一台主机企图ping局域网内的任何一台Linux电脑的话,局域网内的任何主机都不会有响应。而若有黑客把局域网内的主机当作肉鸡,企图通过他们来实现DOS攻击的时候,由于我们在出站接口(OUTPUT接口)过滤了ICMP,所以,这个PING命令也根本不会传递到局域网中去。如此的话,就可以从根源上保护网络的安全。

二、Linux防火墙的开启与关闭方法

1) 重启后生效

开启: chkconfig iptables on

关闭: chkconfig iptables off

2) 即时生效,重启后失效

开启: service iptables start

关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,

修改/etc/sysconfig/iptables 文件,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

三、Linux防火墙的配置方法

Linux防火墙基本上是通过一条iptables命令来实现具体的配置。如我们现在为了防止局域网内的机器使用ping命令。这是一种很好的防止 DDOS攻击的方法。应为要实现DDOS攻击的话,则首先需要在局域网内部寻找肉鸡,让多台肉鸡同时采用PING命令PING服务器,直到服务器因为资源耗竭而当机。现在若把所有Linux主机的PING命令都禁用掉的话,则就可以最大程度的防治DDOS攻击的危害。

Iptables –A OUTPUT –P icmp –j DROP

通过这条命令,就可以实现禁用本机的PING命令。

命令iptables就是防火墙包过滤策略的配置命令。防火墙的过滤规则,就是通过这个简单的命令来实现的。后面的参数-A则表示添加一个过滤条件;-P表示一种协议类型;-J表示我们的目标。上面的这条命令的意思就是在Linux主机的出口上,加上一条过滤语句,当数据包的协议类型是ICMP的话,则全部丢弃。

不过ICMP有一个特性。我们一般PING一台主机的话,则对于这台主机来说,首先其需要通过进站接口,把数据包传递到上层;然后,又要利用出站接口,把回应信息发送出去。如果任何一个接口不通,如只收到信息而没有回应的话,则对与主ping方来说,就显示的是目的地不可大的信息。

以上这个条命令我们是在出口上加了限制语句,上面我们说过,一共可以在Linux主机上的三个接口,包括进站进口、出站接口与转发接口,在内的任何一个接口上配置包过滤条件,以实现对防火墙的管理控制。在下面例子中,笔者将给大家举一个WEB服务器的例子,看看如何通过Linux主机的防火墙来管理 WEB服务器,提高其安全性。

四、Linux防火墙的配置注意事项

在使用Linux防火墙来管理企业网络的时候,笔者给大家提一些建议。

一是根据最小权限的安全与控制设计原则,我们在防火墙设计的时候,需要先把所有的接口先全部禁用掉。然后,再根据服务器的类型,添加一些允许数据包通过的语句。如此的目的,是为了保障服务器上只允许一些特定的协议与数据包通过。如此做的话,就可以最大限度的保障服务器与企业网络的安全。如通过上面如此配置的服务器,无法使用FTP协议访问服务器,也就杜绝了非法访问者企图利用FTP漏洞来攻击WEB服务器。同时,也禁止了ICMP协议,如此的话,就可以有效的防止DDOS攻击等等。

二是有时候会碰到应用程序与防火墙无法协作的问题。如在Linux服务器上部署一个ERP服务器,若同时打开了防火墙的话,则可能就无法连接上服务器。其实,这不是防火墙或者ERP服务器产生了什么冲突,而是我们没有配置好防火墙而已。一般情况下,笔者建议先把防火墙禁用掉,把ERP服务器先配置成功、其他用户可以连接上服务器后,再启用防火墙。在启用防火墙的时候,我们需要清楚,这个ERP服务器到底采用了哪些协议与端口来进行数据包的传递,然后再配置防火墙。大部分的时候,都是因为我们不熟悉某个服务器到底在采用哪些协议与端口,才造成客户端连接的错误。

 

CentOS 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页。因为以前部署在Win Server的VPS,Linux开发时也只用到localhost,所以就有点头大。
好吧,G一下网上有说是防火墙的问题,敲入
/etc/init.d/iptables stop
关闭之后再次查看114.80.*.*:8080(即ip:8080)发现果然成功。但是貌似安全隐患大大增加……使用
/etc/init.d/iptables status
查看防火墙信息,可以看到打开的端口。那么我们把需要使用的端口打开应该是一个比较可行的办法了,命令如下:
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT #8080为指定端口
/etc/init.d/iptables restart #重启防火墙以便改动生效,当然如果不觉得麻烦也可重启系统(命令:reboot)
/etc/rc.d/init.d/iptables save #将更改进行保存
当然了,还有另外直接在/etc/sysconfig/iptables中增加一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
永久关闭防火墙
chkconfig –level 35 iptables off #此方法源自网络,未实验,安全考虑拒绝使用此方法

阅读(968) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~