问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Debian如何配置安全的SSH访问规则

创作时间:
作者:
@小白创作中心

Debian如何配置安全的SSH访问规则

引用
1
来源
1.
https://ruomima.com/ask/how-to-configure-secure-ssh-access-rules-in-debian.html

SSH(安全外壳协议)是进行远程管理和文件传输的标准工具,尽管 SSH 提供了相对安全的连接,但如果没有恰当的配置,可能会成为网络攻击的目标。对于使用Debian操作系统的服务器而言,学习如何配置安全的 SSH 访问规则至关重要。

在Debian中配置安全的SSH访问规则,可遵循以下步骤:1) 修改/etc/ssh/sshd_config文件,禁用root用户登录(PermitRootLogin no)和更改默认端口(Port 2222);2) 启用公钥认证并禁用密码登录(PasswordAuthentication no);3) 使用防火墙(如ufw)限制SSH访问,仅允许特定IP;4) 定期更新软件和监控登录记录,以提升安全性。

1. 更新系统

在配置任何安全设置之前,首先确保你的 Debian 系统是最新的。使用以下命令更新软件包:

sudo apt update  
sudo apt upgrade  

通过保持系统更新,你可以减少已知漏洞被攻击的风险。

2. 更改 SSH 端口

默认情况下,SSH 在 22 端口上运行。攻击者常常扫描 22 端口以寻找可利用的主机。更改 SSH 端口是一项简单但有效的安全措施:

  1. 打开 SSH 配置文件:
sudo nano /etc/ssh/sshd_config  
  1. 找到以下行:
#Port 22  
  1. 将其更改为一个不常用的端口,例如 2222:
Port 2222  
  1. 保存更改并退出。

  2. 重启 SSH 服务:

sudo systemctl restart ssh  

在更改端口后,记得在继续连接时指定新端口。

3. 禁用根用户登录

默认情况下,SSH 配置允许根用户直接登录,这样的设置非常危险。应禁用根用户通过 SSH 登录的权限:

  1. 再次打开 SSH 配置文件:
sudo nano /etc/ssh/sshd_config  
  1. 找到以下行:
PermitRootLogin yes  
  1. 将其更改为:
PermitRootLogin no  
  1. 保存更改并重启 SSH 服务。

用户将只能够通过普通用户账户登录,并根据需要使用 sudo 获取管理员权限。

4. 使用密钥认证

使用 SSH 密钥认证而非口令登录是提高 SSH 安全性的最佳实践。密钥认证的安全性一般比密码更强,且可以避免暴力破解。

生成 SSH 密钥对

  1. 在本地电脑上生成密钥对:
ssh-keygen -t rsa -b 4096  

按照提示保存密钥,通常默认路径为 ~/.ssh/id_rsa,并可选择设置一个密码保护密钥。

  1. 将公钥复制到远程服务器:
ssh-copy-id -p 2222 username@remote_host  

其中 -p 2222 为指定 SSH 端口,如果使用的是自定义端口。

配置 SSH 仅允许密钥认证

  1. 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config  
  1. 确保以下行已配置:
PasswordAuthentication no  
PubkeyAuthentication yes  
  1. 重启 SSH 服务。

通过这样配置后,用户将只能使用密钥进行身份验证,这将大幅提高 SSH 连接的安全性。

5. 限制用户登录

你可以通过 SSH 配置文件限制哪些用户或组可以通过 SSH 登录。这可以通过 AllowUsersAllowGroups 指令来实现,例如:

AllowUsers user1 user2  

AllowGroups sshusers  

在配置这些指令时,请确保将其添加在文件的底部,以确保它们会被应用。

6. 使用防火墙

配置防火墙以限制 SSH 连接是增强系统安全的重要步骤。通常可以使用 iptablesufw 来实现。

UFW 配置示例

  1. 安装 ufw(如果未安装):
sudo apt install ufw  
  1. 启用 UFW:
sudo ufw enable  
  1. 允许自定义 SSH 端口(例如 2222):
sudo ufw allow 2222/tcp  
  1. 只允许特定 IP 地址(例如 192.168.1.100):
sudo ufw allow from 192.168.1.100 to any port 2222  
  1. 查看 UFW 状态以确认规则有效:
sudo ufw status  

如有必要,可以进一步添加其他规则来加强安全性,例如允许特定子网或地址段。

7. 审计和监控 SSH 登录

为保障安全,可以设置登录审计和监控。可以使用 fail2ban 工具来监控 SSH 登录失败次数,并在过多失败登录后自动封禁该 IP 地址。

安装和配置 fail2ban

  1. 安装 fail2ban
sudo apt install fail2ban  
  1. 创建一个本地配置文件以覆盖默认配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local  
  1. 编辑 jail.local 文件以配置 SSH 监控:
sudo nano /etc/fail2ban/jail.local  

确保修改 [sshd] 部分启用监控:

enabled = true  
maxretry = 5  
bantime = 600  
port = 2222  
  1. 重启 fail2ban
sudo systemctl restart fail2ban  

通过这些步骤,可以有效地防御暴力破解攻击。

8. 定期审查安全日志

定期审查 /var/log/auth.log 中 SSH 相关的日志将有助于发现潜在的安全威胁。可以使用以下命令查看日志文件:

sudo less /var/log/auth.log  

监控这些日志将有助于发现可疑的登录尝试和其他可能的攻击迹象。

结论

通过对 Debian 系统上的 SSH 服务进行安全配置,您可以显著降低受到未授权访问的风险。更改默认端口、禁用根用户登录、使用密钥认证、限制用户、配置防火墙、监控登录行为等一系列措施共同构成了一套完整的 SSH 安全策略。在实施这些措施后,请务必定期审查和更新安全配置,以应对不断演变的网络威胁。只有通过长久的关注和持续的优化,才能确保服务器的安全与稳定。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号