记录与firewall-cmd相关的若干条命令

firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样而已。

firewall-cmd安装

CentOS/RedHat安装方法:

1
2
yum install -y firewalld
yum install -y firewall-config

Ubuntu系统的默认防火墙系统是ufw,但是可以安装和使用Firewall。

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get install firewalld

#默认情况下,应该启动服务,如果没有运行,则启动并启用它以在启动时启动:
sudo systemctl enable firewalld
sudo systemctl start firewalld

#确认该服务正在运行:
sudo firewall-cmd --state

running

sudo ufw disable

firewall-cmd启动

1
2
3
4
5
systemctl start firewalld # 启动
systemctl status firewalld #查看firewalld当前状态
systemctl enable firewalld # 开机启动
systemctl stop firewalld # 关闭
systemctl disable firewalld # 取消开机启动

http服务开启

1
2
3
4
5
6
7
8
9
firewall-cmd --query-service http               ##查看http服务是否支持,返回yes或者no
firewall-cmd --add-service=http ##临时开放http服务
firewall-cmd --add-service=http --permanent ##永久开放http服务
firewall-cmd --add-service=https --permanent
firewall-cmd --add-service=https --reload
firewall-cmd --reload ##重启防火墙生效

firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload #在不改变状态的条件下重新加载防火墙

其他相关操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#查看开放端口命令
firewall-cmd --list-ports

#列出配置的所有防火墙规则:
firewall-cmd --list-all

#获取可以使用名称启用的所有服务的列表
sudo firewall-cmd --get-services

#启用http服务
sudo firewall-cmd --add-service=http --permanent

#--permanent选项意味着针对服务器重新启动的持久规则。

#在一行上启用http和https
sudo firewall-cmd --permanent --add-service={http,https} --permanent

#启用TCP端口7070
sudo firewall-cmd --add-port=7070/tcp --permanent

#启用UDP端口514
sudo firewall-cmd --add-port=514/udp --permanent

防火墙开放特定端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#开放 tcp/udp 37777 端口
firewall-cmd --zone=public --add-port=37777/tcp --permanent
firewall-cmd --zone=public --add-port=37777/udp --permanent

#重新载入防火墙配置,使规则生效
sudo systemctl restart firewalld

#CentOS7 防火墙命令
firewall-cmd --zone=public --add-port=36666/tcp --permanent
firewall-cmd --zone=public --add-port=36666/udp --permanent
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl restart firewalld.service

流量转发

1
2
3
4
5
6
7
8
9
10
#本机的36363端口流量转发至[目标IP]的8080端口
sudo firewall-cmd --zone=public --permanent --add-port 36363/tcp
sudo firewall-cmd --zone=public --permanent --add-port 36363/udp
sudo firewall-cmd --zone=public --permanent --add-forward-port=port=36363:proto=tcp:toport=8080:toaddr=[目标IP]
sudo firewall-cmd --zone=public --permanent --add-forward-port=port=36363:proto=udp:toport=8080:toaddr=[目标IP]
sudo firewall-cmd --zone=public --permanent --add-masquerade
sudo firewall-cmd --reload

#开启SSH端口
firewall-cmd --zone=public --add-port=22/tcp --permanent