出于安全原因,我想在不使用 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 会话。
下面是它的工作原理。
服务器端(之前)
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