第一次打开 SSH 服务器到互联网,要检查什么

hou*_*oft 9 security linux ssh

我已经运行了一些服务器相当长的时间,但我总是只租用它们,所以我没有太多保护实际服务器的经验(与我在其上运行的应用程序相反)。

现在我想将我的小型家庭 SSH 服务器开放到互联网。

我将是唯一一个使用它的人,我的密码足够复杂,我已将默认 SSH 端口更改为 4000 左右,唯一可访问的端口是通过我的路由器/防火墙上的端口转发的此 SSH 端口,并且它已更新每天晚上自动运行(它运行 Arch Linux,一个滚动发行版)。

如果有的话,我应该做些什么来保证它的安全?

谢谢!

chx*_*chx 22

确保禁用 root 登录PermitRootLogin no。我也会考虑完全禁用密码PasswordAuthentication no并使用公钥PubkeyAuthentication yes

  • 如果您允许密码验证,请考虑安装 fail2ban 以防止暴力攻击,并为任何允许通过 ssh 登录的帐户使用强密码 (4认同)
  • @Erika 我认为 embobo 暗指对任何外国系统的普遍不信任。即使 SSH 是加密的,外国机器仍然可以说,记录您的击键。因此密码 = 泄露。 (3认同)

bam*_*bam 9

确保只允许使用 SSH-2(因为 SSH-1过去曾引起一些安全问题):

Protocol 2
Run Code Online (Sandbox Code Playgroud)

指定哪些是唯一允许通过 SSH 登录的用户:

AllowUsers bob, john
Run Code Online (Sandbox Code Playgroud)

为了提高安全性,禁止密码身份验证并使用公钥身份验证:

PasswordAuthentication no
PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)

注意:本教程包含有关创建密钥和配置公钥身份验证的说明。


Dan*_*son 5

除了有关禁用 root 登录或仅使用公钥身份验证的要点外,我还会仔细检查系统上是否没有用户帐户具有简单或空密码。您已经说过您的个人密码没有问题,但这并不排除因其他原因创建的密码错误的帐户。

举个例子:我必须修复一个网络,以前的管理员从源代码​​在他的所有系统上安装了 nagios,并创建了一个没有密码或密码为“nagios”的 nagios 用户,然后继续获得三台不同的机器妥协了。