systemctl方式
systemctl status firewalld #查看状态(防火墙为开启状态active(running),防火墙为关闭状态inactive(dead)) systemctl start firewalld #开启防火墙(临时的,重启后恢复默认值) systemctl stop firewalld #关闭防火墙(临时的,重启后恢复默认值) systemctl enable firewalld #开启 (重启后生效,重启后仍是开启状态) systemctl disable firewalld #关闭(重启后生效,重启后仍是关闭状态) firewall-cmd --list-all #查看防火墙规则
service方式
service firewalld status #查看状态 service firewalld start #开启防火墙(临时的,重启后恢复默认值) service firewalld stop #关闭防火墙(临时的,重启后恢复默认值)
firewall-cmd --query-port=80/tcp #查询80端口是否开放 firewall-cmd --permanent --add-port=80/tcp #开放80端口 firewall-cmd --permanent --remove-port=80/tcp #移除80端口 firewall-cmd --reload #使配置生效(修改配置后要重启防火墙,或使用reload使配置生效) firewall-cmd --state #查看防火墙状态
3、添加samba访问控制命令
firewall-cmd --permanent --zone=public --add-service=sambafirewall-cmd --reload firewall-cmd --permanent --add-port=137/tcp firewall-cmd --permanent --add-port=138/tcp firewall-cmd --permanent --add-port=139/tcp firewall-cmd --permanent --add-port=445/tcp firewall-cmd --permanent --add-port=901/tcp
4、访问控制基本操作
iptables -L -n #查看当前防火墙配置 vim /etc/firewalld/firewalld.conf #修改firewalld配置文件,放通端口(默认是DefaultZone=public) vim /etc/firewalld/zones/public.xml #端口放通,进入public.xml文件进行编辑修改(<port protocol="tcp" port="端口号"/>进行相关端口的放通)
5、开启流量转发功能
例:把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效: firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址> firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10 可以ssh -p 888 192.168.10.10 进行访问
6、开放端口IP访问限制
例:限制192.168.20.250(192.168.20.0网段)访问192.168.20.251(本机)的80端口 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.20.250" port protocol="tcp" port="80" reject" firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.20.0/24" port protocol="tcp" port="80" reject" firewall-cmd --reload #重新载入防火墙使其生效 firewall-cmd --zone=public --list-rich-rules #查看已经设置的规则 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.20.250" port protocol="tcp" port="80" accept" #解除上述限制 firewall-cmd --reload #重新载入防火墙使其生效 firewall-cmd --zone=public --list-rich-rules #再查看规则,如设置未生效,直接编辑规则文件:vi /etc/firewalld/zones/public.xml)
7、配置
这里需要首先说明的是,在执行命令时,如果没有带 --permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。如果带上则会将配置存储到配置文件,,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd --reload 命令重载配置才会生效。
应急
firewall-cmd --reload #重载防火墙配置 firewall-cmd --state #查看防火墙运行状态 firewall-cmd --list-all #查看默认区域的设置 firewall-cmd --panic-on # 拒绝所有流量,远程连接会立即断开,只有本地能登陆 firewall-cmd --panic-off # 取消应急模式,但需要重启firewalld后才可以远程ssh firewall-cmd --query-panic # 查看是否为应急模式
服务
firewall-cmd --add-service=<service name> #添加服务 firewall-cmd --remove-service=<service name> #移除服务
端口
firewall-cmd --add-port=<port>/<protocol> #添加端口/协议(TCP/UDP) firewall-cmd --remove-port=<port>/<protocol> #移除端口/协议(TCP/UDP) firewall-cmd --list-ports #查看开放的端口
协议
firewall-cmd --add-protocol=<protocol> # 允许协议 (例:icmp,即允许ping) firewall-cmd --remove-protocol=<protocol> # 取消协议 firewall-cmd --list-protocols # 查看允许的协议
firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" accept" #允许指定ip的所有流量 firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept" # 表示允许来自192.168.2.1的所有流量 firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol value="<protocol>" accept" #允许指定ip的指定协议 firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept" # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" accept" #允许指定ip访问指定服务 firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept" # 允许192.168.2.208主机访问ssh服务 firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" accept" #允许指定ip访问指定端口 firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept" #允许192.168.2.1主机访问22端口 firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept" #表示允许192.168.2.0/24网段的主机访问22端口 。 firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject" #表示禁止192.168.2.0/24网段的主机访问22端口 。各个命令中,将 accept 设置为 reject表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时)。