当我从动态IP地址登录时如何限制OpenSSHD?

当我从动态IP地址登录时如何限制OpenSSHD?

所以我在 Ubuntu 机器上有一个使用静态 IP 地址的 OpenSSHD。

我的笔记本电脑有动态 IP 地址 ->“我的意思是真正动态”,所以不能指定任何范围...

我需要限制 SSHD 仅显示它在我的笔记本上(这样其他人就看不到有 sshd 正在监听某个端口,只有我)。

我正在考虑 Knockd (实现起来非常简单)。有什么解决办法吗?

答案1

老实说,我只是设置基于密钥的身份验证,禁用密码身份验证,而不用担心人们敲响门把手。只要你保守秘密,一切都会好起来的。这个问题经常出现,在许多情况下,这是出于对日志文件混乱的担忧;虽然这很烦人,但这也表明您的安全策略正在发挥作用。

如果你真的需要如果您的 sshd 仅对您的笔记本可见,您可以在它和服务器之间设置 OpenVPN,然后配置 sshd,以便它绑定到 tun/tap 接口而不是物理接口。但随后你将所有流量加密两次,对我来说这似乎是浪费熵。

答案2

我推荐几种实现安全SSH登录的方法:

  1. 使用拒绝主机处理未经授权的访问尝试
  2. 使用公钥认证。
  3. 在 sshd_config 中禁用旧的/弱的协议
  4. 如果可能,将默认 SSH 端口从 22 更改为“异国情调”,例如 9876

这里如果很好的话文章关于如何提高 OpenSSHD 服务器的安全性。

也来看看这里

答案3

您可以创建 no-ip、duckdns 等类型的主机,并使用以下 shell 脚本:

#!/bin/bash

DYN_IP="myhost.dynamic.example.com"
CMD=$(ping -c1 $DYN_IP | head -1 | awk -F' ' '{ print $3}' | sed 's/(\|)//g')
FILE="./last_ip.txt"
NEW_IP=$CMD

if [ -e $FILE ]; then
        OLD_IP=$(cat $FILE)
else
        OLD_IP="0"
fi

if [ $OLD_IP != $NEW_IP ]; then
        echo $NEW_IP > last_ip.txt
        sed -i "/^sshd: $OLD_IP/d" /etc/hosts.allow
        echo "sshd: $NEW_IP" >> /etc/hosts.allow
        echo "Allow ip changed to $NEW_IP"
fi

添加 crontab 每 5 分钟运行一次:

 */5 * * * * root /pathtoyou/script

此问题中用户 PRIX 的积分:https://serverfault.com/questions/187231/accessing-ip-restricted-server-from-dynamic-ip

答案4

您可以使用 no-ip.org 服务。免费注册一个地址,例如my-laptop.noip.org,然后将软件下载到您的笔记本电脑上,每当您的 IP 发生变化时,该软件都会更新您的地址以指向您的新 IP 地址。

您只需通过 SSH 连接到my-laptop.noip.org.

实际上我有一个服务是这样运行的。 :D

相关内容