Centos7防火墙关闭和启用iptables操作
Centos7 防火墙 firewalld 的配置文件/开关/IP/端口 - CCCiTU 玩机大学
2. firewalld 相关命令
①一般在终端通过命令行控制防火墙,但使用了宝塔面板的用户,②可以在软件商店 > 系统工具 > 系统防火墙,进行可视化添加/删除/开关管理。
添加和删除规则,③还可以直接去配置文件操作,保存后要重启一次:firewall-cmd --reload,以上这些是比较常见的3种操作方式。
2.1开关防火墙服务
- #启动服务
- systemctl start firewalld
- #停止服务
- systemctl stop firewalld
- #开机自启
- systemctl enable firewalld
- #关闭自启
- systemctl disable firewalld
- #重启服务
- systemctl restart firewalld
- #查看状态
- systemctl status firewalld 或 firewall-cmd --state
2.2 查看已开放规则
- #查看firewalld所有开放的规则
- firewall-cmd --list-all
- #查看已经开放的服务(端口合集)
- firewall-cmd --list-services
- #查看已经开放的端口
- firewall-cmd --list-port
2.3 增加或删除规则
⭕注意,规则的增删有两点需要额外注意⚠️⚠️:
- --permanent #加到命令后面,表示永久有效;
- firewall-cmd --reload #执行此命令重启防火墙后,永久规则才能生效
⭕端口
- #开放单个端口
- firewall-cmd --zone=public --add-port=22/tcp --permanent
- #限制单个端口
- firewall-cmd --zone=public --remove-port=22/tcp --permanent
- #开放一组端口
- firewall-cmd --zone=public --add-port=100-500/tcp --permanent
- #限制一组端口
- firewall-cmd --zone=public --remove-port=100-500/tcp --permanent
⭕IP
- #限制IP地址访问端口,reject 表示拒绝,设置为 drop 表示直接丢弃
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
- #解除限制(允许)
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"
- #限制IP段访问端口
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
- #解除限制(允许)
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" accept"
- #允许某个IP的所有连接
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="<ip>" accept"
- #允许某个IP访问ssh服务
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" service name="ssh" accept"
- #允许某个IP访问icmp协议
- firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" protocol value="icmp" accept"
⭕服务
- firewall-cmd --get-services #查看所有预设的服务
- firewall-cmd --list-services #查看已放行的服务
- firewall-cmd --info-service=ssh #查看某个服务包含的端口,如ssh
- firewall-cmd --permanent --add-service=<service name> #放行服务
- firewall-cmd --permanent --add-service=ssh #如放行 ssh
- firewall-cmd --permanent --remove-service=<service name> #移除服务
⭕协议
- firewall-cmd --permanent --add-protocol=<protocol> # 允许协议
- firewall-cmd --permanent --add-protocol=icmp # 例:icmp,即允许ping
- firewall-cmd --permanent --remove-protocol=<protocol> # 取消协议
- firewall-cmd --list-protocols # 查看允许的协议
注意事项
防火墙从上往下匹配规则,一旦匹配成功就会暂停向下匹配,因此要注意规则的顺序避免失效。遇到规则不生效时,建议执行firewall-cmd --list-all查看所有开发的服务/IP和端口,以及注意查看它们的顺序。
宝塔用户如安装并启用了系统防火墙插件,端口的放行就要在系统防火墙插件里操作,不要再去面板后台的安全选项里放行,避免出现规则的冲突。