本合集整理所有firewall防火墙配置相关的命令,在使用firewall防火墙过程中,不常用的命令要搜索好久才找到,现将firewall的命令整理了一下,方便后面需要的时候查找。
查看防火墙的命令
firewall-cmd --version #查看防火墙的版本
firewall-cmd --state #查看firewall的状态
systemctl status firewalld #查看firewall服务状态(普通用户可执行)
firewall-cmd --list-all #查看防火墙全部的信息。
firewall-cmd --list-port #查看防火墙已开通的端口
firewall-cmd --list-service #查看防火墙已开通的服务
firewall-cmd --get-services #查看全部的服务列表(普通用户可执行
systemctl is-enabled firewalld #查看防火墙服务是否开机启动
配置防火墙的命令
启动、重启、关闭防火墙服务
systemctl start firewalld #启动
systemctl restart firewalld #重启
systemctl stop firewalld #关闭
开放、移去某个端口
firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent #移去80端口
开放、移去范围端口
firewall-cmd --zone=public --add-port=5000-5500/tcp --permanent #开放5000-5500之间的端口
firewall-cmd --zone=public --remove-port=5000-5500/tcp --permanent #移去5000-5500之间的端口
开放、移去服务。
firewall-cmd --zone=public --add-service=ftp --permanent #开放ftp服务
firewall-cmd --zone=public --remove-service=ftp --permanent #移去http服务
重新加载防火墙配置(修改配置后要重新加载防火墙配置或重启防火墙服务)
firewall-cmd --reload
配置文件位置:/etc/firewalld/zones/public.xml
设置开机时启用、禁用防火墙服务
systemctl enable firewalld #启用服务
systemctl disable firewalld #禁用服务
应用命令
允许ip或ip段访问某些端口
允许ip或ip段访问22端口的ssh服务,例如下面命令执行后,将允许192.168.1.0/24这个ip段允许访问ssh服务
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
禁止ipv6访问22端口
firewall-cmd --zone=public --add-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject " --permanent
禁ping
常规禁止ping(没有白名单)
firewall-cmd --permanent --add-rich-rule='rule protocol value="icmp" drop'
禁止某一端口
优先级比开端口高
firewall-cmd --permanent --add-rich-rule='rule port protocol="tcp" port="25" drop'
通过'icmp-block-inversion'实现禁ping(有白名单)
该方式其实就是如下一条iptables策略(并不是-j drop):
-A IN_public -p icmp -j REJECT --reject-with icmp-host-prohibited
当ping目的服务器时,会收到“Destination host 192.168.xx.xx administratively prohibited”响应!
这和我们想要的(直接drop)有些出入,但是,我们可以设置白名单策略!
# 禁止所有源ping
firewall-cmd --permanent --add-icmp-block-inversion
# 允许192.168.188.30 ping
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.188.30" icmp-type name="echo-request" accept'
rich rule的匹配优先级策略
日志规则始终在拒绝规则之前发生。 拒绝规则总是发生在允许规则之前。
rich rule会完全封堵icmp包,不再允许白名单设置:即便有下面的“允许192.168.188.30”也不会放行;这是跟rich rule的匹配优先级策略有关!
因此firewalld的rich规则匹配顺序如下:
- 日志规则
- drop/reject规则
- accept规则
删除rich规则
firewall-cmd --permanent --zone=public --remove-rich-rule=" rule family="ipv6" source address="::/0" port port="22" protocol="tcp" reject "
端口转发
内部端口转发
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port port=22002 protocol=tcp to-port=22'
# 或者
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port port=22001 protocol=tcp to-port=22 to-addr=192.168.10.151'
# reload配置以令生效
firewall-cmd --reload
外部端口转发
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port port=22003 protocol=tcp to-port=22 to-addr=192.168.188.29'
firewall-cmd --permanent --add-masquerade
# 或者只允许源地址为192.168.14.0/23地址访问
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.14.0/23 masquerade'
firewall-cmd --reload
网友评论