centos防火墙firewalld

参考:

https://blog.csdn.net/s_frozen/article/details/120636667

一. 常规操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装
yum install firewalld
# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
service firewall start
systemctl start firewalld
# 重启防火墙
service firewall restart
firewall-cmd --reload
# 停止防火墙
systemctl stop firewalld.service
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld.service
systemctl disable firewalld
# 关闭防火墙
service firewall stop
systemctl stop firewalld

# 查看已经开放的端口
firewall-cmd --list-ports
# 查询80端口是否开放
firewall-cmd --query-port=80/tcp
# 开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --permanent --add-port=111/tcp
# 重新载入
firewall-cmd --reload
# 查看80端口
firewall-cmd --zone=public --query-port=80/tcp
# 删除80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

二. 防火墙管理服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 开启组播通信 ( 允许vrrp包通过-主要用于keepalived-nginx高可用时使用 )
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens16f0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
# 刷新防火墙
firewall-cmd --reload

# 开启端口80和443 如果你的服务器打开了防火墙,你需要运行下面的命令,打开80和443端口。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload # 重新加载防火墙配置
# 移除服务
firewall-cmd --zone=work --remove-service=smtp
firewall-cmd --permanent --zone=public --remove-service=http
# 查看防火墙规则
firewall-cmd --list-all
# 查看已经开放的端口
firewall-cmd --list-ports
# 列出所有端口
netstat -ntlp
# 查询端口占用情况
lsof -i tcp:80
# 查询端口被哪个进程占用
netstat -lnp|grep 8000
ss -ntulp |grep 8000
# 查看进程具体信息
ps ***
# 杀掉进程
kill -***
kill -9 ***
pkill -9 ***(进程名)

# 打开服务打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档
firewall-cmd --zone=work --add-service=smtp
# 移除服务
firewall-cmd --zone=work --remove-service=smtp
firewall http 服务开启
firewall-cmd --query-service http ##查看http服务是否支持,返回yes或者no
firewall-cmd --add-service=http ##临时开放http服务
firewall-cmd --add-service=http --permanent ##永久开放http服务
firewall-cmd --reload ##重启防火墙生效
systemctl reload firewalld ##另外一种重启防火墙方式
firewall https 服务开启
# 与上面的 http 类似
firewall-cmd --query-service https # 查看http服务是否支持,返回yes或者no
firewall-cmd --add-service=https

三. 对单独IP设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 指定IP端口访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.137.139" port protocol="tcp" port="8080" accept"

# 移除指定IP端口访问
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.137.139" port protocol="tcp" port="8080" accept"

# 设置此IP可访问服务器所有端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="x.x.x.x" accept"

# 移除此条规则(设置此IP可访问服务器所有端口)
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.137.139" accept"

# 重新加载配置
firewall-cmd --reload

image-20230905181638538

image-20230526111926677

效果

image-20230905181723375

注:上面这些基本够用若需要更细致的配置如允许单独IP 特定IP端口等通过或禁止 见onenote