1 iptalbes
1.1 概念
防火墙(Firewall
)是一种隔离技术,用于安全管理与筛选的软件和硬件设备,使计算机内网和外网
分开,可以防止外部网络用户以非法手段通过外部网络进入内部网络,保护内网免受外部非法用户的侵入。
1.2 SELinux
SELinux是Linux系统特有的安全机制。因为这种机制的限制太多,配置也特别烦琐,所以没有人真正应用它。安装完系统,我们一般都要把SELinux关闭,以免引起不必要的麻烦。
临时关闭:
# 临时关闭SELinux的方法为
setenforce 0
# 检查
getenforce # Permissive
持久化关闭:更改配置文件/etc/selinux/config
,需要把SELINUX= enforcing
改成SELINUX=disabled
SELINUX=disabled
# 必须重启,才能生效
1.3 netfilter
linux2.4.x系列之后引入的安全子系统。使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能,位于Linux内核中的包过滤功能体系,称为Linux防火墙的“内核态
”。
1.4 iptables
安全框架:netfilter,因为netfilter处于Linux的内核中,要和它进行交互,需要一个工具,这个工具就是iptables。 所以iptables的作用:帮助用户建立一个免费的防火墙策略,位于/sbin/iptables
,用来管理防火墙规则的工具,称为Linux防火墙的用户态。

1.5 五元组
定义:五元组是通信术语,网路访问的五要素。通常是
- 源IP地址
- 源端口
- 目的IP地址
- 目的端口
- 传输协议
包过滤原理:
1.6 iptable安装
注意
- firewalld一定关闭(关闭服务,关闭开机自启)
- systemctl stop firewalld
- systemctl disable firewalld
- systemctl status firewalld
1)下载
yum search iptables
2)安装
yum install -y iptables-services #自动安装相关依赖
yum install -y iptables iptables-services
3)启动iptables服务
systemctl start iptables #启动iptables服务
systemctl status iptables #查看iptables状态
systemctl enable iptables #设置iptables开机启动
4)测试
# 查看默认filter表以列表和数字形式显示规则信息
iptables -nL
# 查看默认nat表
iptables -t nat -nL
2 四表五链
表:table,表是防火墙中最基本的容器,用于存放链的
链:chain,链是存放规则的容器
规则:policy,规则是防火墙具体行为的实行(允许 拒绝 追踪…)表 > 链 > 规则

2.1 四表
正常来讲五表五链,通常说的是四表,因为有一张表基本不用。
filter
:默认表,负责过滤数据包,使用频率最高nat
:进行网络地址转换、流量转发,使用频率较低- mangle:用于对数据包进行修改、打标识、流量整形
- raw:很少用到,配置连接跟踪相关的内容
- security:iptables最近新增的表,用于配置Linux的安全策略,使用频率很低
2.2 五链
定义:控制数据走向
- INPUT:入站,流入本机的数据,存放入站规则
- OUTPUT:出站,从本机流向其他设备的数据,存放出站规则
- FORWARD:转发,数据流向本机,本机需要修改其出站方向,存放转发规则
- PREROUTING:路由前操作,可以用于修改目的地地址,做DNAT
- POSTROUTEING:路由后操作,可以用于做源地址转换,做SNAT
2.3 数据流转图
数据流转:
报文:
1)四表访问的顺序
raw–>mangle–>nat–>filter
- raw:状态跟踪
- mangle:标记数据包
- nat:转发
- filter:过滤
2)入站
prerouting --> input
- 出站
output --> postrouting
4)转发执行顺序
-
外网内网发送:外网 --> 防火墙 --> 内网 下图1-2-3
-
内网向外网发送: 内网 --> 防火墙 --> 外网 下图4-5-6
-
外网向外网发送:外网 --> 外网
2.4 匹配方式
- 链的顺序从上到下执行规则
- 如果匹配到规则,则按照规则执行,则停止匹配
- 如果所有的规则都没有匹配上则按照默认规则进行匹配
2.5 策略类型
- ACCEPT : 接收数据包 放行 同意
- REJECT : 拒绝数据包 有响应 滚 无法访问
- DROP : 丢弃数据包 无响应 请求超时
- REDIRECT : 重定向/映射/透明代理
- SNAT : 源地址转换 --to-source
- DNAT : 目标地址转换 --to-destination
- MASQUERADE : IP地址伪装(NAT) 用于ADSL, MAS QUE RADE
- SEMARK : 添加SEMARK标记以供內域强制访问控制(MAC) 四阶段会讲
- LOG : 日志记录,日志记录一般存放在 /var/log/message文件中,流量会继续向下流转
3 使用
3.1 语法
语法:
iptables [-t 表名] <-选项操作 大写> [链名] [条件参数] [-j 策略类型]
# [ ] 表示可选
# <> 表示必选
# {a | b | c} 从中选一个
参数列表:

选项:
类别 | 选项 | 用途 | 示例 |
---|---|---|---|
添加新的规则 | -A | 在链的末尾追加一条规则 | iptables -t filter -A INPUT -p tcp -j ACCEPT |
添加新的规则 | -I | 在链的开头(或指定序号)插入一条规则 | iptables -I INPUT -p udp -j ACCEPT |
查看规则列表 | -L | 列出所有的规则条目 | iptables [-t filter] -L |
删除规则 | -D | 删除链内指定序号(或内容)的一条规则 | iptables -D INPUT 2 |
清空规则 | -F | 清空所有的规则 | iptables [-t filter] -F OUTPUT |
设置默认策略 | -P | 为指定的链设置默认规则 | iptables -P OUTPUT DROP |
修改默认策略 | -R | 可以修改目标规则链 | iptables -t fi |