SSH服务安全优化

SSH 是 Secure Shell 的缩写,用来管理 Linux 服务器。如果大家购买的不是 managed VPS 的话,需要大家自己 SSH 登录到 VPS 进行管理,作为一个必备的服务,我们一定要做好安全优化,这篇日志给大家介绍一下 SSH 服务器端的安全优化。

前言

1、SSH服务的配置文件位于 /etc/ssh/sshd_config ,我们可以使用vi编辑器进行修改编辑,修改配置文件前,先备份一份。

2、修改完配置文件后,使用配置文件测试工具进行校验一遍,看看配置文件有没有问题,如果没有问题,就不会有任何的输出,代码如下:

sshd -t

3、配置文件没有问题后,需要重新加载 SSH 服务使配置文件生效:

systemctl reload sshd.service

4、查看 SSH 服务配置信息:

sshd -T

服务器端配置

1、修改端口号

SSH服务默认使用的是22端口,可以修改成不常用的端口,再使用防火墙对端口进行访问过滤,确保安全。

Port 22222

2、禁用 rhosts

rhosts 是一种不是很安全的身份验证系统,现在也不常用了。默认情况下是处于禁用状态的,为了安全起见,再次检查一下。

IgnoreRhosts yes

3、禁用空密码

每个账户应该有密码保护,默认情况下就是禁用空密码。

PermitEmptyPasswords no

4、限制密码尝试错误次数

这个可以用来防止暴力破解。

MaxAuthTries 3

5、采用公钥登录

相比帐号密码方式,公钥登录( macOS  、 Windows )方式更方便,也更安全,可以有效阻止暴力破解。

PubkeyAuthentication yes
PasswordAuthentication no

6、禁用root登录

建议使用一般用户登录,再进行提权登录root账户。因为 Linux 都有一个 root 用户,很容易遭受暴力破解,其他用户登录,选一个好的用户名,大家很难猜到用户名。

PermitRootLogin no

7、设置SSH协议版本

目前一般都是第二版,虽然第一版仍然可用,但是不够安全,建议设为2。

Protocol 2

8、关闭 X11Forwarding

X11Forwarding 协议没有考虑安全因素,在于本地建立连接的时候,服务器端可能会发送恶意指令到本地。如果使用不到,建议关闭。

X11Forwarding no

9、使用 HashKnownHosts

每次登录,在客户端的 known_hosts 文件中有一条关于远程主机的签名记录,恶意程序可能会利用这个记录进行扩散。 HashKnownHosts 会对这些记录进行哈希处理。注意,这条参数在本地客户端的 /etc/ssh/ssh_config 配置文件中修改。

HashKnownHosts yes

下面两张图是对比,第一张图是没有开启 HashKnownHosts 的记录,第二张是开启 HashKnownHosts 后的记录。

没有开启hashknownhost时known_hosts显示的记录

开启hashknownhosts后known_host显示的记录

扩展阅读

1、本文主要翻译自:https://linux-audit.com/audit-and-harden-your-ssh-configuration/

2、HashKnownHosts 参数配置:https://linux-audit.com/audit-ssh-configurations-hashknownhosts-option/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>