配置一个安全的Linux SSH服务器涉及多个方面,包括使用强密码、禁用root登录、启用公钥认证、配置防火墙等。以下是一些关键步骤和建议:
首先,确保你的系统和SSH服务器软件是最新的:
sudo apt update && sudo apt upgrade
sudo apt install openssh-server
编辑SSH服务器的配置文件 /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Port 22
: 设置SSH监听的端口(默认是22)。PermitRootLogin no
: 禁止root用户通过SSH登录。PasswordAuthentication no
: 禁止使用密码进行身份验证(建议使用公钥认证)。ListenAddress 0.0.0.0
: 允许来自任何IP的连接(谨慎使用,可能会增加安全风险)。UsePAM yes
: 启用PAM(Pluggable Authentication Modules)。ClientAliveInterval 60
: 设置客户端空闲超时时间(秒)。ClientAliveCountMax 3
: 设置最大连续空闲次数。为用户创建SSH密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示操作,可以选择自定义密钥文件的路径。
确保用户只能访问自己的主目录:
sudo chown root:root /home/username
sudo chmod 755 /home/username
使用 ufw
(Uncomplicated Firewall)来限制SSH访问:
sudo ufw allow ssh
sudo ufw enable
测试SSH连接以确保配置正确:
ssh -i /path/to/your_private_key username@your_server_ip
将用户的公钥添加到服务器的 ~/.ssh/authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
定期检查系统日志和SSH日志以发现潜在的安全问题:
sudo tail -f /var/log/auth.log
sudo tail -f /var/log/secure
为了进一步提高安全性,可以考虑使用SSL/TLS加密SSH连接。可以使用 ssh
的 ssl
模块或第三方工具如 OpenSSH
的 sshuttle
。
确保服务器上只运行必要的SSH服务和进程,避免使用不必要的服务增加安全风险。
通过以上步骤,你可以配置一个相对安全的Linux SSH服务器。请根据你的具体需求和环境进行调整。