centos ssh安全设置有哪些关键步骤和注意事项?

在CentOS系统中,SSH(Secure Shell)是远程管理服务器的核心工具,但其默认配置可能存在安全风险,通过合理的安全设置,可以有效防止未授权访问、暴力破解等威胁,以下从多个维度详细说明CentOS SSH安全配置的最佳实践,帮助构建更安全的远程管理环境。

centos ssh安全设置有哪些关键步骤和注意事项?

修改默认SSH端口

默认的SSH端口22是攻击者最先尝试的目标,修改为非标准端口可显著降低自动化扫描攻击的风险,编辑SSH配置文件/etc/ssh/sshd_config,找到#Port 22一行,取消注释并修改为其他端口(如2222),确保端口未被其他服务占用:

Port 2222

修改后重启SSH服务使配置生效:systemctl restart sshd,需注意,防火墙需同步放行新端口,firewall-cmd --permanent --add-port=2222/tcp && firewall-cmd --reload

禁用root用户直接登录

直接使用root用户登录SSH会增加权限泄露风险,建议通过普通用户登录后切换至root身份,在/etc/ssh/sshd_config中找到PermitRootLogin行,设置为no

PermitRootLogin no

若需临时使用root权限,可创建普通用户并赋予sudo权限:useradd admin && passwd admin && visudo,在文件中添加admin ALL=(ALL) ALL

使用密钥认证替代密码认证

密码认证易遭受暴力破解,而SSH密钥认证基于公私钥对,安全性更高。

  1. 生成密钥对:在客户端执行ssh-keygen -t rsa -b 4096,按提示生成公钥(~/.ssh/id_rsa.pub)和私钥(~/.ssh/id_rsa)。
  2. 上传公钥到服务器:使用ssh-copy-id -i ~/.ssh/id_rsa.pub admin@服务器IP将公钥传输到服务器的~/.ssh/authorized_keys文件中。
  3. 禁用密码认证:在/etc/ssh/sshd_config中设置PasswordAuthentication no,并确保PubkeyAuthentication yes已启用,重启SSH服务后,仅密钥认证有效。

配置SSH访问控制(Allow/Deny)

通过限制允许登录的IP地址,可大幅减少攻击面,在/etc/ssh/sshd_config中添加以下配置(示例仅允许192.168.1.0/24网段访问):

AllowUsers admin@192.168.1.0/24
# 或使用Deny拒绝特定IP
DenyUsers 192.168.1.100

配置后重启SSH服务,未授权的IP将无法建立连接。

centos ssh安全设置有哪些关键步骤和注意事项?

启用Fail2Ban防止暴力破解

Fail2ban是一款通过监控日志自动封禁恶意IP的工具,可有效抵御SSH暴力破解。

  1. 安装Fail2banyum install -y fail2ban
  2. 配置规则:编辑/etc/fail2ban/jail.local(若无则复制jail.conf),添加以下SSH规则:
    [sshd]
    enabled = true
    port = 2222
    filter = sshd
    logpath = /var/log/secure
    maxretry = 3
    bantime = 3600
  3. 启动服务systemctl enable fail2ban && systemctl start fail2ban
    当检测到连续3次登录失败时,IP将被封禁1小时。

定期更新SSH服务与系统

漏洞是安全风险的根源,保持SSH服务和系统版本最新至关重要。

  1. 更新系统yum update -y,定期执行此命令修复已知漏洞。
  2. 升级SSH软件包yum update openssh-server openssh-clients,确保使用最新版本的SSH协议和安全补丁。

优化SSH超时与连接设置

通过调整超时时间和连接参数,可减少资源占用并提升安全性,在/etc/ssh/sshd_config中添加以下配置:

ClientAliveInterval 300  # 每5秒发送一次心跳包
ClientAliveCountMax 3    # 最多发送3次心跳后断开连接
LoginGraceTime 60       # 登录超时时间(秒)
MaxAuthTries 2          # 每次连接最大认证尝试次数

重启SSH服务后,闲置连接将自动断开,避免长时间占用资源。

禁用不必要的SSH协议版本

SSHv1存在严重安全漏洞,仅启用SSHv2,在/etc/ssh/sshd_config中确保以下配置生效:

Protocol 2

若配置为Protocol 2,1,需修改为Protocol 2以禁用不安全的SSHv1。

限制SSH访问用户与命令

通过Match指令可细化访问控制,例如仅允许特定用户执行特定命令:

centos ssh安全设置有哪些关键步骤和注意事项?

Match User backup
    ChrootDirectory /home/backup
    ForceCommand /usr/bin/rsync --server

此配置将backup用户限制在/home/backup目录下,且仅允许执行rsync命令,降低权限滥用风险。

审计SSH日志与监控异常

SSH日志记录了所有登录尝试,定期审计可及时发现异常,日志文件位于/var/log/secure,使用以下命令分析登录情况:

# 查看最近登录失败IP及次数
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
# 查看当前登录用户
last -n 10

设置日志轮转(/etc/logrotate.d/sshd)避免日志文件过大,确保历史日志可追溯。


相关问答FAQs

Q1:修改SSH端口后无法连接,如何排查?
A:首先检查防火墙是否放行新端口(firewall-cmd --list-ports),确认端口已添加,其次检查SSH服务状态(systemctl status sshd),确保配置无语法错误(sshd -t),若使用云服务器,还需检查安全组规则是否开放新端口。

Q2:如何验证SSH密钥认证是否生效?
A:在客户端尝试使用密钥登录:ssh -i ~/.ssh/id_rsa admin@服务器IP,若成功登录且无需输入密码,说明密钥认证生效,此时可测试密码登录(ssh admin@服务器IP),若提示“Permission denied”且输入正确密码仍失败,则密码认证已被成功禁用。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-12-11 18:31
下一篇 2025-12-11 18:36

相关推荐

  • securecrt无法连接centos怎么办?排查步骤与解决方法

    在使用SecureCRT连接CentOS服务器时,可能会遇到连接失败的问题,这种情况通常由多种因素导致,包括网络配置、防火墙设置、SSH服务状态或SecureCRT本身的参数设置等,本文将系统分析常见原因并提供解决方案,帮助用户快速排查和修复连接问题,检查网络连通性网络基础问题是导致连接失败的首要因素,确认本地……

    2025-11-25
    0010
  • 如何优化服务器环境配置以提升软件性能?

    服务器环境配置软件是用于搭建和管理服务器运行环境的工具,包括操作系统、数据库、Web服务器等组件。它可以帮助用户快速部署和优化服务器,提高服务器性能和稳定性。常见的服务器环境配置软件有LAMP、WAMP、XAMPP等。

    2024-08-04
    0020
  • 如何在CentOS系统中设置虚拟缓存来优化性能?

    在 CentOS 系统中,虚拟缓存通常指的是“交换空间”,它是一种磁盘上的虚拟内存,当系统的物理内存(RAM)不足时,操作系统会将一部分不常访问的内存页从 RAM 移动到交换空间中,从而为需要更多内存的活跃进程释放空间,合理配置交换空间可以有效防止系统因内存耗尽而崩溃,提升多任务处理能力和系统稳定性,本文将详细……

    2025-10-01
    008
  • 如何有效地使用function关键字来创建函数?

    您的问题似乎与创建函数有关,但提供的信息不足以生成一段50100字的摘要。如果您能提供更具体的上下文或描述关于函数的内容,我将很乐意帮助您生成摘要。您可以告诉我函数的目的、输入、输出以及它如何操作数据等细节。

    2024-08-10
    007

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信