===============================================
2019/4/15_第1次修改 ccb_warlock
===============================================
由于一直使用centos7的环境,所以接触的防火墙比较多的是firewalld而不是iptable,之前一直没有好好总结过firewalld的用法,这次做个整理。
我将firewall-cmd命令的操作分成了2部分:常用和其他。其中常用是我在最近几年使用centos7时用的次数较多的操作。
一、常用操作
1)重新加载配置
firewall-cmd --reload
2)查看所有配置
firewall-cmd --list-all
3)查看当前开放的端口(允许任意IP访问)
firewall-cmd --zone=public --list-ports
4)开放指定端口(允许任意IP访问)
以开放80端口为例
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
5)移除端口(允许任意IP访问的端口)
以撤销80端口的开放为例
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
6)查看允许指定IP访问端口的规则
firewall-cmd --zone=public --list-rich-rules
7)开放指定端口(只允许指定IP访问)
以“只允许192.168.1.1的主机连接3306端口”为例
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
8)移除规则(只允许指定IP访问的端口)
以“移除只允许192.168.1.1的主机连接3306端口”为例
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
9)移除默认的ssh服务
移除默认的ssh服务前,先确认是否已经额外开放了22端口,否则会导致无法使用ssh远程连接。
firewall-cmd --remove-service=ssh --permanent
firewall-cmd --reload
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
10)查看某个端口是否开放
以检查80端口为例(yes:开放;no:未开放)
firewall-cmd --zone=public --query-port=80/tcp
11)TCP端口转发
# 允许防火墙伪装IP
firewall-cmd --add-masquerade
# 将本地80端口的流量转发到192.168.1.1的80端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.1:toport=80 --permanent
PS. --permanent为永久生效,没有此参数centos重启后该配置将失效
二、其它操作
查看版本:firewall-cmd --version
查看帮助: firewall-cmd --help
查看状态: firewall-cmd --state
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic