当前位置: 首页 > news >正文

【安全与故障排查】02-SSH安全最佳实践:禁密码+密钥+端口+防暴破

SSH 安全最佳实践:禁密码 + 密钥 + 端口 + 防暴破

专栏:安全 & 故障排查
难度:入门
标签:SSH安全密钥登录fail2ban服务器安全


前言

SSH 是服务器的大门,是攻击者最常盯着的目标。本文从密钥配置到 fail2ban 防暴破,建立一套完整的 SSH 安全防护体系。


一、生成并配置 SSH 密钥对

# 本地生成ED25519密钥对(比RSA更安全,更短)ssh-keygen-ted25519-C"your_email@example.com"# 保存到:~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)# 将公钥上传到服务器ssh-copy-id-i~/.ssh/id_ed25519.pub user@server_ip# 或手动复制cat~/.ssh/id_ed25519.pub>>~/.ssh/authorized_keyschmod600~/.ssh/authorized_keyschmod700~/.ssh

二、sshd_config 完整安全配置

cat>/etc/ssh/sshd_config<<'EOF' # 监听端口(改掉22) Port 22022 # 只监听IPv4(视环境调整) AddressFamily inet # 认证配置 PermitRootLogin no # 禁止root登录 PasswordAuthentication no # 禁止密码登录 PubkeyAuthentication yes # 启用密钥登录 AuthorizedKeysFile .ssh/authorized_keys # 只允许特定用户SSH AllowUsers appuser devuser # 白名单,只允许这些用户 # 安全加固 MaxAuthTries 3 # 最多3次认证尝试 MaxSessions 10 # 最多10个会话 LoginGraceTime 30 # 30秒内必须完成认证 ClientAliveInterval 300 # 空闲300秒发送keepalive ClientAliveCountMax 2 # 2次无响应后断开 TCPKeepAlive yes # 禁用危险功能 X11Forwarding no AllowAgentForwarding no AllowTcpForwarding no PermitTunnel no # 加密套件(只用强加密) KexAlgorithms curve25519-sha256,diffie-hellman-group16-sha512 Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com MACs hmac-sha2-512,hmac-sha2-256 # 日志级别 LogLevel VERBOSE # Banner Banner /etc/ssh/banner.txt EOF# 重启SSH(务必先测试配置!)sshd-t&&systemctl restart sshd

三、SSH 多因素认证(2FA)

# 安装Google Authenticatoryuminstall-ygoogle-authenticator# CentOSaptinstall-ylibpam-google-authenticator# Ubuntu# 为用户配置2FAgoogle-authenticator# 按提示扫描二维码# 编辑 /etc/pam.d/sshd,添加auth required pam_google_authenticator.so# sshd_config中开启ChallengeResponseAuthenticationyes

四、Fail2ban 防暴力破解

# 安装yuminstall-yfail2ban# CentOSaptinstall-yfail2ban# Ubuntu# 配置 /etc/fail2ban/jail.localcat>/etc/fail2ban/jail.local<<'EOF' [DEFAULT] bantime = 3600 # 封禁1小时 findtime = 600 # 10分钟内 maxretry = 3 # 失败3次触发封禁 [sshd] enabled = true port = 22022 # 和SSH端口一致 logpath = %(sshd_log)s backend = %(sshd_backend)s # 永久封禁IP(需要白名单) [sshd-permanent] enabled = true filter = sshd bantime = -1 # -1 = 永久 maxretry = 5 EOFsystemctlenable--nowfail2ban# 查看封禁列表fail2ban-client status sshd# 手动解封fail2ban-clientsetsshd unbanip1.2.3.4

五、SSH 跳板机配置(最佳实践)

外网 → 跳板机(Bastion Host)→ 内网服务器 好处: 1. 内网服务器不对外暴露SSH端口 2. 所有登录行为集中审计 3. 密钥只需要维护一份
# ~/.ssh/config(本地配置,透明跳板)Host bastion HostName bastion.example.com Port22022User devuser IdentityFile ~/.ssh/id_ed25519 Host10.0.0.* User appuser IdentityFile ~/.ssh/id_ed25519 ProxyJump bastion# 通过bastion跳转

结语:SSH 安全的核心三件套:密钥替换密码、fail2ban 防暴破、跳板机控制入口。三个全上,SSH 入侵风险降低99%。

http://www.jsqmd.com/news/1138201/

相关文章:

  • 如何在5分钟内为OBS Studio添加智能面部追踪功能
  • 企业知识库实战:从 0 到 1 落地全记录
  • 延安本地企业做GEO靠谱本地服务商推荐:延安企业GEO服务商优选指南
  • 当你的浏览器成为资源宝库:3分钟解锁全网视频音频的智能下载新体验
  • 毕业季论文必备!好用的AI论文工具,成稿速度破纪录
  • 如何评价腾讯7 月 6 日发布的混元 Hy3 ?
  • 线控转向 vs 传统舵机:智能车方向执行机构 2 方案对比与选型指南
  • 自建端到端加密剪贴板:0bin部署与安全实践指南
  • 从“智能管家”到“进化伙伴”:手把手打造一个会自我成长的AI智能体
  • 2026.7.6总结
  • 西门子PLC程序模板:电机控制功能块 FB_Motor 实战拆解
  • 终于有全能的 Go 语言 Agent 库了,聊聊 covonaut
  • 单臂路由+静态实验(一)
  • 论文被批“不够学术”?,有哪些真正值得用的的降AI率网站推荐?
  • 纯血鸿蒙互联好在哪?三个场景逐一拆解
  • AI赋能企业级数字身份平台:从微服务架构到智能风控实战
  • Pandas时间序列重采样:asfreq与resample的本质区别与语义选型
  • 大厂入场知识库赛道:企业知识管理的竞争壁垒到底在哪里?
  • 为什么选择ub-pkg-manager?OpenEuler用户态组件管理工具深度评测
  • 以色列独立研究员揭示多智能体AI系统中“过度纠错“的危险陷阱
  • RTCPeerConnection 连接建立:SDP 与 ICE
  • 线程池参数调优:corePoolSize 怎么设置
  • VCC/VDD/VSS 电源符号深度解析:3 种命名体系对比与 PCB 布局 4 要点
  • 英雄联盟自动化助手:从繁琐设置到智能游戏体验的革命
  • 15个实用的API文档生成工具,自动化脚本
  • 第一次编写Java程序/26.7.6
  • Kazumi:基于自定义规则的跨平台动漫聚合播放器技术解析与架构设计
  • 系统规划与管理师-应用系统规划核心知识点:过程、方法与软件工厂
  • 猫抓Cat-Catch终极指南:浏览器资源嗅探扩展的完整技术解析与实战教程
  • 宠物零食配方工艺:从原料工程到加工技术落地拆解