《Linux系统安全:纵深防御、安全扫描与入侵检测 》 —2.2 利用iptables构建网络防火墙

华章计算机 发表于 2019/11/14 11:08:36 2019/11/14
【摘要】 本节书摘来自华章计算机《Linux系统安全:纵深防御、安全扫描与入侵检测》一书中第2章,第2.2.1节,作者是胥峰。

2.2 利用iptables构建网络防火墙

Linux系统提供了iptables用于构建网络防火墙,其能够实现包过滤、网络地址转换(Network Address Translation,NAT)等功能。为iptables提供这些功能的底层模块是netfilter框架(Netfilter项目的官方网站是https://www.netfilter.org)。Linux中的netfilter是内核中的一系列钩子(Hook),它为内核模块在网络栈中的不同位置注册回调函数(Callback Function)提供了支持。数据包在协议栈中依次经过这些在不同位置的回调函数的处理。

2.2.1 理解iptables表和链

netfilter钩子与iptables表和链的处理顺序如图2-1所示。

 

 image.png

图2-1 netfilter钩子与iptables表和链的处理顺序

netfilter有5个钩子可以提供程序去注册。在数据包经过网络栈的时候,这些钩子上注册的内核模块依次被触发。这5个钩子的处理时间如下。

NF_IP_PRE_ROUTING:在数据流量进入网络栈后立即被触发,这个钩子上注册的模块在路由决策前即被执行,如图2-1中屗镜慕锥巍?

NF_IP_LOCAL_IN:这个钩子在路由判断确定包是发送到本机时执行,如图2-1中嵥镜慕锥巍?

NF_IP_FORWARD:这个钩子在路由判断是需要转发给其他主机时执行,如图2-1中的幩镜慕锥巍?

NF_IP_LOCAL_OUT:这个钩子在本机进程产生的网络被送到网络栈上时执行,如图2-1中徦镜慕锥巍?

NF_IP_POST_ROUTING:这个钩子在数据包经过路由判断即将发送到网络前执行,如图2-1中愃镜慕锥巍?

iptables中有以下5个链(Chain)。

PREROUTING:NF_IP_PRE_ROUTING钩子触发。

INPUT:NF_IP_LOCAL_IN钩子触发。

FORWARD:NF_IP_FORWARD钩子触发。

OUTPUT:NF_IP_LOCAL_OUT钩子触发。

POSTROUTING:NF_IP_POST_ROUTING钩子触发。

iptables中有5种表(Table):

filter表。iptables中使用最广泛的表,作用是进行过滤,也就是由filter表来决定一个数据包是否继续发往它的目的地址或者被拒绝丢弃。

nat表。顾名思义,nat表用于网络地址转换,可以改变数据包的源地址或者目的地址。

mangle表。用于修改IP的头部信息,如修改TTL(Time to Live)。

raw表。为iptables提供了一种不经过状态追踪的机制,在大流量对外业务的服务器上使用这个表可以避免状态追踪带来的性能问题。

security表。提供在数据包中加入SELinux特性的功能。在实际应用中,security一般不常用,因此在下面的章节中不再包含这一部分内容。

通过以上分析,我们知道netfilter仅仅有5个钩子,而iptables有5个链和5种表,由此可见在一个钩子上可能有多个表的不同链需要处理,如图2-1中的raw表、mangle表、filter表都有POSTROUTING链,这些不同表中的链根据自己向内核注册时的优先级(priority)依次处理。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。