Linux安全—iptables详解(概念和filter表)
iptables基础知识:
Linux包过滤防火墙:通常所说的Linux防火墙本质是通过内核层面的netfilter(内核态)实现的,iptables,firewalld等其他工具是用来管理防火墙规则的管理界面工具(用户态) 包过滤防火墙特点:主要针对IP地址和端口(网络层会拆解数据包,将端口显示出来)
iptables组成(表+链+规则)
1,规则:对数据包进行过滤或处理 2,链(5种):容纳各种防火墙规则,分别为: INPUT链:处理进站数据包(场景:通常作为最终服务器/主机使用,属于filter表) OUTPUT链:处理出站数据包(场景:通常作为最终服务器/主机使用,属于filter表和nat表) FORWARD链:处理转发数据包(场景:通常作为中间设备使用,属于filter表) POSTROUTING链:在进行路由选择后处理数据包(场景:属于nat表,提供SNAT功能) PREROUTING链:在进行路由选择前处理数据包(场景:属于nat表,提供DNAT功能) 总结:因为路由选址是通过目的IP进行的,所以DNAT需要先转化地址再匹配路由,所以通过PREROUTING实现,反之SNAT属于POSTROUTING 3,表(4种):容纳各种链,这里仅介绍常使用的nat表和filter表 raw:是否对数据进行状态跟踪 mangle:为数据包设置标记 nat:提供SNAT/DNAT功能(常用) filter:对数据进行过滤(常用)
iptables匹配顺序和匹配原则:
匹配顺序: 表的匹配顺序:raw-mangle-nat-filter 链的匹配顺序: 入站数据:PREROUTING-INPUT 出站数据:OUTPUT-POSTROUTING 转发数据:PREROUTING-FORWARD-POSTROUTING 匹配原则: 按顺序依次检查,匹配既停止(LOG策略除外),若未匹配到符合的规则,则按照该链的默认规则处理(全局允许/全局拒绝)
iptables命令语法:
语法:iptables [-t 表名] [选项] [链名] [条件] [-j 控制类型]
举例:iptables -I INPUT -s 192.168.1.34 -j drop(限制源IP为192.168.1.34的主机访问)
iptables书写注意事项:
1,如果不指定表,默认使用filter表,不指定链名的时,默认指表内的所有链 2,选项,表名和控制类型需要大写,其他小写 3,除非设置链接的默认规则,否则必须指定匹配条件
数据包的控制类型分类:
ACCEPT:允许数据包通过(常用) DROP:直接丢弃数据包,没有提示信息(常用) REJECT:拒绝数据包通过,必要时给出提示信息 LOG:记录日志,匹配不停止,仍然往下匹配其他规则
iptables常见参数及含义:
规则查询: -L:列出所有的规则条目 -n:以数字形式显示地址,端口等信息 -v:以更详细的方式显示规则信息 注意:通常-nvL参数一起使用 –line-numbers:显示规则的序号,也可以直接使用–line
规则添加:
t:指定表,如果不指定,默认是filter表 -I:指定链,规则会添加到链的开头(常用) -A:指定链,规则会添加到链的结尾 举例:
iptables -I INPUT -s 192.168.1.1 -p icmp -j DROP 添加一条INPUT方向,拒绝源地址是192.168.1.1的icmp协议的规则
设置默认规则: -P:为指定的链设置默认规则(匹配的最后一条,一般为全拒绝)
举例:iptables -P INPUT ACCEOT (可以不指定选项和使用-j参数)
修改规则链的默认规则:可以直接使用-P参数
举例:iptables -P INPUT DROP
规则删除:
D:删除链内指定序号的一条规则 -F:清空所有的规则 举例:
iptables -D INPUT 1 删除INPUT链种序号为1的规则
规则的匹配条件分类:
通用匹配:可直接使用,不依赖其他条件或者拓展(包括网络协议,IP地址等) 协议匹配:-p 协议名 地址匹配:-s 源地址 -d 目的地址 接口匹配: -i 入站网卡 -o出站网卡
举例:本地PC(IP:192.168.1.1)去ping远程主机(IP:192.168.1.34)
未设置规则前:可以ping通192.168.1.34且可以抓到192.168.1.1的数据包 设置规则后:iptables -I INPUIT -s 192.168.1.1 -p icmp -i ens33 -j DROP 测试:无法正常ping通192.168.1.34且只能抓取到请求192.168.1.1的数据包,没有返回包,说明数据包被直接丢弃了
隐含匹配:要求以特定的协议匹配作为前提(包括端口,TCP标记等)
接口匹配:-sport 源端口 -dport 目的端口(需要和-p条件一起使用,指定协议) 和通用匹配一致:未设置规则前:
设置规则后:无法正常tcping通192.168.1.34的80端口且只能抓取到请求192.168.1.1的数据包,没有返回包,说明数据包被直接丢弃了
命令: iptables -I INPUT -s 192.168.1.1 -p tcp --dport 80 -j DROP
显式匹配:要求以-m扩展模块的形式明确指出类型(包括多端口,MAC地址。数据包状态等)
常用参数: -m state --state链接状态
常用命令:iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT 允许TCP连接状态为ESTABLISHED的链接
iptables的nat表的SNAT和DNAT应用:
因为iptables的SNAT和DNAT的知识较多,详细写在文章Linux安全—iptables(nat表)中,可点击链接查看
总结:
Linux防火墙iptables不管是在运维,还是安全场景(基线核查,应急响应等)中使用都是很多的,本篇文章内容主要为iptables的基础介绍和常用表中filter表的介绍,主要书写思路为概念介绍—例子说明—截图说明,希望对大家有所帮助,文章也会持续进行更新和完善。
|