Firewalld简介
支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具
支持IPv4、IPv6防火墙设置以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
拥有两种配置模式
(1)运行时配置
(2)永久配置
netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”
Friewalld/iptables
Centos7默认的管理防火墙规则的工具(Firewalld)
称为Linux防火墙的“用户态”!
Friewalld和iptables的区别
Firewalld | iptables | |
---|---|---|
配置文件 | /usr/lib/firewalld/etc/firewalld | /etc/sysconfig/iptables |
对规则的修改 | 不需要全部刷新策略 不丢失线性连接 | 需要全部刷新策略,丢失连接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
iptables
四表五链:链就是位置:共有五个,进路由(PRUROUTING)、进系统(INPUT)、转发(FORWORD)、出系统(OUTPUT)、出路由(POSTROUTING);表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。
表当中包含多个链,链当中包含多个规则!
表 | 特性 |
---|---|
filter表 | 过滤数据包 |
Nat表 | 用于网络地址转换(IP、端口) |
Mangle表 | 修改数据包的服务类型、TTL、并且可以配置路由实现QOS |
Raw表 | 决定数据包是否被状态跟踪机制处理 |
链 | 特性 |
---|---|
INPUT链 | 进来的数据包应用此规则链中的策略 |
OUTPUT链 | 外出的数据包应用此规则链中的策略 |
FORWARD链 | 转发数据包时应用此规则链中的策略 |
PREROUTING链 | 对数据包作路由选择前应用此链中的规则(所有的数据包进来的时候先有这个链处理) |
POSTROUTING链 | 对数据包作路由选择前应用此链中的规则(所有的数据包出来的时候先有这个链处理) |
iptables 【-t 表名】选项 【链名】【条件】【-j 控制类型】
-p 设置默认策略:iptables
-P:INPUT (DROP|ACCEPT)
-F:清空规则链
-L:查看规则链
-A:在规则链的末尾加入新规则
-I:num 在规则链的头部加入新规则
-D:删除某一条规则
-s:匹配来源地址IP/MASK,加“ !”表示除了这个ip外
-d:匹配目标地址
-i:网卡名称 匹配从这块网卡流入的数据
-o:网卡名称 匹配从这块网卡流出的数据
-p:匹配协议如tcp、udp、icmp
–dport num 匹配目标端口号
–sport num 匹配来源端口号
iptables -vnL 查看filter表中所有规则并显示详情
iptables各字段解读 pkts:对应规则匹配到的报文的个数 bytes :对应匹配到的报文包的大小总和
target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施
prot:表示规则对应的协议,是否只针对某些协议应用此规则 opt:表示规则对应的选项
in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则
out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则
source:表示规则对应的源头地址,可以是一个IP,也可以是-一个网段
destination:表示规则对应的目标地址。可以是-一个IP,也可以是一个网段 packages:匹配到的包数量
bytes:匹配到的总字节数
防火墙规则的保存
[root@localhost ~]# iptables-save #查看当前规则
/etc/sysconfig/iptables#默认存放路径
[root@localhost ~]# iptables-save > /etc/sysconfig/iptables #保存到默认配置文件下次重启不会丢失
[root@localhost ~]# systemctl stop iptables.service #停止iptables服务会清空所有规则
实操
IP范围匹配
[ root@localhost ~] # iptables -A INPUT -p icmp --icmp-type echo request -S 192.168.8.145 -j DROP
“-m iprange --src-range IP范围”允许别人ping自己
MAC地址匹配
[root@localhost ~]# iptables -A INPUT -m mac --mac-source MAC地址 -j DROP
禁止该MAC地址主机的数据包
状态匹配
[root@localhost ~]# iptables -A INPUT -m state --state NEW -p tcp ! --syn -j DROP
禁止接受与正常TCP连接无关的非--syn请求数据包~