加强Linux服务器SSH安全性:限制访问与加固技巧

SSH(Secure Shell)作为远程命令行访问 Linux 服务器的核心工具,广泛应用于服务器管理。然而,若未对SSH访问进行适当的限制和加固,便会面临暴力破解攻击、未经授权的登录等风险,导致严重的安全隐患。因此,合理限制 SSH 访问权限并遵循最佳实践是确保服务器安全的关键步骤。

本文将深入探讨如何通过限制 SSH 访问权限、加强加固措施来保护您的Linux服务器,减少潜在的攻击面,提升整体安全性。我们将结合实用的配置方法和安全加固技巧,帮助您最大化降低服务器暴露的风险。

一、限制 SSH 访问:精准控制与访问权限管理

1. 使用 `sshd_config` 文件限制访问

通过修改 `sshd_config` 文件来限制特定 IP 地址访问 SSH,是最直接、简单的方式。以下是具体步骤:

1). 打开 SSH 配置文件:

vi /etc/ssh/sshd_config

2). 添加允许访问的用户与 IP 地址:

找到 `#PermitRootLogin yes` 配置项,下面添加:

AllowUsers username@ip_address

将 `username` 替换为允许访问的用户名,`ip_address` 替换为允许访问的 IP 地址。如果允许多个 IP 地址访问,可以用空格分隔。

3). 保存并退出文件,然后重启 SSH 服务以应用配置:

systemctl restart sshd

这样,只有指定的用户在指定的 IP 地址范围内才能访问 SSH,其他来源的访问会被拒绝。

2. 使用 TCP Wrappers 增加安全性

TCP Wrappers 提供基于规则的访问控制机制,能够进一步加强 SSH 安全性。通过配置 `/etc/hosts.allow` 和 `/etc/hosts.deny` 文件,您可以更精细地控制哪些 IP 地址可以访问 SSH 服务。

1). 编辑 `/etc/hosts.allow` 文件:

vi /etc/hosts.allow

添加如下规则:

sshd: IP_address

2). 编辑 `/etc/hosts.deny` 文件:

vi /etc/hosts.deny

添加:

sshd: ALL

3). 保存文件并重启 SSH 服务:

systemctl restart sshd

这样配置后,只有在 `hosts.allow` 文件中列出的 IP 地址才能访问 SSH,其他的 IP 地址都会被拒绝。

3. 使用防火墙规则限制访问

通过防火墙规则进一步限制 SSH 访问,可以有效地阻止未授权的连接。以下是通过 `iptables`、`ufw` 和 `firewalld` 配置防火墙的实现方法:

(1) 使用 iptables

①. 创建规则链并添加规则:

iptables -N SSHALLOW
iptables -A SSHALLOW -s IP_address -p tcp --dport ssh -j ACCEPT
iptables -A SSHALLOW -j DROP

②. 保存并重载规则:

service iptables save
sudo service iptables reload

(2) 使用 ufw

①. 允许指定 IP 地址访问:

sudo ufw allow from IP_address to any port ssh

②. 拒绝其他所有 IP 地址访问:

sudo ufw default deny incoming
sudo ufw reload

(3) 使用 firewalld

①. 允许指定 IP 地址访问:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP_address" port protocol="tcp" port="22" accept'

②. 拒绝其他所有 IP 地址:

sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --reload

通过防火墙控制 SSH 访问,可以有效地减少暴露在外部网络中的攻击面。

二、SSH 安全加固最佳实践

1. 使用非标准端口

默认情况下,SSH 服务监听 22 端口,暴露在外界网络中。为了减少自动化攻击的风险,建议将 SSH 服务端口更改为不常用的端口。

1. 修改 `sshd_config` 文件:

vi /etc/ssh/sshd_config

找到 `Port 22` 配置行,修改为一个未使用的端口,如:

Port 2222

2. 重启 SSH 服务:

systemctl restart sshd

2. 使用 SSH 密钥认证代替密码登录

密码登录容易受到暴力破解攻击,而使用 SSH 密钥对认证可以大大提高安全性。

1). 生成 SSH 密钥对:

ssh-keygen -t rsa -b 4096

2). 将公钥添加到服务器的 `~/.ssh/authorized_keys` 文件中:

cat ~/.ssh/id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3). 修改 `sshd_config` 文件启用密钥认证:

PubkeyAuthentication yes

3. 禁用 root 登录

为了防止 root 用户通过 SSH 直接登录,您可以在 `sshd_config` 文件中禁用 root 登录。

1). 修改 `sshd_config` 文件:

PermitRootLogin no

2). 重启 SSH 服务:

systemctl restart sshd

4. 使用 Fail2ban 防止暴力破解

Fail2ban 是一款能够实时监控日志文件并禁止恶意 IP 地址的工具。安装并配置 Fail2ban 后,可以有效防止暴力破解攻击。

1). 安装 Fail2ban:

sudo apt-get install fail2ban

2). 配置 SSH 防护规则:

sudo vi /etc/fail2ban/jail.local

启用 SSH 防护:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3

3). 重启 Fail2ban 服务:

sudo systemctl restart fail2ban

SSH 是服务器管理的重要工具,但也面临着暴力破解等安全威胁。通过限制 IP 地址访问、使用非标准端口、启用 SSH 密钥认证、禁用 root 登录及配置 Fail2ban 等加固措施,您可以有效地提高服务器的安全性。随着网络安全威胁不断变化,及时更新安全策略、加强监控和定期审计,始终保持服务器的高安全性,是保障企业持续运营的关键。

服务器的安全性是不断演进的过程,通过采取综合性的防护措施,您不仅能够防止潜在攻击,还能为服务器的长期稳定运行提供保障。

未经允许不得转载:A5数据 » 加强Linux服务器SSH安全性:限制访问与加固技巧

相关文章

contact