如何禁用公共 ssh?

如何禁用公共 ssh?

我想禁用对 ssh 的公共访问。我如何才能继续访问服务器但阻止端口 22?我是否需要为 openvpn 创建另一个实例(这没问题)?有没有关于如何将 ssh 隐藏在 vpn 后面的教程?

答案1

根据你希望阻止端口 22 的原因,将 sshd 从端口 22 移到其他任何端口(如 22222 或 12345)可能就足够了。这可以通过添加一行来实现

Port 12345

到 /etc/ssh/sshd_config 并重新加载 sshd 配置,例如

/etc/init.d/ssh reload

您可以拥有多个活动端口,只需在配置文件中添加多个这样的端口行即可。

汤姆汤姆汤姆

答案2

如果你的服务器有 vpn 连接,也许你可以设置你的 ssh 服务器监听地址到本地 vpn 端点,而不是所有本地地址的默认值。

答案3

我有一个Debian 8具有公共 IP 的服务器,当我需要使用时可以阻止和开放访问knockd

apt-get install -y knockd

在配置文件中/etc/knockd.conf

[options]
    UseSyslog

[openSSH]
    sequence    = 2009,8019,9099
    seq_timeout = 20
    command     = /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn

[closeSSH]
    sequence    = 2000,1449,6712
    seq_timeout = 20
    command     = /sbin/iptables -D INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    tcpflags    = syn

现在你需要重新启动服务/etc/init.d/knockd restart

为了打开和关闭 ssh 端口,我的电脑中有一个脚本:

打开

#!/bin/bash

PATH=$PATH:/usr/local/bin

for i in 2009 8019 9099
do
  nmap -Pn -p ${i} --max-retries 0 myremoteserverip
done

关闭

#!/bin/bash

PATH=$PATH:/usr/local/bin

for i in 2000 1449 6712
do
  nmap -Pn -p ${i} --max-retries 0 myremoteserverip
done

现在,最后一步是使用 iptables -P INPUT DROP

此时,您可以尝试使用脚本打开 ssh 端口,如果您有控制台,请执行此操作以进入您的服务器(如果您阻止了)。

答案4

您是否有一个要连接的静态 IP?也许只需允许从该 IP 进行 SSH 即可。否则 VPN 也是一个选项。我自己不允许密码验证。有人拥有我的 4096 位私钥 RSA 的风险非常小。

相关内容