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

sshd配置实战:从基础安全到高级调优

1. SSH服务基础认知与安全风险

每次用密码登录服务器时,那个熟悉的22端口背后其实藏着不少安全隐患。去年我们公司某台测试服务器就因使用默认配置,被自动化脚本扫到弱密码,差点成了矿机。SSH作为Linux系统的门户,其安全性直接关系到整个服务器的生死存亡。

OpenSSH服务由客户端(ssh)和服务端(sshd)组成,配置文件分别位于/etc/ssh/ssh_config/etc/ssh/sshd_config。服务端配置文件中的每个参数都像是一道安全阀门,比如默认的Port 22就像把钥匙挂在门把手上,而PermitRootLogin yes则相当于给黑客发了VIP通行证。我曾见过有运维在云服务器上同时开启密码认证和root登录,结果不到24小时就被暴力破解成功。

最危险的几个默认配置包括:

  • 使用国际通用的22端口
  • 允许root用户直接登录
  • 开启密码认证方式
  • 不限制登录尝试次数
  • 使用弱加密算法(部分老系统仍支持SSH1)
# 查看当前SSH连接状态的实用命令 netstat -tulnp | grep sshd ss -ltnp | grep sshd

2. 基础安全加固五步法

2.1 修改默认端口

把22端口改成非标准端口能挡住99%的自动化扫描。上周我给客户服务器改成58222端口后,日志里的非法尝试立即归零。但要注意别用已被占用的端口(如80、443),建议在1024-65535间选:

# 先测试新端口是否可用 sudo semanage port -a -t ssh_port_t -p tcp 58222 sudo firewall-cmd --add-port=58222/tcp --permanent sudo firewall-cmd --reload # 修改配置文件 sudo sed -i 's/#Port 22/Port 58222/' /etc/ssh/sshd_config

2.2 禁用root直接登录

Ubuntu系默认已禁用,但CentOS等需要手动关闭。建议创建普通用户再sudo提权:

# 创建运维专用账户 sudo useradd -m -s /bin/bash opsadmin sudo passwd opsadmin sudo usermod -aG wheel opsadmin # CentOS sudo usermod -aG sudo opsadmin # Ubuntu # 禁用root登录 sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

2.3 强制密钥认证

密钥认证比密码安全几个数量级。生成密钥时建议用ed25519算法(比RSA更安全高效):

# 本地生成密钥对 ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/server_access # 将公钥上传到服务器 ssh-copy-id -i ~/.ssh/server_access.pub -p 58222 opsadmin@server_ip # 关闭密码认证 sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config

2.4 登录超时与尝试限制

这些参数能有效防止暴力破解:

LoginGraceTime 1m # 登录超时从2分钟改为1分钟 MaxAuthTries 3 # 最大认证尝试次数 ClientAliveInterval 300 # 无操作300秒后断开连接 ClientAliveCountMax 2 # 保持活跃检测次数

2.5 防火墙白名单控制

只允许可信IP连接SSH是最佳实践。用firewalld或iptables都行:

# firewalld方案 sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.123.123.123" service name="ssh" accept' sudo firewall-cmd --reload # iptables方案 sudo iptables -A INPUT -p tcp --dport 58222 -s 123.123.123.123 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 58222 -j DROP

3. 高级调优技巧

3.1 日志深度监控

SSH日志默认在/var/log/secure(RHEL)或/var/log/auth.log(Debian)。建议开启详细日志:

# 修改日志级别为VERBOSE sudo sed -i 's/#LogLevel INFO/LogLevel VERBOSE/' /etc/ssh/sshd_config # 实时监控登录尝试 sudo tail -f /var/log/secure | grep sshd

3.2 连接数限制

防止单个IP耗尽连接资源:

MaxStartups 10:30:60 # 前10个立即接受,11-30个随机拒绝,超过60个全拒 MaxSessions 5 # 每个IP最多5个会话

3.3 Match条件块

对不同用户/IP应用不同策略。比如允许内网IP用密码登录,外网必须用密钥:

Match Address 192.168.1.0/24 PasswordAuthentication yes Match all PasswordAuthentication no

3.4 加密算法强化

禁用不安全的旧算法:

# 在/etc/ssh/sshd_config末尾添加 KexAlgorithms curve25519-sha256@libssh.org Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com MACs hmac-sha2-512-etm@openssh.com

4. 故障排查与维护

4.1 配置语法检查

每次修改后务必测试:

# 检查配置语法 sudo sshd -t # 重载服务(不断开现有连接) sudo systemctl reload sshd # 查看生效配置 sudo sshd -T | grep -E "port|password|permitroot"

4.2 连接问题诊断

当连接失败时,用-vvv参数查看详细过程:

ssh -vvv -p 58222 opsadmin@server_ip

常见错误解决方案:

  • 连接超时:检查防火墙/安全组规则
  • 权限拒绝:确认~/.ssh权限为700,authorized_keys为600
  • 协议不匹配:客户端和服务端算法要兼容

4.3 自动化安全巡检

用脚本定期检查SSH配置:

#!/bin/bash check_ssh_security() { echo "当前SSH端口:$(sshd -T | grep port | awk '{print $2}')" echo "Root登录状态:$(sshd -T | grep permitrootlogin | awk '{print $2}')" echo "密码认证状态:$(sshd -T | grep passwordauthentication | awk '{print $2}')" echo "活跃连接数:$(netstat -tn | grep ':58222' | wc -l)" }

最后提醒:任何修改前先备份原配置sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,改错参数可能导致锁死在服务器外。建议在本地虚拟机先测试,再用Ansible等工具批量部署。

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

相关文章:

  • C++时延优化实战:从内存管理到无锁编程的确定性性能提升
  • 告别性能瓶颈:如何用开源工具永久掌控Windows安全防护
  • 大模型RAG架构下的信源选择机制:从检索到引用的六阶段解析
  • 嵌入式机器学习 - 学习笔记1.0.1 - 为什么机器学习开始跑进微控制器?
  • [简化版 GAMES 104] 现代游戏引擎 01:从代码到世界:现代游戏引擎的恢弘史诗
  • 从7z到ZIP/RAR:为何数据恢复性应成为压缩格式选型的关键考量
  • Java AI编码工具实战评测:脚手架生成能力深度对比
  • robots.txt 完全指南:从入门到精通
  • CVE-2020-8840:从JNDI注入看Jackson-databind黑名单攻防演进
  • 2026靠谱铜覆扁钢厂家怎么选?认准资质齐全的源头大厂 - 商业新知
  • 2026深圳劳力士回收靠谱商家盘点:水贝S+级机构724小时上门,闲置名表快速变现 - 名奢变现站
  • 中小企业如何真正落地 AI?4 个实践经验,少走很多弯路
  • 从零到一:STM32工程创建中启动文件的精准匹配与配置实战
  • 新E选的烤火罩会不会显得特别笨重、松松垮垮的?
  • pdf压缩免费版哪个好?5款工具横评实测,压缩效果一目了然 - 博客万
  • 线上投票评选怎么做,云众评选 3‑5 分钟快速搭建投票活动 - 微信投票小程序
  • 【架构剖析】图书管理系统——核心模块与数据流转设计详解
  • 换脸保特征:用于ITS中行人隐私的双用途管道
  • 如何快速构建现代化阿语门户:openEuler opendesign自定义UI组件实战指南
  • LT3762同步升压控制器驱动大电流LED的设计与实践
  • Windows系统下Elasticsearch的完整部署与安全配置实战
  • AI 赋能下的数字电子沙盘:智能化实时化与沉浸式交互的新时代 - 优企甄选
  • Keil调试技巧
  • 实战指南:基于MQTT协议与阿里云平台实现设备OTA升级
  • 北京东城区闲置黄金变现渠道,专业仪器当面检测,称重全程可见 - 全国二奢机构参考
  • 东营鑫宸黄金奢品回收,六店未来科技,穿越2088来收金 - 清奢黄金上门回收
  • C++构建高并发慈善服务系统:架构设计与工程实践详解
  • 拍手开关电路设计:从原理到实战优化
  • Yolov5学习笔记
  • 如何快速调试openEuler Intel内核:10个常见问题解决方案指南