自动向通过 SSH 成功连接的任何人开放防火墙

自动向通过 SSH 成功连接的任何人开放防火墙

我有一台运行一些服务的服务器。但是,出于安全原因,我将服务器配置为除了 SSH 之外,其他任何服务都无法从外部访问。

不过,我想要做的是让服务器允许任何通过 SSH 成功登录的人访问其所有服务(并且一旦该人断开连接,再次关闭所有端口,但 SSH 端口应保持打开状态)。

有没有办法做到这一点?

我在服务器上使用 Arch Linux 来ufw管理防火墙。

答案1

您可以在中输入命令~/.bashrc,其中的任何内容都会在用户每次登录时执行。

为了使您的命令仅在通过 ssh 登录时运行(而不是在物理登录时运行),您可以测试SSH_CONNECTION环境变量是否存在。

答案2

我为此写了一个解决方案。它并不完美,欢迎改进。特别是,我认为~/.bash_logout如果连接中断,则不会调用该解决方案,但我也希望防火墙在这些情况下自行关闭。

无论如何,首先,配置文件,sudoers以便您的用户ufw无需输入密码即可运行二进制文件。

然后,在~/.bashrc

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "=> Opening the firewall for $ip..."
sudo ufw allow from $ip
echo "=> Done."

~/.bash_logout

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
echo "=> Closing the firewall for $ip..."
sudo ufw delete allow from $ip
echo "=> Bye."

不过,这只会在您正确终止会话时重新关闭端口。如果有人知道如何在连接退出/中断/发生其他情况时关闭它,请使用您的解决方案编辑此答案。

相关内容