严格保护SSH:关闭所有不必要的功能

⏺️限制SSH允许的功能:即使有密钥,用户也不应能访问所有内容。禁用转发、X11和代理转发:

cat >> /etc/ssh/sshd_config << 'EOF'
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
MaxAuthTries 3
MaxSessions 2
LoginGraceTime 30
EOF


⏺️强制空闲超时:如果会话长时间无活动就会自动关闭:

cat >> /etc/ssh/sshd_config << 'EOF'
ClientAliveInterval 300
ClientAliveCountMax 2
EOF


10分钟无活动后会断开连接。遗忘的开放会话不再持续数天。

⏺️限制登录用户 - 不是通过权限,而是直接在SSH配置文件中:

echo "AllowUsers [email protected]/24 [email protected]" >> /etc/ssh/sshd_config


即使攻击者获得了其他用户的有效密钥,SSH也不会允许其登录。

⏺️通过chroot限制用户权限,仅允许SFTP访问,无shell权限:

cat >> /etc/ssh/sshd_config << 'EOF'
Match User sftp-user
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
EOF

mkdir -p /data/sftp/sftp-user
chown root:root /data/sftp/sftp-user
chmod 755 /data/sftp/sftp-user


用户只能看到自己的目录,无法超出其范围。

⏺️在重启前检查配置是否正确 - 这是必须的,否则可能会失去访问权限:

sshd -t && systemctl reload sshd
 
 
Back to Top