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
|