centos7 通过firewall-cmd命令添加防火墙白名单 。
查看防护墙状态
firewall-cmd --state
或
systemctl status firewalld
active (running)-->表示防火墙已经开启;inactive (dead)-->表示防火墙已经关闭
开关防火墙命令
-
启动防火墙:systemctl start firewalld.service
-
重启防火墙:systemctl restart firewalld.service
-
关闭防火墙:systemctl stop firewalld.service
-
设置开机启用防火墙:systemctl enable firewalld.service
-
设置开机禁用防火墙:systemctl disable firewalld.service
-
设置开机自启动:systemctl enable firewalld
防火墙规则解析
public (active):
public:这是防火墙配置中的一个区域(zone)。每个区域定义了一组规则,用于控制网络流量如何处理。public通常用于那些不受信任的公共网络。
(active):表示当前正在使用的活跃区域。
target: default:
target:指定该区域的默认行为。default意味着将遵循默认的策略来处理未匹配到特定规则的流量。
icmp-block-inversion: no:
icmp-block-inversion:决定是否反转ICMP阻塞规则。如果设置为yes,则所有未被明确允许的ICMP类型都将被阻止。这里的no表示没有启用这种反转机制。
interfaces: ens33:
interfaces:列出了与该区域关联的网络接口。在这个例子中,ens33是连接到公共网络的网络接口名称。
sources:
这里为空,表示没有特别指定的源地址或网络。如果有值,则会列出哪些IP地址或网络范围属于该区域。
services: dhcpv6-client ssh:
services:列出了允许通过该区域的服务。在这里,dhcpv6-client和ssh服务是被允许的。这意味着系统可以响应来自外部的DHCPv6客户端请求,并允许SSH登录。
ports:
这里为空,表示没有特别开放的端口。如果有值,则会列出哪些端口号和协议(如TCP或UDP)是开放的。
protocols:
这里为空,表示没有特别允许的协议。如果有值,则会列出允许的其他协议(除了TCP、UDP等常见协议之外)。
masquerade: no:
masquerade:网络地址转换(NAT)的一种形式,用于隐藏内部网络的真实地址。这里的no表示没有启用伪装(Masquerading)功能。
forward-ports:
这里为空,表示没有转发端口的规则。如果有值,则会列出端口转发规则,例如将外部请求从一个端口转发到另一个端口或内部服务器。
source-ports:
这里为空,表示没有特别指定的源端口。如果有值,则会列出哪些源端口是被允许或限制的。
icmp-blocks:
这里为空,表示没有被阻止的ICMP类型。如果有值,则会列出哪些ICMP消息类型被阻止。
rich rules:
这里为空,表示没有复杂的富规则。富规则允许更细粒度地控制网络流量,包括基于源地址、目的地址、端口和服务的复杂条件。
防火墙常见配置
开放或限制服务器端口
(1)查看防火墙端口
查看开放的端口:firewall-cmd --list-ports
查询防火墙所有规则:firewall-cmd --list-all
(2)开放或限制端口
开放80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
关闭80端口:firewall-cmd -zone=public --remove-port=80/tcp --permanent
配置立即生效:firewall-cmd --reload
备注: –zone #作用域 –add-port=80/tcp #添加端口,格式为:端口/通讯协议 –permanent #永久生效,没有此参数ze重启后失效
(3)端口扩展操作
-
查看监听的端口:netstat -tunlp 注意:centos7默认没有netstat命令,需要安装net-tools工具,yum install -y net-tools
-
检查端口被哪个进程占用:netstat -lnpt | grep 80
-
查看进程的详细信息:ps 6832
-
中止进程:kill -9 6832
ip配置
查看策略列表:firewall-cmd --list-rich-rule
访问白名单可以通过两种方式进行设置:命令行操作或修改配置文件。
(1)命令行操作
只允许指定IP段访问服务器22端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="指定IP或IP段" port protocol="tcp" port="22" accept'
允许指定IP段访问服务器所有端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="指定IP或IP段" accept'
添加后执行重载 重新加载配置:firewall-cmd --reload
(2)修改配置文件
进入配置文件目录,编辑配置文件
# cd /etc/firewalld/zones
# vim public.xml
配置文件添加内容,然后重启防火墙
<rule family="ipv4">
<source address="指定IP或ip段"/>
<port protocol="tcp" port="22"/>
<accept/>
</rule>
服务访问配置
列出放行的服务:firewall-cmd --list-service
查询服务:firewall-cmd --get-services
查看ftp服务是否支持(返回yes或no):firewall-cmd --query-service ftp
永久移除ftp服务:firewall-cmd --permanent --remove-service=ftp
永久开放ftp服务:firewall-cmd --permanent --add-service=ftp
临时开放ftp服务:firewall-cmd --add-service=ftp
扩展
列出支持的zone:firewall-cmd --get-zones 查看帮助:man firewall-cmd