Linux 防火墙
netfilter 内核态
iptables 用户态
位于 /sbin/iptables
了解fireworks防火墙
链—>表
iptables链
INPUT
OUTPUT
FORWARD
以下多用于NAT
POSTROUTING
PREROUTING
iptables的4个默认规则表
raw:是否进行状态跟踪
mangle:为数据包设置标记
nat:地址转换
filter:实现包过滤
规则表的结构
raw表包括:PREROUTING链和OUTPUT链
mangle表包括:PREROUTING链,POSTROUTING链,INPUT链,OUTPUT链,FORWARD链。
nat表包括:PREROUTING链,POSTROUTING链,OUTPUT链
filter表包括:INPUT链,FORWARD链,OUTPUT链
规则表的优先顺序
依次为raw表---->mangle表---->nat表---->filter表
规则链的匹配顺序:
入站:PREROUTING表—>INPUT表
出站:OUTPUT表—>POSTROUTING表
转发:PREROUTING —>FORWARD—>POSTROUTING
iptables命令格式:iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 目标动作]
不指定表名默认为filter表
不指定链名默认选中该表中所有链
iptables命令管理选项
-A 在链尾追加一条新的规则
-I 在指定位置(默认插在链首)插入一条新的规则
-R 修改或替换指定位置的内容
-P 设置默认策略
列表查看规则
-L 列表查看各条规则
–line-numbers 查看时显示序号
-n 已数字形式显示ip,端口等
-v 显示数据包以及字节数等
清除规则:
-D 删除指定位置或内容的规则
-F 清空所有规则
自定义规则链
-N 自定义一条链
-X 删除自定义链
设置匹配数据包的条件
通用条件匹配
可直接是用,不依赖其他条件或者扩展模块
包括网络协议,IP地址,网络接口等匹配方式
协议匹配
-p协议名
协议名可使用在/etc/protocols文件中定义
常用协议包括tcp udp icmp ip
地址匹配
使用-s 源地址 -d 目标地址的形式
地址可以为单个也可以为网段
接口匹配
使用-i 网络接口名 -o网络接口名的形式,分别对应接收,发送数据包的网络接口
隐含条件匹配
一般需要前提条件
包括端口号,TCP标记,ICMP类型等匹配方式
端口匹配
使用–sport --dport的形式
可以是一个范围采用端口1:端口2的形式指定一个端口范围
ICMP类型匹配
使用–icmp-type ICMP类型的形式
ICMP类型可以使用类型字符串或者相对应的数值.例如Echo-Request Echo-Reply等
TCP标记
使用–tcp-flags 检查范围 被标记范围的形式
如–tcp-flags SYN,RST,ACK SYN -j REJECT 表示检查SYN,RET,ACK,只有SYN为1时满足条件
显式条件匹配
需要-m扩展模块的形式明确指定匹配方式
包括多端口,MAC地址,地址范围,数据包状态等匹配方式
MAC地址匹配
使用-m mac 结合–mac-source MAC地址的形式
多端口匹配
使用-m multiport结合–sport 源端口列表或者–dport目标端口的形式
IP地址范围匹配
使用-m iprange 结合 --src-range 源地址范围 或 --dst-range目标ip范围
以 - 连接起始ip和结束ip
数据包状态匹配
使用-m state 结合 --state 状态的形式
常见数据包状态NEW ,ESTABLISHED,RELATED INVALID
导入导出防火墙规则
导出规则:
iptables-save
结合重定向符号 > 进行保存
iptables-savs >/etc/sysconfig/iptables
导入规则:
iptables-restore
使用 < 符号
iptables-restore < /etc/sysconfig/iptables