目录
引言:
一.iptables防火墙
1.netfilter
2.iptables
二.四表五链
2.1四表
2.2五链
2.3规则表的匹配顺序
2.4规则链之间的匹配顺序
三iptables防火墙的配置方法
1.格式
2.常用的控制类型
3.常用的管理选项
3.1 添加新的规则
3.2 查看规则表
3.3 删除、清空规则
3.4 设置默认策略
4.匹配条件
通用匹配
隐含匹配
显示匹配
四.SNAT原理与应用
实现方式:
五.DNAT原理与应用
实现方式
六.防火墙规则的备份和还原
1.导出(备份)所有表的规则
2.导入(还原)规则
总结:
在工作中我们为了防止恶意的入侵、攻击以及破环,我们都会使用防火墙进行一个物理保护,他的存在极大的保证了我们设备的安全,因此学习防火墙是非常有必要的。
概述:
注:netfilter/iptables两种称呼都可以表示linux防火墙,后期简称为iptables。
总结:表里有链,链里有规则
raw表:确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
mangle表:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
nat表:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。
filter表:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。
注:在 iptables 的四个规则表中,mangle 表和 raw 表的应用相对减少。
主机型防火墙
网络型防火墙
规则链内的匹配顺序
控制类型 作用
ACCEPT 允许数据包通过。
DROP 直接丢弃数据包,不给出任何回应信息。
REJECT 拒绝数据包通过,会给数据发送端一个响应信息。
SNAT 修改数据包的源地址。
DNAT 修改数据包的目的地址。
MASQUERADE 伪装成一个非固定公网IP地址。
LOG 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助
动作,并没有真正处理数据包。
选项 说明
-A 在指定链的末尾追加(–append)一条新的规则
-I 在指定链的开头插入(–insert)一条新的规则,未指定序号时默认作为第一条规则
-R 修改、替换(–replace)指定链中的某一条规则,可指定规则序号或具体内容
-P 设置指定链的默认策略(–policy)
-D 删除(–delete)指定链中的某一条规则,可指定规则序号或具体内容
-F 清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L 列出(–list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n 使用数字形式(–numeric)显示输出结果,如显示 IP 地址而不是主机名
-v 显示详细信息,包括每条规则的匹配包数量和匹配字节数
–line-numbers 查看规则时,显示规则的序号
基本格式:
iptables [-t 表名] -n -L [链名] [--line-numbers]
#或
iptables - [vn]L
注:若规则列表中有多条相同的规则时,按内容匹配只删除的序号最小的一条
按号码匹配删除时,确保规则号码小于等于已有规则数,否则报错
按内容匹配删数时,确保规则存在,否则报错
#基本格式
iptables [-t 表名] -p <链名> <控制类型>
匹配条件 说明
-p 指定要匹配的数据包的协议类型
-s 指定要匹配的数据包的源IP地址
-d 指定要匹配的数据包的目的IP地址
-i 指定数据包进入本机的网络接口
-o 指定数据包离开本机做使用的网络接口
–sport 指定源端口号
–dport 指定目的端口号
在编写防火墙规则时,匹配条件的设置起着决定性的作用
只有清晰、准确地设置好匹配条件,防火墙才知道对符合什么条件的数据包进行处理,避免“误杀”
对于同一条防火墙规则,可以指定多个匹配条件,表示这些条件必须都满足规则才会生效
匹配条件的设置包括以下三大类:
1.通用匹配
2.隐含匹配
3.显示匹配
协议匹配: -p协议名
地址匹配: -S源地址、-d目的地址
#可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡
–sport 1000 匹配源端口是1000的数据包
–sport 1000:3000 匹配源端口是1000-3000的数据包
–sport :3000 匹配源端口是3000及以下的数据包
–sport 1000: 匹配源端口是1000及以上的数据包
注意: --sport和–dport 必须配合-p <协议类型>使用
要求以“-m扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件
多端口匹配:编写iptables规则时使用:
“-m multiport --dports 端口列表”
“-m multiport --sports 端口列表”
P范围匹配
-m iprang --src-rang IP范围
MAC地址匹配
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP(MAC地址)
#禁止来自某MAC地址的数据包通过本机转发
状态匹配
-m state --state 连接状态
常见的连接状态有:
NEW :与任何连接无关的,还没开始连接
ESTABLISHED :响应请求或者已建立连接的,连接态
RELATED :与已有连接有相关性的(如FTP主被动模式的数据连接),衍生态,一-般与ESTABLISHED配合使用
INVALID:不能被识别属于哪个连接或没有任何状态
应用环境:局域网主机共享单个公网IP地址接入Internet
原理:修改数据包的源地址。
SNAT转换前提条件:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
内网IP 出站 外网网卡 外网IP或地址池
应用环境:在Internet中发布位于局域网内的服务器
原理:修改数据包的目的地址
转换前提条件:
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-
入站 外网网卡 外网IP
destination 192.168.80.11
内网服务器IP
iptables-save > /opt/ipt.txt
iptables-restore < /opt/ipt.txt
将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则
iptables-save > /etc/sysconfig/iptables
systemctl stop iptables #停止iptables服务会清空掉所有表的规则
systemctl start iptables #启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则
netfilter/iptables两种称呼都可以表示linux防火墙,后期简称为iptables,防火墙主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口等信息的处理上。