当前位置:首页 > 行业动态 > 正文

如何有效利用Linux进行包过滤?

Linux 包过滤通常使用 iptables 或 nftables 工具进行配置,以控制网络流量。

Linux 包过滤

Linux下的包过滤软件主要是iptables,它位于用户空间,通过命令操作netfilter来实现网络数据包的处理和转发,Netfilter位于内核空间,是真正管理网络数据包的模块,Iptables包括“表(tables)”、“链(chain)”和“规则(rules)”三个层面。

如何有效利用Linux进行包过滤?  第1张

一、iptables的表、链结构

1、规则链:规则的作用是对数据包进行过滤或处理,链的作用是容纳各种防火墙规则,链的分类依据是处理数据包的不同时机。

2、五链:默认包括5种规则链,分别是INPUT(处理入站数据包)、OUTPUT(处理出战数据包)、FORWARD(处理转发数据包)、POSTROUTING(在进行路由选择后处理数据包)和PREROUTING(在进行路由选择前处理数据包)。

3、规则链之间的顺序:入站:prerouting–>input;出站:output->postrouting;转发:prerouting->forward->postrouting。

4、规则链内部各防火墙规则之间的顺序:按顺序依次检查,匹配即停止(log策略例外),若找不到相匹配的规则,则按该链的默认策略处理。

5、规则表:表的作用是容纳各种规则链,表的划分依据是防火墙规则的作用相似。

6、四表:默认包括4个规则表,分别是raw表(确认是否对该数据包进行状态跟踪)、mangle表(为数据包设置标记)、nat表(修改数据包中的源、目标IP地址或端口)和filter表(确定是否放行该数据包)。

7、规则表之间的顺序:raw–>mangle–>nat–>filter。

8、规则表与链的关系:filter表内建有三条链:INPUT、OUTPUT、FORWARD。

二、使用iptables工具

1、iptables安装:通常在Linux发行版中已经预装了iptables,如果没有,可以使用包管理器进行安装,在Debian/Ubuntu系统中,可以使用sudo apt-get install iptables进行安装。

2、iptables的基本语法:iptables [选项] [链] [规则],添加一条规则允许所有来自特定IP的数据包通过,可以使用iptables -A INPUT -s 192.168.1.100 -j ACCEPT,查看当前规则列表可以使用iptables -L。

3、添加新的规则:使用-A选项可以向指定链添加新规则。iptables -A FORWARD -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT表示接受所有新的和已建立的TCP连接,目标端口为80的数据包。

4、查看规则列表:使用iptables -L可以列出所有链的规则,加上-v参数可以看到详细信息,如数据包计数等。

5、设置默认策略:使用-P选项可以为链设置默认策略。iptables -P INPUT DROP表示丢弃所有进入INPUT链的数据包。

三、规则的匹配条件

1、匹配类型:通用匹配、隐含匹配和显式匹配。

2、常见的通用匹配条件:协议匹配(-p)、地址匹配(-s/-d)、接口匹配(-i/-o)。

3、常用的隐含匹配条件:端口匹配(–sport/–dport)、TCP匹配(–tcp-flags)、ICMP匹配(–icmp-type)。

4、常用的显式匹配:多端口匹配(-m multiport –sport)。

四、iptables命令行参数解说

1、-t:指定要操纵的表,默认条件下是filter表。

2、-A:向链中添加规则条目。

3、-D:从链中删除规则条目。

4、-i:向链中插入规则条目。

5、-R:替换链中的规则条目。

6、-L:显示链中已有的规则条目。

7、-F:清空链中选择的规则条目,如果后面不跟参数代表所有规则。

8、-N:创建新的用户自定义链。

9、-X:删除用户定义链,不过必须是这个链里面的规则都被清空了才能删除。

10、-E:为用户自定义的链重命名。

11、-P:定义链中规则的默认目标。

12、-p:指定要匹配的数据包协议类型。

13、-s:指定要匹配的数据包源IP地址。

14、-j:指定指定的目标执行规则,如accept接收数据包,DROP丢弃数据包,REDIRECT重定向,SNAT源地址转换,DNAT目标地址转换,还有MASQUERADE,LOG等动作。

15、-i:指定数据包进入本机的网络接口。

16、-o:指定数据包要离开本机所使用的网络接口。

五、FAQs

1、什么是iptables?:Iptables是一个配置Linux内核防火墙的命令行工具,用于设置、维护和检查IP数据包过滤规则,它提供了一种机制来制定各种规则以决定不同数据包的命运,这些规则可以在数据包进入、离开或通过Linux系统时应用,Iptables功能强大且灵活,支持多种匹配条件和动作,可以满足复杂的网络需求。

2、如何更改iptables规则的顺序?:Iptables规则的顺序非常重要,因为数据包会根据规则的顺序依次进行匹配,如果需要更改规则的顺序,可以使用-R选项替换现有规则,或者使用-D选项删除规则后再用-A或-I重新添加,调整规则顺序时要小心,以免意外阻止合法流量或允许反面流量,建议在修改规则前备份当前的iptables配置,以便出现问题时可以恢复。

Linux下的包过滤主要通过iptables实现,它提供了丰富的功能和灵活性,适用于各种网络环境和安全需求,掌握iptables的使用对于保障网络安全至关重要。

小伙伴们,上文介绍了“linux 包过滤”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

0