服务器设置ssh登录密码

教程大全 2026-02-11 09:46:24 浏览

在Linux服务器管理中,SSH(Secure Shell)是远程登录和管理服务器的核心工具,而密码登录作为最基础的认证方式,其安全性直接关系到服务器的整体安全,合理配置SSH密码登录,既能确保便捷的远程管理,又能有效抵御未授权访问,本文将从密码复杂度策略、SSH服务配置、登录限制、安全加固及日志审计五个方面,详细阐述服务器SSH密码登录的安全设置方法。

密码复杂度策略:筑牢第一道防线

密码是SSH认证的第一道关卡,若密码过于简单或使用常见组合,极易被暴力破解,设置强密码策略是保障安全的基础。

通过 /etc/login.defs /etc/pam.d/passwd 文件统一系统密码复杂度要求,在 login.defs 中设置 PASS_MIN_LEN 12 (最小密码长度12位), PASS_MAX_DAYS 90 (密码有效期90天);在 pam.d/passwd 中启用 pam_cracklib.so 模块,要求密码必须包含大小写字母、数字及特殊字符,并检测连续字符重复(如)或键盘顺序字符(如)。

定期强制用户更新密码,可通过命令设置密码过期提醒,例如 chage -W 7 username (提前7天提醒用户修改密码),避免长期使用同一密码增加泄露风险,对于服务器管理员账户,建议采用密码管理器生成并存储高强度随机密码,避免人为记忆导致密码简化。

SSH服务配置:精细化控制登录行为

SSH服务的核心配置文件为 /etc/ssh/sshd_config ,通过修改该文件可实现对密码登录的精细化控制。

禁用root直接登录

默认情况下,SSH允许root用户直接登录,这大大增加了安全风险,建议禁用root直接登录,改为使用普通用户账户登录后,通过提权执行管理命令,在 sshd_config 中设置 PermitRootLogin no ,并重启SSH服务: systemctl restart sshd

限制密码登录方式

为提升安全性,可结合密钥认证与密码认证,并优先使用密钥认证,在 sshd_config 中设置 PasswordAuthentication yes (启用密码登录),同时 PubkeyAuthentication yes (启用密钥认证),并通过 ChallengeResponseAuthentication no 禁用基于挑战的响应认证(如S/KEY),减少认证漏洞。

修改默认SSH端口

默认SSH端口为22,攻击者常通过该端口发起暴力破解,可修改为非默认端口(如2222),在 sshd_config 中设置,并确保防火墙开放新端口,需注意,修改后需通过参数指定端口登录: ssh -p 2222 username@server_ip

登录限制:防暴力破解的关键措施

使用fail2ban拦截恶意IP

是一款基于日志的入侵防御工具,可通过监控SSH登录日志,自动封禁频繁失败的IP地址,安装后,编辑 /etc/fail2ban/jail.local ,配置SSH监狱规则:

[sshd]enabled = trueport = 2222filter = sshdlogpath = /var/log/auth.logmaxretry = 3bantime = 3600# 封禁1小时

配置完成后启动服务: systemctl enable --now fail2ban ,当同一IP连续3次登录失败时,将被自动封禁1小时。

若服务器仅允许特定IP(如公司内网IP)访问SSH,可在 sshd_config 中设置 AllowUsers AllowGroups ,或使用/限制源IP,通过仅允许192.168.1.0/24网段访问SSH端口:

firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 port protocol=tcp port=2222 accept"firewall-cmd --reload

配置登录超时与空闲断开

sshd_config 中设置 ClientALiveInterval 300 (每5秒发送一次保活包)和 ClientAliveCountMax 0 (允许0次保活失败),若客户端5分钟内无操作,将自动断开连接,避免长期占用会话资源。

安全加固:多维度提升防护能力

除基础配置外,还需通过系统级加固措施进一步强化SSH安全。

禁用空密码与危险账户

确保所有系统用户均设置密码,检查 /etc/shadow 中是否存在空密码账户(如开头的行),发现后立即使用 服务器设置ssh登录密码 passwd -l username 锁定账户,对于闲置的测试账户或过期账户,及时删除或禁用。

使用SELinux/AppArmor强制访问控制

启用SELinux(CentOS/RHEL)或AppArmor(Ubuntu),限制SSH进程的文件访问权限,在SELinux中设置SSH仅允许读写必要目录:

setsebool -P sshd_disable_transitions onchcon -R -t sshd_sys_home_t /home/username

定期更新SSH软件版本

定期检查SSH软件版本(),及时通过系统包管理器更新至最新版本,修复已知漏洞,在Ubuntu中运行 sudo apt update && sudo apt upgrade openssh-server ,在CentOS中运行 sudo yum update openssh

日志审计:追溯与异常检测

完善的日志审计是安全事件的追溯基础,需确保SSH登录日志记录完整并及时分析。

配置详细日志记录

sshd_config 中设置 LogLevel VERBOSE ,记录详细的登录信息,包括登录时间、IP地址、用户名及认证结果,日志文件默认位于 /var/log/auth.log (Ubuntu)或 /var/log/secure (CentOS)。

定期分析登录日志

使用、等工具分析日志,检测异常登录行为,查看最近24小时内的失败登录尝试:

grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

若发现同一IP高频失败登录,可手动封禁该IP或调整规则。

集中日志管理

对于多台服务器,建议使用或(Elasticsearch、Logstash、Kibana)将SSH日志集中存储,便于统一监控与分析,通过设置日志告警规则,当检测到异常登录模式(如短时间内多次失败)时,及时发送告警通知管理员。

SSH密码登录的安全配置是一个系统工程,需从密码策略、服务配置、访问控制、系统加固及日志审计等多维度入手,通过设置强密码、禁用root直接登录、限制登录来源、部署入侵防御工具及定期审计日志,可有效降低暴力破解和未授权访问风险,为服务器构建坚实的安全防线,安全配置需根据实际业务需求动态调整,并定期评估与优化,确保安全性与可用性的平衡。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐