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 等加固措施,您可以有效地提高服务器的安全性。随着网络安全威胁不断变化,及时更新安全策略、加强监控和定期审计,始终保持服务器的高安全性,是保障企业持续运营的关键。
服务器的安全性是不断演进的过程,通过采取综合性的防护措施,您不仅能够防止潜在攻击,还能为服务器的长期稳定运行提供保障。











