# centos7防火墙操作 --- centos7默认使用firewall作为防火墙(iptables仍然有效)。 ## 查看防火墙服务状态 ```bash firewall-cmd --state ``` ## 启动、关闭、状态 ```bash # 查看状态 systemctl status firewalld # 启动 systemctl start firewalld # 停止 systemctl stop firewalld # 重启 systemctl restart firewalld # 禁卡开机启动 systemctl disable firewalld # 开机启动 systemctl enable firewalld ``` ## 端口操作 ```bash # 查看已经打开的端口 firewall-cmd --list-ports # 查看当前所有配置(包括端口、服务等所有) firewall-cmd --list-all # 查看firewall所有可识别的服务 firewall-cmd --get-service # 查看端口是否开通(如果开的是服务,直接查端口有可能会是no) firewall-cmd --query-port=22/tcp # 查看服务是否开通 firewall-cmd --query-service=ssh # 开放某个端口(permanent是永久生效) firewall-cmd --permanent --add-port=80/tcp # 开放某段端口范围 firewall-cmd --permanent --add-port=5000-6000/tcp # 关闭某个端口 firewall-cmd --permanent --remove-port=80/tcp # 开放某个服务(的默认端口) firewall-cmd --permanent --add-service=http # 关闭某个服务(的默认端口) firewall-cmd --permanent --remove-service=http # 对指定IP开放(相当于白名单) firewall-cmd --permanent --add-source=192.168.1.100 # 对指定IP段开放(相当于白名单) firewall-cmd --permanent --add-source=192.168.1.0/24 # 移除某IP firewall-cmd --permanent --remove-source=192.168.1.100 ``` ## 复杂操作 ```bash # 允许指定IP访问本机指定端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept' # 允许指定IP段访问本机端口范围 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="8080-8090" accept' # 禁止指定IP访问本机指定端口 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" reject' # 屏蔽某个IP的所有请求 firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=103.145.13.92 reject' ``` ## 配置生效 任何操作执行完成后,都需要重新装载或重启服务以使其生效: ```bash firewall-cmd --reload # 或 service firewalld restart # 或 systemctl restart firewalld ```