如何将某个IP列入限时白名单?

如何将某个IP列入限时白名单?

我正在尝试使用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 地址的需要。

相关内容