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
|

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