firewall-cmd命令参数介绍
firewall-cmd –xx-
参数 功能--get-default-zone 查询当前默认的区域名称
--set-default-zone=区域名称 设置默认的区域并使其永久生效
--get-zones 显示可用的区域
--get-services 显示命令支持的服务
--get-active-zones
显示当前正在使用的区域与网卡名称
--add-interface=网卡名称
将源自该网卡的所有流量都导向某个指定区域
--change-interface=网卡名称 将某个网卡和区域进行关联
--remove-source= 不将来自此IP或子网的流量导向某个指定区域
--add-source=将来自此IP或子网的流量导向指定的区域
--list-all
显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones
显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=服务名
设置默认区域允许该服务的流量
--add-port=端口号/协议
设置默认区域允许该端口的流量
--remove-service=服务名
设置默认区域不允许该服务的流量
--remove-port=端口号/协议
设置默认区域不允许该端口的流量
--reload
让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on 开启应急状况模式,所有与规则都拒绝
--panic-off 关闭应急状况模式
--query-panic 查询紧急状态模式
--version 查看版本
--help 查看帮助
--state 显示状态
--permanent
实现永久生效
CentOS之开启firewalld白名单
Firewalld 是可用于许多 Linux 发行版的防火墙管理解决方案,它充当 Linux 内核提供的 iptables 数据包过滤系统的前端。
在本教程中,介绍如何为服务器设置防火墙,并使用 firewall-cmd 管理工具来管理防火墙添加 IP 白名单。
firewalld中的区域(zone)
区域(zone)基本上是一组规则,它们决定了允许哪些流量,具体取决于你对计算机所连接的网络的信任程度。为网络接口分配了一个区域,以指示防火墙应允许的行为。
Firewalld 一般已经默认内置了 9 个区域(zone),大部分情况下,这些已经足够使用,按从最不信任到最受信任的顺序为:
drop:最低信任级别。所有传入的连接都将被丢弃而不会回复,并且只能进行传出连接。block:与上述类似,但不是简单地删除连接,而是使用 icmp-host-prohibitedor 和 icmp6-adm-prohibited 消息拒绝传入的请求。public:表示不信任的公共网络。您不信任其他计算机,但可能会视情况允许选择的传入连接。默认情况下,此区域为激活状态。external:如果你使用防火墙作为网关,则为外部网络。将其配置为 NAT 转发,以便你的内部网络保持私有但可访问。internal:external 区域的另一侧,用于网关的内部。这些计算机值得信赖,并且可以使用一些其他服务。dmz:用于 DMZ (DeMilitarized Zone) 中的计算机(将无法访问网络其余部分的隔离计算机),仅允许某些传入连接。work:用于工作机。信任网络中的大多数计算机。可能还允许其他一些服务。home:家庭环境。通常,这意味着您信任其他大多数计算机,并且将接受其他一些服务。trusted:信任网络中的所有计算机。可用选项中最开放的,应谨慎使用。
安装并启用防火墙
Firewalld 是在某些 Linux 发行版上默认安装的,但有时候需$ sudo firewall-cmd–state要手动安装。CentOS 下的安装命令如下:
yum install firewalld
启用 Firewalld 服务并允许自启动
systemctl start firewalld
systemctl enable firewalld
确认 Firewalld 服务是否正在运行
firewall-cmd --state
返回 running 则表示已经运行;not running 则表示没有运行。
查看当前的防火墙规则
输入以下命令,可以看到当前选择哪个区域作为默认区域:
firewall-cmd --get-default-zone
一般情况下会返回 public
输入以下内容进行确认哪个区域处于激活状态:
firewall-cmd --get-active-zones
一般情况下,在只有一个网卡的情况下会返回:
public
interfaces: eth0
获取可用区域的列表,输入以下命令:
firewall-cmd --get-zones
# 返回:
# block dmz drop external home internal public trusted work
通过指定 –zone 的 –list-all 参数,我们可以看到与区域关联的特定配置:
firewall-cmd --zone=home --list-all
返回值:
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
获取可用区域列表的详细信息,输入以下命令:
firewall-cmd --list-all-zones
使用 Firewalld 配置 IP 白名单
如前所述,Firewalld 有内置的区域,可以利用这些区域不同的特性,来简单快捷地配置 IP 白名单。
具体做法就是,首先要收集你要允许的 IP 白名单列表,比如 Cloudflare 的所有IP范围:
173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/12
172.64.0.0/13
131.0.72.0/22
与此同时,你也要加入你自己的 IP 地址,否则白名单一旦生效,可能会将你阻挡在外而无法连接。
将这些 IP 列表逐一加入 trusted 区域,使用命令如下:
firewall-cmd --permanent --zone=trusted --add-source=173.245.48.0/20
firewall-cmd --permanent --zone=trusted --add-source=131.0.72.0/22
使 trusted 区域设置生效,使用命令如下:
firewall-cmd --reload
确认 trusted 区域是否设置正确,使用命令如下:
firewall-cmd --zone=trusted --list-all
返回:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 173.245.48.0/20 …… 131.0.72.0/22
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
因为此时已经设置了 trusted 区域,所以还需要切换默认区域从 public 到 drop,以达到无视所有接入连接的目的。使用命令如下:
firewall-cmd --set-default-zone=drop
再将默认网卡 eth0 分配给 drop 区域,使用命令如下:
firewall-cmd --permanent --zone=drop --change-interface=eth0
使白名单最终生效,使用命令如下(注意:请再次确认你的所有 IP 都加入了 trusted 区域):
firewall-cmd --reload
至此,白名单设置正式生效。
添加对外暴露的端口
查看所有打开的端口
firewall-cmd --zone=public --list-ports
添加开放端口
# permanent永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=80/tcp --permanent
删除开放端口firewall-cmd --zone=public --remove-port=80/tcp --permanent
SH 复制 全屏
使开通的端口生效
firewall-cmd --reload
转载自:https://www.cnblogs.com/warren6/p/16775456.html
开启白名单,并开启防火墙(服务、端口)并设置黑名单
设置白名单:firewall-cmd --permanent --zone=trusted --add-source=192.168.0.0/24
修改默认zone(可以直接用public,不需要设置)
查看所有zone:firewall-cmd –list-all-zones
查看指定zone:firewall-cmd –zone=public –list-all
查看激活zone:firewall-cmd –get-active-zones
查看默认zone:firewall-cmd –get-default-zone
修改默认zone:firewall-cmd –set-default-zone=public
设置开放服务(端口),建议全部用端口
查看所有服务:firewall-cmd –get-services
查看某个服务是否启用:firewall-cmd –query-service http
添加服务:firewall-cmd –zone=public –add-service=http –permanent
删除服务:firewall-cmd –zone=public –remove-service=http –permanent
添加端口:firewall-cmd –zone=public –add-port=80/tcp –permanent
删除端口:firewall-cmd –zone=public –remove-port=80/tcp –permanent
设置黑名单
临时性添加,不需要firewall-cmd –reload,reload失效。
firewall-cmd –zone=drop –add-source=125.115.254.38
safaline自动生成一个zone
docker (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: docker0 safeline-ce
sources:
services:
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: