Linux作为操作系统来说,安全性要比Windows高出许多。也是众多服务器操作系统选择其的原因。今天,我就谈谈Linux是通过哪些技术来保障服务器的安全,通过Linux防火墙来加强对网络的访问控制。
Linux内置防火墙主要是通过包过滤的手段来提高对网络的管理控制功能,从而提高网络与服务器的安全。
一、 Linux防火墙的工作原理
我们设想一下,一台Linux主机一般会作哪些数据包相关的工作。其实,我们可以把一台Linux形象的比喻成一个地铁车站。一个地铁车站一般有三个口子,一个是进口,乘客需要去做地铁的话,必须通过这个地铁的进口,而且必须凭合法的票子才能进去。第二个是出口,若乘客需要离开地铁站的话,则也必须凭着票子出站。三是一个中转的接口,也就是说,在地铁的中转站中,你可以直接通过过道到另外一条线上去。
而一台Linux主机也有三个口子。一个是进口(INPUT),到这台主机的任何数据包都需要通过这个接口才能够进入Linux系统的应用程序空间。第二个是出口(OUTPUT),从应用程序发送出去的任何数据包都必须通过这个出口,才能够进入到Linux系统的内核,让它把数据发送出去。第三个是转发接口(FORWARD),主要用来进行数据包的转发。
在Linux主机上要实现包过滤,其实也就是在这三个口子上添加包过滤条件。这就好像在每个口子上设置“验票员”。当“乘客”手里的票是合法的,则“验票员”就允许其通过;若这票是不允许的,则“验票员”就会拒绝其通过这个口子。通过这种方式,我们网络管理员就可以很好的管理网络中传递的数据包,并且对于一些服务器的防问权限进行合理且有效的控制。
如有时候我们为了防止DDOS攻击,我们就可以设置让所有主机都拒绝ICMP协议。如此的话,任何一台主机企图ping局域网内的任何一台Linux电脑的话,局域网内的任何主机都不会有响应。而若有黑客把局域网内的主机当作肉鸡,企图通过他们来实现DOS攻击的时候,由于我们在出站接口(OUTPUT接口)过滤了ICMP协议,所以,这个PING命令也根本不会传递到局域网中去。如此的话,就可以从根源上保护网络的安全。
二、 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操作系统自带的防火墙来提高网络的管理控制功能呢?具体的来说,我们可以分三步走。一是先在Linux服务器上开一个后门,这个后门是专门给我们网络管理员管理服务器用的。二是把所有的进站、出站、转发站接口都关闭,此时,只有通过我们上面开的后门,管理员才能够远程连接到服务器上,企图任何渠道都不能连接到这台主机上。三是根据我们服务器的用途,把一些需要用到的接口开放出去。
下面笔者就以一个WEB服务器为例,谈谈如何设置防火墙,才能够提高这台服务器的安全性,并且,在提高安全性的同时,也不影响我们网络管理员对其的访问控制。
第一步:开后门
网络管理员一般是通过SSH方式来管理Linux操作系统。所以,我们首先需要开一个后门,允许网络管理员通过SSH方式远程登录到服务器,对这台服务器进行必要的维护与管理。
为了达到这个目的,我们可以利用两条语句来实现。我们这里假设我们WEB服务器的IP地址为192.168.0.2。
Iptables –A INPUT –P tcp –d 192.168.0.2 –dport 22 –j ACCEPT
Iptables –A OUTPUT –P tcp –S 192.168.0.2 –dport 22 –j ACCEPT
第一条语句的意思是,在进站接口上,允许网络管理员通过TCP协议与22号端口,访问主机。一般SSH方式采用的就是22号端口与TCP协议。这条语句的作用就是让网络管理员可以连接到WEB服务器上去。但是,这还不够,我们若想要远程管理WEB服务器的话,则就需要实现相互交互的功能。也就是说,我们还需要WEB服务器能够给我们回应一些消息。此时,我们就还需要配置第二条语句。
上面第二条语句的意识就是允许WEB服务器通过22号端口与TCP协议,发送一些数据出去。如此的话,我们网络管理员就可以受到WEB服务器的一些回应信息。
第二步:关闭所有接口
Iptables –P INPUT –j DROP
Iptables –P OUTPUT –j DROP
Iptables –P FORWARD –j DROP
以上三条命令的作用就是把WEB服务器上的三个接口全部关闭。但是,此时因为我们在第一步开了一个后门,所以,事后网络管理员仍然可以通过SSH这个方式登录到服务器上去,对其进行远程访问。采用这些命令把各个接口关闭后,我们就无法通过HTTP、FTP等方式访问服务器。
第三步:分析服务器的用途并添加允许条件
把各个接口关不后,我们还需要为其添加一些必要的条件,允许某些特定类型的数据包通过。否则的话,其他人不是不能通过网络访问WEB服务器,那不是白搭了吗?
所以,接下去的任务,我们就是需要分析服务器的类型。我们现在配置的是一台WEB服务器,而WEB服务器一般是通过HTTP方式与80端口进行访问的。默认情况下,其用到的就是TCP协议与80端口。所以,我们只需要在进口与出口上,允许协议是TCP、端口号是80的数据包通过,就可以实现我们的目标了。
Iptables –A INPUT –P tcp –d 192.168.0.2 –dport 80 –j ACCEPT
Iptables –A OUTPUT –P tcp –S 192.168.0.2 –dport 80 –j ACCEPT
通过如上的配置,就可以实现我们的需求
四、 Linux防火墙的配置需要注意的地方
在使用Linux防火墙来管理企业网络的时候,笔者给大家提一些建议。
一是根据最小权限的安全与控制设计原则,我们在防火墙设计的时候,需要先把所有的接口先全部禁用掉。然后,再根据服务器的类型,添加一些允许数据包通过的语句。如此的目的,是为了保障服务器上只允许一些特定的协议与数据包通过。如此做的话,就可以最大限度的保障服务器与企业网络的安全。如通过上面如此配置的服务器,无法使用FTP协议访问服务器,也就杜绝了非法访问者企图利用FTP漏洞来攻击WEB服务器。同时,也禁止了ICMP协议,如此的话,就可以有效的防止DDOS攻击等等。
二是有时候会碰到应用程序与防火墙无法协作的问题。如在Linux服务器上部署一个ERP服务器,若同时打开了防火墙的话,则可能就无法连接上服务器。其实,这不是防火墙或者ERP服务器产生了什么冲突,而是我们没有配置好防火墙而已。一般情况下,笔者建议先把防火墙禁用掉,把ERP服务器先配置成功、其他用户可以连接上服务器后,再启用防火墙。在启用防火墙的时候,我们需要清楚,这个ERP服务器到底采用了哪些协议与端口来进行数据包的传递,然后再配置防火墙。大部分的时候,都是因为我们不熟悉某个服务器到底在采用哪些协议与端口,才造成客户端连接的错误。
【编辑推荐】