系统操作
加入开机启动
systemctl enable firewalld
启、停
systemctl start firewalld
systemctl stop firewalld
重启、重载
systemctl restart firewalld
firewall-cmd --reload
firewalld 动态管理规则集,所以它不会破坏现有的连接和会话。
查看运行状态
systemctl status firewall-cmd
配置文件位置
/etc/firewalld/{services,zones}/*.xml 优先级最高,permanent模式生效的策略会放到这里
/lib/firewalld/{services,zones}/*.xml 优先级要低些,是一些默认配置,可以当做模板使用
每个预定义的区域、服务等都有一个对应的文件:
/usr/lib/firewalld/{zones,services...}
查看
查看防火墙状态,是否是running
firewall-cmd --state
重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --reload
列出支持的zone
firewall-cmd --get-zones
查看当前使用的区
firewall-cmd --get-default-zone
查看网卡所在区域:
firewall-cmd --get-zone-of-interface=eth0
查看正在活动的区域:
firewall-cmd --get-active-zones
查看所有规则明细:
firewall-cmd --list-all
firewall-cmd --list-all-zones
查看端口添加的规则
firewall-cmd --list-ports
查看ftp服务是否支持,返回yes或者no
firewall-cmd --query-service ftp
查看指定区域(public)的以端口方式添加的规则
firewall-cmd --zone=public --list-ports
查看指定区域(public)的以服务名添加的规则
firewall-cmd --zone=public --list-services
查看指定区域的所有规则
firewall-cmd --zone=public --list-all
查看firewalldl默认支持的所有服务名列表
firewall-cmd --get-services
查看只通过服务名添加的规则[默认当前激活的公共区域]
firewall-cmd --list-services
修改
添加放行两种方式
1 runtime 临时配置 修改规则马上生效 但是重启则丢失
例如:
firewall-cmd --add-service=ftp
2 permanent 持久配置 修改后需要reload 重载才生效
例如:
firewall-cmd --zone=public --add-port=80/tcp --permanent
添加放行端口
firewall-cmd --add-port=8080/tcp
firewall-cmd --add-port={8081,8082}/tcp
firewall-cmd --add-port={8090..8095}/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=4990-4999/udp #添加4990-4999 udp端口
#添加常用端口,不指定--zone,默认会添加到默认的区域
添加放行的服务 (服务名称进行放行 --> 本质还是对应的端口)
firewall-cmd --add-service=http
firewall-cmd --add-service=ftp #开放 ftp 服务规则
firewall-cmd --add-service=mysql # 开放mysql端口规则
firewall-cmd --add-service=ssh # 开放ssh端口规则
删除端口
firewall-cmd --remove-port={8090..8095}/tcp
firewall-cmd --zone=public --remove-port=80/tcp --permanent
端口转发-本地
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8000 --permanent
将同一台服务器上80端口的流量转发至8080
firewall-cmd --list-forward-ports 查看转发
firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=8000 --permanent
firewall-cmd --reload 重载生效
端口转发-ip
将端口转发到另外一台服务器上,在需要的区域中激活 masquerade
firewall-cmd --zone=public --add-masquerade
将本地的80端口的流量转发到IP地址为:10.0.10.15 的远程服务器上的8080端口
。。。。。。
伪装IP
firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
自定义一个服务名称
cd /usr/lib/firewalld/services/
cp http.xml nginx.xml
firewall-cmd --reload
firewall-cmd --add-service=nginx
修改服务当前所使用区域:
firewall-cmd --get-default-zone=public
修改默认区
firewall-cmd --set-default-zone=internal
危险命令:[立即生效]
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic