资讯动态

Linux服务器安全加固实战:从SSH防护到蜜罐部署

发布时间:2026/8/16 18:34:49 来源:尧图企业网站定制
1. 先搞清楚“安全加固”到底要防什么一提到Linux服务器安全很多人会立刻想到改SSH端口、设置复杂密码、装个防火墙。这些确实是基础但如果你只做到这一步那服务器安全可能还停留在“防君子不防小人”的阶段。真正的安全加固是一个从“被动防御”到“主动感知”的过程。被动防御是堵住已知的漏洞比如弱密码、默认端口主动感知则是要知道谁在攻击你、用什么方式、目的是什么。这篇文章要解决的就是如何把一台裸奔的Linux服务器从基础防护一直加固到能主动发现攻击者的水平。整个过程会分成几个清晰的阶段基础访问控制 - 系统服务加固 - 部署主动诱捕系统。我们会从最实际的修改SSH端口开始一步步做到部署HFish这样的蜜罐来“钓鱼执法”。适合看这篇文章的人是那些手里有Linux服务器无论是云服务器还是物理机已经能完成基础运维但不确定自己的服务器是否真的安全或者想知道攻击者到底有没有盯上自己的运维和开发人员。最关键的价值在于我会把每个步骤背后的“为什么”讲清楚比如为什么改端口不能一劳永逸以及蜜罐日志到底该怎么看才能把报警信息变成有用的威胁情报。2. 第一步收紧SSH大门——不只是改个端口SSH是服务器最常用的管理入口也是攻击者最常爆破的目标。加固SSH很多人第一步就是改端口这没错但远远不够。2.1 修改SSH端口操作与风险并存修改SSH默认的22端口能立刻扫掉互联网上绝大部分针对22端口的自动化扫描和爆破脚本。操作很简单编辑SSH服务配置文件sudo vim /etc/ssh/sshd_config找到#Port 22这一行去掉注释并添加一个新端口号例如 2345Port 22 Port 2345注意先保留Port 22同时监听新旧两个端口测试成功后再禁用22端口这是为了防止配置错误把自己关在门外。重启SSH服务sudo systemctl restart sshd测试新端口打开另一个终端窗口使用新端口连接确认可以登录。ssh -p 2345 usernameyour_server_ip测试成功后再次编辑sshd_config注释或删除Port 22那一行只保留新端口然后再次重启SSH服务。但是这里有几个必须知道的坑点不是银弹改端口只能防住无差别扫描。针对性的攻击者会进行全端口扫描你的新端口很快也会暴露。防火墙必须跟上改端口后务必在防火墙如firewalld或iptables中关闭22端口的访问只放行新端口。否则改端口就失去了意义。记住端口号自己一定要记牢新端口很多运维事故都是管理员自己忘了端口号。2.2 比改端口更重要的SSH加固项单纯改端口是“隐蔽式安全”效果有限。更有效的是实施“强认证式安全”。禁止root用户直接登录 在/etc/ssh/sshd_config中设置PermitRootLogin no。永远使用普通用户登录再用su或sudo提权。这能极大增加攻击者获取最高权限的难度。使用密钥对认证禁用密码登录 这是SSH安全最核心的一步。为你的用户生成SSH密钥对本地机器执行ssh-keygen将公钥上传到服务器的~/.ssh/authorized_keys文件中。然后在sshd_config中设置PasswordAuthentication no PubkeyAuthentication yes重要在禁用密码前务必确认密钥登录已经成功并且你的私钥安全备份。限制登录用户和IPAllowUsers user1 user2只允许特定用户登录。结合防火墙只允许来自公司IP或可信IP段的连接。这是非常有效的内网安全策略。启用失败锁定使用fail2ban这类工具监控SSH日志对短时间内多次登录失败的IP进行临时封禁。做完这些你的SSH入口才算有了一个比较扎实的防御基础。但服务器安全不止一个门。3. 第二步系统级加固——减少攻击面服务器上运行着很多服务每个服务都可能成为突破口。加固的原则是“最小权限”和“最少服务”。3.1 用户与权限管理定期审计用户检查/etc/passwd删除或锁定不再使用的用户账号 (usermod -L username)。检查特权用户查看/etc/sudoers文件确保只有必要的用户拥有sudo权限。避免使用NOPASSWD选项除非在特定自动化场景下且明确风险。设置强密码策略通过/etc/security/pwquality.conf或/etc/pam.d/common-password设置密码最小长度、复杂度、历史记录等。对于服务账户更应使用随机长密码或密钥。3.2 服务与端口管理停用不需要的服务sudo systemctl list-unit-files --typeservice | grep enabled # 查看所有启用服务对于像telnet、rpcbind、vsftpd如果不用FTP等明确不用的服务果断禁用并停止sudo systemctl stop service_name sudo systemctl disable service_name使用网络扫描工具自检 在服务器本机使用netstat或ss命令查看所有监听端口sudo ss -tulnp解释每一个监听端口对应的服务是什么是否必要。从外部另一台机器用nmap扫描你的服务器看看暴露了哪些端口这和你内部看到的是否一致。配置防火墙以firewalld为例默认策略设为拒绝sudo firewall-cmd --set-default-zonedrop生产环境慎用可能导致服务中断建议先设public。仅开放必要的端口如SSH新端口、Web服务的80/443端口等。sudo firewall-cmd --permanent --add-port2345/tcp # 添加SSH端口 sudo firewall-cmd --permanent --add-servicehttp # 添加http服务 sudo firewall-cmd --reload # 重载配置 sudo firewall-cmd --list-all # 查看所有规则3.3 系统更新与日志监控定期更新sudo yum update或sudo apt update sudo apt upgrade。安全补丁至关重要。配置日志轮转确保/var/log目录下的日志如secureauth.logsyslog不会无限增长通过logrotate服务管理。集中日志分析进阶对于多台服务器考虑使用ELKElasticsearch, Logstash, Kibana或Graylog搭建集中日志平台便于关联分析安全事件。完成以上两步你的服务器已经具备了较好的静态防御能力。但高级的攻防是动态的你需要知道是否有人正在尝试攻击你。4. 第三步部署HFish蜜罐——从防御到感知蜜罐Honeypot的本质是一个“陷阱”。它模拟一个有漏洞的服务或系统诱使攻击者来攻击从而记录下攻击者的行为、工具和意图。HFish是一款国产、开源、功能强大的蜜罐平台部署简单能提供丰富的攻击情报。4.1 为什么需要蜜罐发现未知威胁防火墙和IDS入侵检测系统主要基于已知规则。蜜罐可以捕获针对未知漏洞或新型手法的攻击尝试。了解攻击者记录攻击源IP、攻击payload、使用的漏洞利用工具等帮助你画像攻击者。拖延和消耗攻击者让攻击者把时间浪费在蜜罐上为真实系统的应急响应争取时间。内部威胁检测部署在内网可以发现内部人员异常或违规的探测行为。4.2 HFish部署与配置实战HFish支持多种部署方式这里以最简单的Linux单机部署为例。下载与解压 从HFish的GitHub Release页面下载最新版本的Linux压缩包。wget https://github.com/hacklcx/HFish/releases/download/版本号/HFish-Linux-amd64.tar.gz tar -zxvf HFish-Linux-amd64.tar.gz cd HFish快速启动 HFish自带一个轻量级数据库SQLite和Web管理界面。sudo ./hfish start启动后默认的管理界面地址是https://你的服务器IP:4433。默认账号密码是admin/HFish。首次登录务必修改密码配置蜜罐节点HFish采用“管理端节点端”架构。你刚刚启动的既是管理端也可以作为本机节点。在Web管理界面的“节点管理”中可以看到本机节点。你需要为这个节点“上线”蜜罐服务。HFish提供了大量模板SSH蜜罐、MySQL蜜罐、Redis蜜罐、HTTP蜜罐、Web漏洞蜜罐等。部署一个SSH蜜罐在“蜜罐服务”页面点击“新增”。选择“SSH”类型设置一个监听端口例如2222这个端口不要与真实服务冲突。选择部署到你的节点上。保存后HFish就会在你的服务器上监听2222端口并模拟一个存在弱密码的SSH服务。配置防火墙放行蜜罐端口 别忘了在防火墙中开放你设置的蜜罐端口如2222否则攻击流量进不来。sudo firewall-cmd --permanent --add-port2222/tcp sudo firewall-cmd --reload4.3 蜜罐运营与日志分析部署完不是结束运营和分析才是关键。攻击告警查看 当有攻击者连接你的SSH蜜罐2222端口并尝试爆破时HFish的“攻击列表”或“仪表盘”会实时显示告警。你会看到攻击者的IP、尝试的账号密码、时间戳。深度分析攻击payload 对于Web类蜜罐HFish能记录完整的HTTP请求包括攻击者使用的漏洞利用参数。这是非常有价值的情报。将攻击IP加入黑名单 在HFish管理界面可以将频繁攻击的IP一键加入到“威胁情报”黑名单中。HFish支持联动防火墙如firewalld或其它安全设备自动封禁这些IP。这才是形成了“感知-响应”的闭环。不要将蜜罐与真实服务混用这是最重要的原则。蜜罐必须运行在独立的、非业务的端口上并且这台服务器上不要存放任何真实业务数据。理论上蜜罐所在系统最终是可能被攻陷的。5. 第四步形成安全闭环与日常运维习惯安全不是一次性的动作而是一个持续的过程。将前面的步骤串联起来并养成习惯。5.1 建立你的服务器安全清单每次有新服务器上线按照这个清单走一遍访问控制[ ] SSH端口已修改且防火墙已关闭旧端口。[ ] SSH已禁用密码登录采用密钥认证。[ ] SSH已禁止root直接登录。[ ] 防火墙firewalld/iptables已启用仅开放必要端口。系统加固[ ] 无用服务已禁用。[ ] 所有用户密码符合强策略或使用密钥。[ ] sudo权限已严格管控。[ ] 系统及软件已更新至最新稳定版。主动监控[ ] 已部署日志监控如配置fail2ban监控SSH。[ ] 已考虑部署蜜罐如HFish于非业务环境。[ ] 有定期检查系统日志/var/log/secureauth.log的习惯。备份与恢复[ ] 重要配置文件如sshd_configfirewalld规则已备份。[ ] 有可行的系统恢复方案快照、镜像等。5.2 常见问题排查思路当出现安全告警或异常时按顺序排查确认现象是登录失败告警端口扫描告警还是资源异常CPU爆满查看相关日志SSH问题立即查看/var/log/secureRHEL/CentOS或/var/log/auth.logDebian/Ubuntu。端口扫描查看防火墙日志sudo journalctl -u firewalld或蜜罐攻击日志。资源异常使用tophtopiftopnethogs等命令定位进程。分析来源如果是网络攻击记录下源IP。通过whois或威胁情报平台查询该IP信誉。临时处置使用防火墙立即封禁可疑IP (firewall-cmd --permanent --add-rich-rulerule family“ipv4” source address“恶意IP” drop’)。根因分析是弱密码被爆破是服务漏洞被利用还是内部误操作长期加固根据根因修改密码、修补漏洞、调整权限或强化监控。5.3 蜜罐数据的价值与局限HFish这类蜜罐能提供很好的攻击者视角但也要认识其局限价值获取第一手攻击数据了解流行攻击手法验证安全防护措施是否生效。局限高水平的攻击者可能会识别出蜜罐通过指纹识别从而绕过。蜜罐日志会产生大量“噪音”自动化扫描需要从中筛选出有威胁的“信号”。建议将蜜罐作为安全态势感知的一部分而不是全部。它的告警需要与你其他的监控日志如系统登录日志、应用日志进行关联分析才能更准确地判断是否发生了真实入侵。从修改SSH端口到部署HFish蜜罐这条路走下来你的安全思路会从“把门锁好”升级到“在院子里布下警报器”。记住安全没有终点定期回顾你的安全清单保持系统和软件更新并始终对日志保持警惕才是应对不断变化威胁的持久之道。对于生产环境建议在测试环境充分验证所有变更并制定详细的回滚方案。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价