为所有用户禁用 SSH 的最佳方法是什么?

为所有用户禁用 SSH 的最佳方法是什么?

出于安全原因,我想在不使用 SSH 时将其关闭,然后通过 VNC 连接再次打开它,因为我可以通过 Digitalocean 控制面板的控制台远程连接到我的 Web 服务器,然后以这种方式打开 SSH。

以下是最好的做法吗?

sudo stop ssh
sudo ufw deny 22

并通过 VNC 开启 SSH

sudo ufw allow 22/tcp
sudo start ssh 

或者我应该使用以下任何一种变体?

sudo service ssh stop
sudo systemctl stop ssh
sudo /etc/init.d/ssh stop

我在 UBUNTU 16.04 LTS 服务器上。我想为所有用户禁用 SSH,而不仅仅是 root 用户。

答案1

你为什么要这么做?强化你的 SSH 更优雅。一些提示:

  • 不要使用 root 进行 ssh
  • 设置AllowUsers指令并在其中列出你的帐户 - 这样只有你才被允许使用 ssh
  • 创建一个 4096 位 rsa 密钥(或 512 ecdsa),不要对 ssh 会话使用密码验证
  • 设置防火墙规则,仅允许来自您的 IP 地址的端口 22 上的传入连接

答案2

停止 ssh 守护进程/服务后,你只需要禁用它。你可以使用 systemctl 来执行此操作

systemctl disable ssh 

答案3

完成您要执行的操作的最简单方法是使用 fwknopd。我使用 fwknopd 在需要时按需打开 ssh 服务,并且只对我的客户端主机 IP 开放。默认情况下,我有防火墙规则来拒绝所有 IP 的 ssh。当我需要 ssh 进入我的服务器时,我使用 fwknop 客户端打开 ssh 端口(实际上我使用非标准 ssh 端口来阻止脚本小子)并保持打开状态一小段时间(您可以配置保持打开状态的任何时间长度),这使我能够 ssh 进入我的服务器。fwknopd 将在配置的时间到期后关闭端口,但您可以根据需要继续进行 ssh 会话。

fwknopd - 防火墙敲击操作员守护进程

下面是它的工作原理。

服务器端(之前)

root@gorilla:~# iptables -n --list |grep 8.8.8.8

客户端(注意:8.8.8.8 是我的客户端主机 IP 的示例)

arul@cheetah$ fwknop -A tcp/22 -a 8.8.8.8 -D <my_servers_public_ip>
Enter encryption key: 

服务器端(之后)

root@gorilla:~# cat /var/log/syslog|grep 8.8.8.8
Feb  4 09:28:36 gorilla fwknopd[1191]: Added Rule to FWKNOP_INPUT for 8.8.8.8, tcp/22 expires at 1486222476

root@gorilla:~# iptables -n --list |grep 8.8.8.8
ACCEPT     tcp  --  8.8.8.8              0.0.0.0/0            tcp dpt:22 /* _exp_1486222476 */

笔记: 您必须打开 UDP 端口 62201,以便 fwknop 客户端与 fwknopd 通信。

答案4

允许群组指令并在其中列出您的用户帐户 - 这样只有您才被允许使用 ssh

相关内容