文章目录
一、Firewalld概述
-
Firewalld简介
- 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙
管理工具 - 支持IPv4、IPv6防火墙设置以及以太网桥
- 支持服务或应用程序直接添加防火墙规则接口
- 拥有两种配置模式
- 运行时配置
- 永久配置
- 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙
二、Firewalld和iptables的关系
- netfilter
- 位于Linux内核中的包过滤功能体系
- 称为Linux防火墙的“内核态’
- Firewalld/iptables
- CentOS7默认的管理防火墙规则的
工具(Firewalld) - 称为Linux防火墙的“用户态”
- CentOS7默认的管理防火墙规则的
- Firewalld和iptables的区别
三、iptables的四表五链
- 链就是位置:共有五个进路由(PREROUT ING)、进系统(INPUT)、转发(FORWARD)、出系统(OUTPUT)、出路由(POSTROUTING);
- 表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。
3.1、四表
- filter表 一 过滤数 据包
- Nat表 一 用 于网络地址转换(IP、 端口)
- Mangle表 一 修改数 据包的服务类型、TIL、并且可以配置路由实现Q0S
- Raw表决定数据包是否被状态跟踪机制处理
- 用的较多的是filter表、Nat表,默认的表是:filter
3.2、五链
-
INPUT链—进来的数据包应用此规则链中的策略
-
OUTPUT链----外出的数据包应用此规则链中的策略
-
FORWARD链-----转发数据包时应用此规则链中的策略
-
PREROUTING 链----对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
-
POSTROUTING 链----对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
3.3、iptables语法格式
iptables [-t 表名] 选项[链名] [条件] [-j 控制类型]
iptables常用参数:
-t 表名
-j 控制类型
-P 设置默认策略:iptables
-P INPUT (DROP|ACCEPT)
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则(优先响应)
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号"!"表示除这个IP外。
-d 匹配目标地址
-i 网卡名称匹配从这块网卡流入的数据
-o 网卡名称匹配从这块网卡流出的数据
-p 匹配协议,如tcp,udp,icmp icmp没端口
--dport num 匹配目标端口号
--sport num 匹配来源端口号
四、Firewalld的防火墙配置
4.1、防火墙维护命令
- 防火墙进程操作
[root@Server /]# systemctl 选项 firewalld
- 选项:start stop restart status
- 防火墙管理操作
- firewall-cmd命令
- 支持全部防火墙特性
- 对于状态和查询模式,命令只返回状态,没有其他输出
- –permanent参数:携带该参数表示永久配置,否则表示运行时配置
- –one=]选项:不携带此选项表示针对默认区域操作,否则针对指定区域操作
- firewall-cmd命令
4.2、防火墙状态查询命令
- 查询Firewalld状态
[root@localhost mnt]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2019-11-20 13:32:39 CST; 2 weeks 4 days ago
[root@Server门# firewall-cmd -tate
running
4.3、防火墙重载配置命令
- 重新加载Firewalld的配置
- firewall-cmd -reload
[root@localhost mnt]# firewall-cmd --reload
success
- firewall-cmd --complete-reload
- 状态信息将会丢失,多用于处理防火墙出现问题时
[root@localhost mnt]# firewall-cmd -complete-reload
success
- systemctl restart firewalld
[root@localhost mnt]# systemctl restart firewalld
4.4、查询预定义信息命令
[root@localhost mnt]# firewall-cmd --get-zones #查看预定义的区域
block dmz drop external home internal public trusted work
[root@localhost mnt]# firewall-cmd --get-services #查看预定义服务
[root@localhost mnt]# firewall-cmd --get-icmptypes #查看预定义的ICMP类型
五、Firewalld区域操作命令
- 显示网络连接或接口的默认区域
[root@localhost mnt]# firewall-cmd --get-default-zone
public
- 设置网络连接或接口的默认区域为internal
[root@localhost mnt]# firewall-cmd --set-default-zone=internal
success
[root@localhost mnt]# firewall-cmd --get-default-zone
internal
- 显示已激活的所有区域
[root@localhost ~]# firewall-cmd --get-active-zones
internal
interfaces: ens33
- 激活的条件:区域至少关联一个接口或一个源地址/网段
- 显示ens33接口绑定的区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
internal
- 为ens33接口绑定work区域
[root@localhost ~]# firewall-cmd --zone=work --add-interface=ens33
The interface is under control of NetworkManager, setting zone to 'work'.
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
work
- 为work区域删除绑定的网络接口ens33
[root@localhost ~]# firewall-cmd --zone=work --remove-interface=ens33
The interface is under control of NetworkManager, setting zone to default.
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
internal
- 查询work区域中是否包含接口ens33
[root@localhost ~]# firewall-cmd --zone=work --query-interface=ens33
yes
- 显示区域及其规则
- 显示所有区域及其规则
[root@localhost ~]# firewall-cmd --list-all-zones
- 显示internal区域的所有规则
[root@localhost ~]# firewall-cmd --zone=internal --list-all
- 显示默认区域的所有规则
[root@localhost ~]# firewall-cmd --list-all
- 显示internal区域内允许访问的所有服务
[root@localhost ~]# firewall-cmd --zone=internal --list-services
ssh mdns samba-client dhcpv6-client
- 为public区域设置允许访问SMTP服务
[root@localhost ~]# firewall-cmd --zone=public --add-service=smtp
success
[root@localhost ~]# firewall-cmd --zone=public --list-services
ssh dhcpv6-client smtp
- 删除internal区域中的SSH服务
[root@localhost ~]# firewall-cmd --zone=internal --list-services
ssh mdns samba-client dhcpv6-client
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=ssh
success
#删除internal区域中的SSH服务
[root@localhost ~]# firewall-cmd --zone=internal --list-services
mdns samba-client dhcpv6-client
[root@localhost ~]#
- 查询internal区域中是否启用了SSH服务
[root@localhost ~]# firewall-cmd --zone=internal --query-service=ssh
no
六、Firewalld端口操作命令
- 显示internal区域内允许访问的所有端口号
[root@localhost ~]# firewall-cmd --zone=internal --list-ports
80/tcp
- 启用interna区域 22 端口的TCP协议组合
[root@localhost ~]# firewall-cmd --zone=internal --add-port=22/tcp --timeout=5m
success
- timeout=5m:表示5分钟后删除该端口,多用于测试目的“
- 禁用internal区域22端口的TCP协议组合
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=22/tcp
success
- 查询internal区域中是否启用了22端口和TCP协议组合
[root@localhost ~]# firewall-cmd --zone=internal --query-port=22/tcp
yes
七、Firewalld阻塞ICMP操作命令
- 显示 internal 区域内阻塞的所有ICMP类型
[root@localhost ~]# firewall-cmd --zone=internal --list-icmp-blocks
echo-request
- 为 internal 区域设置阻塞echo-reply类型的ICMP
[root@localhost ~]# firewall-cmd --zone=internal --add-icmp-block=echo-reply
success
删除 internal 区域已阻塞的echo-reply类型的ICMP
[root@localhost ~]# firewall-cmd --zone=internal --remove-icmp-block=echo-reply
success
查询 internal 区域的echo-request类型的ICMP是否阻塞
[root@localhost ~]# firewall-cmd --zone=internal --query-icmp-block=echo-request
yes