Authentication 如何允许用户仅从特定IP连接?

Authentication 如何允许用户仅从特定IP连接?,authentication,vps,ubuntu-18.04,Authentication,Vps,Ubuntu 18.04,场景如下:我在Digital Ocean(DO)中有一个VPS(Droplet),我通过putty ssh连接,但是我必须让另一个用户启用根权限和密码访问(没有ssh),这是因为当putty ssh出现连接问题时,我必须通过我的DO帐户输入,并使用具有密码的用户访问droplet控制台以解决问题。这通常发生在每次我重新启动服务器,并且我无法从putty连接任何用户时,连接被拒绝。解决方案很简单,重启ufw,一切都解决了 然而,我为黑客打开了一扇门,他们可以轻松地以所有权限破解此用户密码。这个想法

场景如下:我在Digital Ocean(DO)中有一个VPS(Droplet),我通过putty ssh连接,但是我必须让另一个用户启用根权限和密码访问(没有ssh),这是因为当putty ssh出现连接问题时,我必须通过我的DO帐户输入,并使用具有密码的用户访问droplet控制台以解决问题。这通常发生在每次我重新启动服务器,并且我无法从putty连接任何用户时,连接被拒绝。解决方案很简单,重启ufw,一切都解决了


然而,我为黑客打开了一扇门,他们可以轻松地以所有权限破解此用户密码。这个想法是允许这个用户只从我的个人IP连接,但是Ubuntu防火墙只允许IP/端口/应用程序规则,不能引用任何用户。如何解决这个问题?

经过大量的研究、测试和更多的测试,特别是使用命令telnetlogin,我发现了一些我不知道的东西;当SSH服务处于活动状态时,仅允许使用私钥的SSH连接,不允许其他连接,即使使用SSH+密码。这个功能,或者集成到Ubuntu中,或者由Digital Ocean实现,我猜是第一个

考虑到这一点,这一问题没有提出任何问题;除非您拥有私钥,否则没有人可以连接到服务器,并且如果您也只允许从特定IP进行ssh连接,那么安全性非常好。通过以这种简单的方式配置防火墙,就足够了:

ufw status verbose

To          Action      From
--          ------      ----
8000       ALLOW IN   Anywhere
6666/tcp   ALLOW IN   15.15.15.15
8000(v6)   ALLOW IN   Anywhere (v6)
端口8000用于来自HTTP和HTTPS客户端的传入请求(将由django管理),以及ssh的默认端口22以外的任何端口,指定我计算机的专用IP,我只能使用相应的私钥从我的计算机连接。我们还必须修改ssh配置文件,即文件/etc/ssh/sshd_config替换端口22、密码身份验证号,并使用服务ssh restart重新启动服务