Firewalld出入站策略配置

  • 技术文档
  • 2022.01.14
  • 浏览:1545

FirewallD 是 iptables 的一个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。

Firewalld基本管理命令(CentOS7已默认安装firewalld)

#查看firewall状态
firewall-cmd --state

#安装
yum -y install firewalld
yum -y install firewall-config

#启动,
systemctl start firewalld 

#设置开机启动
systemctl enable firewalld

#关闭
systemctl stop firewalld

#取消开机启动
systemctl disable firewalld

端口开放相关命令

#查询已经开放的端口
firewall-cmd --list-port

#查询某个端口是否开放
firewall-cmd --query-port=80/tcp

#开启端口(可以是一个端口范围,如1000-2000/tcp)
firewall-cmd --zone=public --add-port=80/tcp --permanent

#移除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

封禁某一个IP或IP段

#单个ip
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='xx.xx.xx.xx' reject"

#ip段	
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='xx.xx.xx.0/24' reject"

使用上是没什么问题,只不过一旦大量ip需要拉黑,管理上就会很混乱。因此这里介绍firewalld配置ipset来实现。

创建ipset

firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net	#创建一个名为blacklist的库

执行完命令可在/etc/firewalld/ipsets路径下看到生成的blacklist.xml文件。

添加/删除要禁止的IP或IP段

#添加单ip
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=xxx.x.x.xx	

#添加ip段
firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=xxx.xx.xx.0/24

#删除ip
firewall-cmd --permanent --zone=public --ipset=blacklist --remove-entry=xxx.x.x.xx

#删除ip段
firewall-cmd --permanent --zone=public --ipset=blacklist --remove-entry=xxx.xx.xx.0/24

备注: –permanent参数表示永久生效,内容会写入blacklist.xml文件且需要重启防火墙firewall-cmd --reload生效,如果不加该参数,则立即生效,内容不会写入blacklist.xml文件,服务重启则规则失效。

封禁ipset
前面只是创建了名为blacklist的ipset,而且也往里面增加了内容,最后一步即防火墙封禁该ipset即可,这样的好处是防火墙只是一条规则就封禁了文件里管理的大量IP。

#封禁名为blacklist的ipset
firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'

禁止本机向外访问某个IP或IP段

#单IP
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -d 10.10.10.22/32 -j REJECT 

#IP段
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -d 10.10.10.0/24 -j REJECT

最后重新载入防火墙即可生效

firewall-cmd --reload