Linux防火墙的概念与企业中的应用
Linux防火墙的概念
Linux防火墙其实并不是特别专业的叫法,我们所说的Linux防火墙其实是指的是Linux下的Netfilter/iptables。Netfilter/iptables是Linux内核集成的IP信息包过滤系统。
虽然Netfilter/iptables IP信息包过滤系统可以当做一个整体对待,但其实它们是该过滤系统的两个组件,Netfilter是内核的模块实现,iptables是上层的操作工具。Netfilter是Linux核心中的一个通用架构,运行在内核空间(kernel space)。iptables提供了一系列的表(tables),每个表都是由若干个链(chains)组成,而每个链可以由一条或数条规则(rule)组成·(我们常用的是三表五链),其规则又是由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。它运行在用户空间(user space)中,现在的发行版本中有默认的安装。
Netfilter/iptables的最大优点是它可以配置有状态的防火墙。有状态的防火墙能够指定并记住为发送或接受信息包所建立的连接状态。防火墙可以从信息包的连接跟踪状态中获取该信息。在决定过滤新的信息包时,防火墙所使用的这些状态可以提高其效率和速度。有四种有效状态,其名称分别为:ESTABLISHED、INVALID、NEW和RELATED.
- ESTABLISHED:表示该信息包属于已建立的连接,该连接一直用于发送和接受信息包并且完全有效.
- INVALID:表示该信息包与任何已知的流或连接都不相关联,它可以包含了错误的数据或头。
- NEW:表示该信息包或即将启动新的连接,或者它尚未用于发送和接收信息包的连接相关联。
- RELATED:表示该信息包正在启动新连接,以及它已建立的连接相关联的连接。
由于iptables的状态在iptables脚本中用的比较多,要多注意者这方面的知识。
Netfilter/iptables的另一个优点是:它使得用户可以完全控制防火墙的配置和信息包过滤,可以通过定制规则来满足自己的特定需求,从而只允许自己想要的网络流量进入系统。
另外,Netfilter/iptables是免费的,这可以极大的节省费用,这一点对很多人有很大的诱惑力,可以替代昂贵的防火墙解决方案。iptables和Netfilter的确存在差别,尽管它们尽管被用来相互替换使用,Netfilter是用来实现Linux内核中防火墙和Linux内核空间程序代码段,它要么被直接编译进内核,要么被包含在模块中,而iptables是用来管理Netfilter防火墙的用户程序,一般大家都习惯将Netfilter/iptables简称为iptables。
Linux防火墙在企业中的应用
Linux防火墙(即Netfilter/iptables IP过滤系统)在企业中的应用非常广泛,主要应用在:
- 对于IDC机房的服务器,可以使用Linux防火墙来代替硬件防火墙,由于IDC机房的机器一般是没有硬件防火墙的,因此开源免费的iptables是一个性价比不错的选择。
- 在各大云计算平台下,都有“安全组”的存在,其原理与iptables极为类似,但是底层具体是如何实现的我们就不得而知了。
- 利于iptables来作为企业的NAT路由器,从而代替传统路由器提供企业内部员工上网只用,在节约成本和进行有效控制上,Linux防火墙确实有它独有的优势。
- 结合Squid作为企业内部上网的透明代理。传统的代理需要在浏览器里配置代理服务器信息,而iptables结合Squid的透明代理则可以把客户端的请求重定向到代理服务器的端口,让客户感知不到代理的存在,当然,客户端也无法做任何设置。
- 用于外网IP向内网IP映射。我们可以假设有一家ISP提供园区Internet接入服务,为了方便管理,该iSP分配给园区用户的IP地址都是内网IP,但是部分用户要求建立自己的web服务器对外发布信息,这时可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过IP映射使发给其中一个IP地址的包转发至内部用户的web服务器上,这样内部的web服务器也就可以对外提供服务了,这种形式的NAT一般称为DNAT。
- 防止轻量级的DOS攻击,比如ping攻击以及SYN洪水攻击,我们利用iptables来做相关安全策略还是很有效果的。