firewalld防火墙配置学习笔记
简介
firewalld服务是Linux系统中默认的动态防火墙配置管理工具,拥有基于CLI(命令行界面)和基于GUI(图形用户界面)两种管理方式。
特点:
- 支持动态更新技术
- 加入了区域的概念
区域: firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产厂家的不同选择合适的策略集合,从而实现防火墙策略之间的快速切换。
firewalld中常用的区域名称及策略规则
区域 | 默认策略规则 |
---|---|
trusted | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量有关;如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量 |
internal | 等同home区域 |
work | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量 |
public | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、dhcpv6-client服务相关,则允许流量 |
external | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
dmz | 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量 |
block | 拒绝流入的流量,除非与流出的流量相关 |
drop | 拒绝流入的流量,除非与流出的流量相关 |
firewalld 命令行防火墙配置管理工具
命令: firewalld-cmd
----------------------------------------------------firewalld-cmd命令参数------------------------------------------------------
参数 | 作用 |
---|---|
--get-default-zone | 查询默认区域名称 |
--set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
--get-zones | 显示可用区域 |
--get-services | 显示预先定义的服务 |
--get-active-zones | 显示当前正在使用的区域与网卡名称 |
--add-source= | 将源自此IP或子网的流量导向指定的区域 |
--remove-source= | 不再将源自此IP或子网的流量导向指定区域 |
--add-interface=<网卡名称> | 将源自该网卡的所有流量都导向指定区域 |
--change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
--list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
--list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
--add-service=<服务名> | 设置默认区域允许该服务的流量 |
--add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
--remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
--remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
--reload | 让“永久生效”的配置立即生效,并覆盖当前的配置规则 |
--panic-on | 开启应急状况模式 |
--panic-off | 关闭应急状况模式 |
--query-service=<端口号/协议> | 查询端口号或者协议是否响应访问请求 |
- firewalld防火墙策略默认为当前生效模式(runtime)模式,配置随着系统重启失效
- 永久(permanent)模式,在使用
firewall-cmd
时添加--permanent
参数,但是在系统重启之后才能生效 - 永久模式想要立即生效需要执行
firewall-cmd --reload
命令
操作实践
查询网卡信息
nmcli 命令
[root@MyCentOS ~]# nmcli
virbr0: 已连接 到 virbr0
"virbr0"
bridge, 52:54:00:F9:CF:22, 软件, mtu 1500
inet4 192.168.122.1/24
route4 192.168.122.0/24
ens33: 已断开
"Intel 82545EM"
1 连接可用
lo: 未托管
"lo"
loopback (unknown), 00:00:00:00:00:00, 软件, mtu 65536
virbr0-nic: 未托管
"virbr0-nic"
tun, 52:54:00:F9:CF:22, 软件, mtu 1500
使用 "nmcli device show" 获取关于已知设备的完整信息,以及
"nmcli connection show" 获取活动连接配置集的概述。
完整的用法细节,可参考 nmcli(1) 和 nmcli-examples(7) 手册页。
查询正在使用的网卡所在区域
[root@MyCentOS ~]# firewall-cmd --get-zone-of-interface=virbr0
libvirt
更改网卡默认区域
更改默认区域为external
[root@MyCentOS ~]# firewall-cmd --permanent --zone=external --change-interface=virbr0
success
查询runtime模式下网卡所处区域
[root@MyCentOS ~]# firewall-cmd --get-zone-of-interface=virbr0
libvirt
查询permanent模式下网卡所处区域
[root@MyCentOS ~]# firewall-cmd --permanent --get-zone-of-interface=virbr0
external
查询external区域是否响应ssh请求
[root@MyCentOS ~]# firewall-cmd --zone=external --query-service=ssh
yes
设置端口号流量策略为允许
[root@MyCentOS ~]# firewall-cmd --zone=libvirt --add-port=8080-8081/tcp
success
流量转发
命令格式: firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
把访问本机某端口的流量转发到其他端口
[root@MyCentOS ~]# firewall-cmd --permanent --zone=libvirt --add-forward-port=port=666:proto=tcp:toport=66:toaddr=192.168.10.10
success
命令注释: 在永久模式下,针对libvirt区域将本机IP 192.168.10.10上端口为666接收到的信息转发到端口号为66。
富规则
拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务。
[root@MyCentOS ~]# firewall-cmd --permanent --zone=libvirt --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
富规则貌似还有挺多东西,以后有时间再详细看看。
富规则特点:
- 优先级在防火墙策略中最高
- 能表现更细致、更详细的防火墙配置策略
- 可以针对源端口号、源目的地址等很多信息进行更有针对性的策略配置
服务的访问控制列表
iptables防火墙与firewalld防火墙配置管理工具是在内网与外网之间的屏障,是基于TCP/IP协议的流量过滤工具。TCP Wrappers是Linux系统中系统内的防火墙。linux通过两个层面的防火墙策略来保护系统的完全。
TCP Wrappers
- linux系统中默认启用的一款流量监控程序。
- TCP Wrappers服务防火墙策略由两个控制列表文件控制,分别为允许控制列表文件(
/etc/hosts.allow
)和拒绝控制列表文件(/etc/hosts.deny
)。 - 控制列表修改后立即生效,先匹配允许控制列表,在匹配拒绝控制列表,如果都没匹配到则默认放行
---------------------------------------------控制列表常用参数-------------------------------------------------------------
客户端类型 | 示例 | 满足示例的客户端列表 |
---|---|---|
单一主机 | 192.168.10.10 | IP地址为192.168.10.10的主机 |
指定网段 | 192.168.10. | IP段为.168.10.0/24的主机 |
指定网段 | 192.168.10.0/255.255.255.0 | IP段为.168.10.0/24的主机 |
指定DNS后缀 | .bilibili.com | 所有DNS后缀为.bilibili.com的主机 |
指定主机名称 | www.bilibili.com | 主机名称为www.bilibili.com的主机 |
指定所有客户端 | ALL | 所有主机全部包括在内 |
配置TCP Wrappers防火墙原则
- 编写拒绝策略规则时,天写服务名称,而不是协议名称
- 先编写拒绝策略规则,再编写允许策略规则,能更直观看见相应效果。
配置拒绝控制列表
打开/etc/hosts.deny
文件在其中添加下一句
ssh: *
以上语句表示拒绝所有请求要求使用SSH服务的流量。
配置允许拒绝控制列表
打开/etc/hosts.allow
文件,在其中添加下列一句。
ssh:192.168.10.
上面的语句表示允许192.168.10.网段的所有IP地址访问ssh服务。
总结
当存在多块网卡同时提供服务时,对内网和对外网提供服务的网卡要选择的防火墙策略区域也是不一样的。将网卡与防火墙策略区域进行绑定,就可以使用不同的防火墙区域策略,对源自不同网卡的流量进行针对性的监控,效果更好。