我在我的Web服务器上使用ufw(简单防火墙)。 现在我已经设置允许SSH到世界和fail2ban,以防止大量login尝试。 Web服务器已打开端口80和443。
我想要做的就是closuresSSH访问权限,直到我需要它,然后只将其提供给我定期更改的当前公共IP地址。 我正在考虑通过HTTPSvalidation我的访问,然后将请求放入数据库的PHP脚本。 然后,一个cron作业运行一个脚本来读取数据库并运行ufw来打开SSH端口,只是我的IP地址。 30分钟后,规则将被删除,SSH将无法再访问。 我也希望允许多个IP进行临时访问,我最终希望扩展到SSH以外的其他端口。
我上述的自动化脚本运行哪些ufw命令来临时添加和删除单个IP地址的SSH端口访问?
在我看来,更好的解决scheme是使用端口敲击,基本上你会“敲”一系列的随机端口,然后在服务器上触发一个动作,动作就是让你的IP地址通过SSH进入。甚至设置一个超时,所以一段时间后端口将被closures。
对于端口敲你可以使用knockd。 当然你也需要一个敲门的客户。 knockdconfiguration看起来像这样:
[options] logfile = /var/log/knockd.log [SSH] sequence = 7000,8000,9000 seq_timeout = 5 start_command = ufw allow from %IP% to any port 22 tcpflags = syn cmd_timeout = 10 stop_command = ufw delete allow from %IP% to any port 22