![如何将某个IP列入限时白名单?](https://linux22.com/image/126026/%E5%A6%82%E4%BD%95%E5%B0%86%E6%9F%90%E4%B8%AAIP%E5%88%97%E5%85%A5%E9%99%90%E6%97%B6%E7%99%BD%E5%90%8D%E5%8D%95%EF%BC%9F.png)
我正在尝试使用firewalld 和ipsets 根据某些事件创建带有超时的自动IP 白名单。
这就是我走了多远
firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip --option=timeout=30
firewall-cmd --reload
firewall-cmd --zone=external --add-rich-rule='rule source ipset=whitelist accept'
firewall-cmd --ipset=whitelist --add-entry=AA.BB.CC.DD
但从最后一个命令中得到此错误消息:
Error: IPSET_WITH_TIMEOUT: whitelist
我感觉我在这里遗漏了一些明显的东西。
答案1
我确实错过了一些明显的东西,并发现了一些不那么明显的东西:
这是将在firewalld中创建一个带有超时的ipset的命令链
firewall-cmd --permanent --new-ipset=whitelist --type=hash:ip --option=timeout=30
firewall-cmd --reload
firewall-cmd --zone=external --add-source=ipset:whitelist
我缺少 --add-source 位(请注意,丰富规则不是必需的)。但是,尝试通过firewall-cmd向ipset添加条目仍然会出现与最初问题相同的错误。但是,可以直接使用本机 ipset 命令:
#ipset add whitelist AA.BB.CC.DD
#ipset list whitelist
Name: whitelist
Type: hash:ip
Revision: 1
Header: family inet hashsize 1024 maxelem 65536 timeout 30
Size in memory: 16592
References: 7
Members:
AA.BB.CC.DD timeout 22
此设置将给定 IP 地址列入白名单 30 秒。正是我所需要的。
所有这一切的原因是能够提供一种自动机制,为使用 ssh 登录我们服务器的用户提供对远程桌面服务的访问权限。 ipset add 命令从 syslog 事件处理程序运行,该事件处理程序检测成功的 ssh 登录并获取用户登录的关联源 IP。白名单超时显着限制了远程 vnc 连接的攻击窗口。我们一直在基于 tcp-wrapper 的 CentOS6 上使用类似的设置。现在我们正在转向 CentOS7,并且使用 ipset 超时可以消除我们自己的簿记在超时窗口到期后关闭允许的 ip 地址的需要。