SSH(Secure Shell)是用于远程命令行访问服务器的核心工具。然而,要真正保障 SSH 的安全性,您需要限制访问权限到特定 IP 地址,并遵循一些最佳实践。如果默认将 SSH 开放给所有人访问,这将成为巨大的安全隐患,很容易遭受暴力破解攻击和未经授权的登录。
本文将介绍如何通过限制 IP 地址来保护 Linux 服务器上的 SSH 访问权限,同时分享一些可能对您有用的 SSH 加固技巧。随着威胁的不断演变,加强服务器的安全性和主动进行服务器管理非常重要。通过这些方法,您可以大幅降低安全漏洞的风险,并确保服务器平稳运行。
1. SSH 安全性:使用 sshd_config 文件
修改 sshd_config 文件是限制 SSH 访问 IP 地址的最简单方法之一。以下是步骤:
打开 sshd_config 文件:
vi /etc/ssh/sshd_config
找到以下配置行:
#PermitRootLogin yes
在它下方添加如下内容:
AllowUsers username@ip_address
将 username 替换为要允许访问的用户名,ip_address 替换为要允许访问的 IP 地址。如果需要添加多个 IP 地址,可用空格分隔。
保存并退出文件,然后重启 SSH 服务:
systemctl restart sshd
这样,只有指定用户从指定 IP 地址访问服务器时才能使用 SSH。
2. SSH 安全性:使用 TCP Wrappers
TCP Wrappers 是一种基于规则的访问控制机制,可以通过配置 /etc/hosts.allow 和 /etc/hosts.deny 文件来限制网络服务访问权限。
使用 TCP Wrappers 限制 SSH 访问的步骤:
① 编辑 /etc/hosts.allow 文件:
vi /etc/hosts.allow
添加以下行:
sshd: IP_address
将 IP_address 替换为允许访问的 IP 地址。
② 编辑 /etc/hosts.deny 文件:
vi /etc/hosts.deny
添加以下行:
sshd: ALL
这将禁止其他所有 IP 地址的访问。
③ 保存并退出文件,然后重启 SSH 服务:
systemctl restart sshd
3. SSH 安全性:使用防火墙规则
您还可以通过防火墙规则限制 SSH 访问权限。以下是不同防火墙工具的实现方法:
(1) 使用 iptables
① 创建一个新规则链并添加规则:
iptables -N SSHALLOW
iptables -A SSHALLOW -s IP_address -p tcp --dport ssh -j ACCEPT
iptables -A SSHALLOW -j DROP
将 IP_address 替换为允许访问的 IP 地址。
② 保存规则:
service iptables save
③ 重载规则:
sudo service iptables reload
(2) 使用 ufw
① 允许指定 IP 地址访问:
sudo ufw allow from [IP_address] to any port ssh
将 [IP_address] 替换为允许访问的 IP 地址。
② 拒绝其他所有 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]"
② 拒绝其他所有 IP 地址:
sudo firewall-cmd --permanent --zone=public --remove-service=ssh
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="!
③ 重载规则:
sudo firewall-cmd --reload
4. SSH 安全加固最佳实践
(1) 使用非标准端口
默认情况下,SSH 监听 22 端口。更改为非标准端口可以提高安全性:1. 编辑 sshd_config 文件:
vi /etc/ssh/sshd_config
① 找到以下行并更改端口号:
Port 22
将 22 替换为 1024 到 65535 范围内的未使用端口。
② 重启服务:
systemctl restart sshd
(2) 使用 SSH 密钥代替密码
生成 SSH 密钥对并将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中。确保在 sshd_config 文件中启用以下配置:
PubkeyAuthentication yes
(3) 禁用 root 登录
在 sshd_config 文件中修改以下配置:
PermitRootLogin no
(4) 使用 Fail2ban
Fail2ban 通过监控日志文件并禁止显示恶意行为的 IP 地址,保护服务器免受暴力破解攻击。安装和配置 Fail2ban 后,您可以显著提高 SSH 的安全性。
5. 结论
保护服务器安全需要不断努力。通过限制 SSH 访问、使用非标准端口、启用 SSH 密钥认证以及配置 Fail2ban,您可以显著降低服务器遭受攻击的风险。随着网络攻击的频率和复杂性不断提高,确保服务器安全显得尤为重要。
将安全性视为服务器管理的优先事项,并定期更新您的安全策略,是保障系统持续运行的关键。