我有一台使用 CentOS 的 Linux 服务器。我更改了 SSH 配置,使其更安全一些。首先,我将端口从默认的 21(或 22?)更改为 34786。这样,如果有人试图入侵,他们至少要猜出端口?
但我的问题是,我听说有些工具可以找出我的 SSH 配置已设置为哪个端口?从而使此安全措施失效?这是真的吗?
问候
答案1
是的,如果有人想入侵您的特定服务器,他们只需进行端口扫描并找到该端口即可。但这并不意味着它毫无用处,因为大多数针对 SSH 的攻击都不是针对性的,他们只是尝试连接到他们可以访问的所有系统上的端口 22,通常使用大型僵尸网络。根据我的经验,切换 SSH 端口可将每日尝试次数从数千次减少到零次。
更重要的安全措施是禁用 SSH 的 root 访问和基于密码的身份验证,并专门使用基于密钥的身份验证。在 ServerFault 和一般互联网上都有很多关于如何执行此操作的指南。
编辑:
添加/编辑以下内容到您的/etc/ssh/sshd_config
:
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
在执行下一步之前,请确保基于密钥的登录有效:
PasswordAuthentication no
答案2
扫描端口 22 上所有 37 亿个可路由 IPv4 地址以查找 SSH 服务器是可行的。研究人员甚至发表了通过这种方法获取的主机密钥的安全性分析。
扫描 37 亿个可路由 IPv4 地址上的所有 65535 个端口号不太可能。这就是为什么转移到非标准端口号可以保护您免受无针对性攻击的原因。
然而,对于有针对性的攻击,它却毫无用处。如果攻击者只针对一个 IP 地址,那么可以在很短的时间内扫描所有 65535 个端口号。为了防范有针对性的攻击,我有两条建议:
将服务器配置为仅接受@SvW 描述的基于密钥的身份验证。如果您使用 运行 ssh 命令ssh -v hostname
,您应该会看到类似以下内容:
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
确保每次有安全更新可用时都安装它们。
答案3
是的。他们可以进行端口扫描来找出原因,这可能需要一段时间,你能做的最好的事情就是安装配置防火墙,配置它来阻止来自机器人的 SSH 攻击。下一个最好的办法是禁止用户通过 SSH 连接