如何在Ubuntu上加固SSH服务防止入侵

弱密码弱密码 in 问答 2024-09-15 1:23:59

在Ubuntu上加固SSH服务可以采取以下措施:1) 修改默认端口(如更改为2222);2) 禁用root登录;3) 使用公钥认证代替密码;4) 设置强密码策略;5) 配置防火墙(如UFW)仅允许特定IP访问;6) 定期更新SSH和系统软件;7) 使用Fail2ban监控并阻止多次失败的登录尝试。保持日志监控以发现潜在威胁。

SSH(Secure Shell)成为了远程管理 Linux 服务器的主要工具,尽管 SSH 为系统管理员提供了便利性,但其安全性也必须得到重视。弱密码将探讨如何在 Ubuntu 上加固 SSH 服务,以防止潜在的入侵和攻击。

Ubuntu系统 Ubuntu操作系统

1. 更新系统与软件包

确保您的 Ubuntu 系统始终保持最新状态是非常重要的。定期更新软件包可以修复已知的安全漏洞。您可以通过以下命令更新您的系统:

sudo apt update

sudo apt upgrade

定期运行上述命令,并考虑设置自动更新,以确保及时获取最新的安全补丁。

2. 修改 SSH 默认端口

默认情况下,SSH 服务运行在 22 端口上,这使其成为攻击者的主要目标。通过更改 SSH 服务的默认端口,可以减少自动扫描工具的攻击。在/etc/ssh/sshd_config文件中,找到以下行:

# Port 22

将其更改为非标准端口,例如:

Port 2222

重新启动 SSH 服务:

sudo systemctl restart sshd

请确保在防火墙和路由器上相应地调整端口转发设置,以允许新的 SSH 端口流量。

3. 使用强密码和公钥身份验证

通过使用复杂且难以猜测的密码,您可以显著提高 SSH 服务的安全性。考虑使用公钥身份验证,这是一种比密码更安全的身份验证方法。在服务器上生成密钥对:

ssh-keygen

将公钥复制到目标服务器上:

ssh-copy-id user@your-server-ip

使用公钥身份验证后,可以禁用密码身份验证。在/etc/ssh/sshd_config中找到以下设置,并进行如下修改:

PasswordAuthentication no

这将强制用户仅使用公钥进行身份验证,提高系统的安全性。

4. 启用防火墙

在 Ubuntu 上,您可以使用 UFW(Uncomplicated Firewall)来保护您的 SSH 服务。确保 UFW 已安装并启用:

sudo apt install ufw

sudo ufw enable

然后允许您的 SSH 端口(如果您已更改默认端口,请记得指定正确的端口):

sudo ufw allow 2222/tcp

可以通过以下命令检查 UFW 状态和允许的规则:

sudo ufw status

您还可以使用 fail2ban 来防止暴力破解攻击,即通过监控日志文件,自动阻止多次失败的登录尝试。

安装 fail2ban:

sudo apt install fail2ban

配置 fail2ban 以保护 SSH。编辑/etc/fail2ban/jail.local文件在适当位置添加以下内容:

[sshd]

enabled = true

port = 2222

filter = sshd

logpath = /var/log/auth.log

maxretry = 5

bantime = 600

这样设置后,如果一个 IP 地址在短时间内多次尝试失败登录,将被锁定 10 分钟。

5. 限制 SSH 用户访问

您可以限制只有特定用户或用户组可以通过 SSH 登录,从而提高系统的安全性。在/etc/ssh/sshd_config文件中添加以下行:

AllowUsers yourusername

如果您使用组访问,可以使用:

AllowGroups sshusers

这将允许只有指定用户或组访问 SSH 服务。

6. 禁用 root 用户 SSH 登录

为了增强安全性,建议禁用 root 账户的 SSH 远程访问。在/etc/ssh/sshd_config中找到以下行,并进行修改:

PermitRootLogin no

这将防止直接以 root 身份登录。管理员可以通过其他用户身份登录后,再使用sudo提权。

7. 使用 SSH 连接时的额外安全措施

  • 使用 SSH 代理转发:在使用 SSH 连接到其他主机时,可以考虑启用 SSH 代理转发,这样可以避免将私人密钥放在多个服务器上。
  • 设置连接超时:通过设置ClientAliveIntervalClientAliveCountMax参数可以增加安全性。编辑/etc/ssh/sshd_config,添加或修改为以下内容:ClientAliveInterval 300

    ClientAliveCountMax 0

这将使 SSH 会话在 300 秒后如果没有活动则自动断开。

8. 定期检查 SSH 登录记录

定期检查/var/log/auth.log文件可以帮助您识别异常活动。使用以下命令查看 SSH 登录记录:

sudo less /var/log/auth.log

您可以使用 grep 命令过滤出特定的 SSH 登录尝试:

sudo grep 'sshd' /var/log/auth.log

这将帮助您捕捉到异常登录尝试,并进行相应的调查。

9. 备份 SSH 配置

在进行任何配置更改之前,请确保备份您的 SSH 配置文件。可以使用以下命令创建备份:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

万一出现问题,可以方便地恢复到之前的状态。

10. 监控与定期审计

建议定期审计您的 SSH 配置和日志,以确保没有未授权的更改或异常活动。可以使用工具(如 Lynis)对系统进行更全面的安全审核。为了保证服务器的安全,定期进行全面的安全扫描非常必要。

使用如下命令安装 Lynis:

sudo apt install lynis

运行 Lynis 进行系统审核:

sudo lynis audit system

根据审计结果采取相应的措施,及时修复系统中的漏洞和不当配置。

结论

SSH 对系统管理员至关重要,但安全性必须得到优先考虑。通过实施上述建议,可以显著提高 Ubuntu 上 SSH 服务的安全性,降低潜在攻击者入侵系统的风险。在安全性日益重要的今天,确保 SSH 服务的安全不仅是管理员的责任,也是保护整体服务器安全的重要环节。定期更新、监控日志、使用强密码和公钥验证等措施,将帮助您构建一个更安全的 SSH 环境。

-- End --

相关推荐