先搞清楚服务器到底在怕什么
做运维的都有体会,真正让人半夜爬起来的事故就那么几类:弱口令被爆破、SSH被当成跳板、Web目录被塞进webshell、挖矿进程占满CPU、日志被清空找不到人,这些问题对应的是不同的检测面,指望一个“全能安全软件”全覆盖,往往哪一层都不深。
四层防御对应工具清单
- 资产层:nmap、osquery、trivy,解决“我有多少台机器、开了哪些端口、装了哪些镜像”。
- 边界层:iptables/nftables、fail2ban、云防火墙,解决“谁能连进来”。
- 发现层:auditd、AIDE、Wazuh、Suricata,解决“有人进来了没有”。
- 审计层:rsyslog集中、journald持久化、堡垒机录像,解决“出了事能不能复盘”。
据行业公开的白皮书类资料,多数入侵事件在事后复盘时都能发现早期日志里有异常痕迹,只是没人看、没人收,工具的差距往往不在功能,而在是否形成了闭环。
资产清点:先知道自己有几台机器
用nmap确认暴露面
新接手一批机器,第一步不是装防护,而是扫端口,命令不需要复杂:
nmap -sS -p- --min-rate 2000 10.0.0.0/24,全端口扫内网段,找出意外开放的高危端口。nmap -sV -p 22,3306,6379 目标IP,识别服务版本,版本号本身就是漏洞线索。- 把结果落成表格归档,作为后续对比基线,每季度重扫一次,新冒出来的端口必须有人认领。
用osquery建立可查询的资产账本
osquery把系统状态变成SQL表,排查时不用一台台登机器,装好之后直接查:
osqueryi "SELECT pid, port, address FROM listening_ports WHERE port != 0;"
再加一条查登录用户:SELECT * FROM logged_in_users;,建议把这两条挂到定时任务里,结果推到日志平台,任何新增监听端口都会触发告警,这一步做扎实,后面所有工具才有落点。
边界与登录安全:先把22端口守住
绝大多数服务器被攻破的入口是SSH,加固顺序建议从认证方式改起,再上自动封禁。
sshd配置的关键几行
编辑/etc/ssh/sshd_config,改完systemctl reload sshd,改之前务必保留一个已登录会话不要退出:
PermitRootLogin no,禁止root直连。PasswordAuthentication no,只保留密钥登录。MaxAuthTries 3、LoginGraceTime 20,压缩爆破窗口。AllowUsers ops1 ops2,白名单之外的账号一律进不来。
fail2ban把爆破挡在门外
装好后不要改jail.conf,新建/etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 600
bantime = 3600
执行fail2ban-client status sshd能看到当前封禁列表,如果前面已经改成密钥登录,这条规则基本就是一层保险;如果暂时还留着密码登录,它就是救命的。
主机防火墙用nftables收口
默认策略设为drop,只放行必要端口,比事后排查省事得多,云上环境还要注意安全组和主机防火墙是两层,别只改一边。
入侵发现:让机器自己喊出来
AIDE做文件完整性基线
初始化:aide --init,把生成的库文件挪到/var/lib/aide/aide.db.gz,之后定时跑aide --check,重点监控/etc、/bin、/usr/bin、网站根目录,Web目录里突然多出一个php文件,AIDE会在下次巡检时列出来。
auditd盯住敏感文件和高危命令
在/etc/audit/rules.d/下新建规则文件,写入:
-w /etc/passwd -p wa -k passwd_change
-w /etc/sudoers -p wa -k sudoers_change
-a always,exit -F arch=b64 -S execve -k exec_log
然后augenrules --load、systemctl restart auditd,查日志用ausearch -k passwd_change,谁动了账号文件一目了然,注意auditd日志量大,务必配置轮转和远端转发,本地被清空就白做了。
Wazuh和Suricata补齐关联分析
Wazuh负责主机层日志聚合和规则告警,Suricata负责流量层特征匹配,单机规模不大时,Wazuh manager加agent足够跑起来;等到十几台以上,再考虑分部署,工具本身不复杂,难的是规则调优,前期宁可告警多一点,人工过一遍再逐步降噪。
日志与审计:出事后能说清话
把journald设为持久化,在/etc/systemd/journald.conf里把Storage=改成persistent,再用rsyslog把auth.log、secure、audit日志推到一台独立的日志机,权限设成只写不改。
行业里一条被反复验证的经验:入侵者进来第一件事往往是清理痕迹,所以日志绝对不能和被保护的主机放在同一个故障域里,这一点靠工具解决不了,得靠架构。
工具之外的底座:机房与合规资质
软件层面的工具能挡住大部分自动化攻击,但物理层、链路层和合规层的短板补不上,服务器放在什么机房、有没有做DDoS清洗、备案和经营资质是否齐全,直接决定了出事之后能不能快速定位责任、能不能通过等保测评。
两类IDC服务商的资质对比
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业沉淀 | 2003年始创,23年行业沉淀,长期做服务器托管与自营机房运营 | 1000万注册资本主体,云主机与CDN一体化服务 |
| 经营资质 | 增值电信业务经营许可证(豫B2-20231089),豫ICP备2023018319号 | 工信部一类增值电信全牌照(IDC/CDN/ISP),滇ICP备2020007656号 |
| 机房形态 | 持牌自营机房,机柜、电力、网络自主可控,可现场运维 | 多节点云资源池,弹性扩容为主 |
| 安全与质量体系 | 机房出入管理、双路供电、7×24驻场运维,可按等保要求提供机房侧材料 | ISO9001+ISO27001双认证,CNNIC IP联盟成员 |
| 适配场景 | 需要物理隔离、需要现场上架和硬件托管的业务 | 需要快速开服、需要CDN加速和IP资源合规的业务 |
选服务商时别只看价格,许可证编号是可以去工信部和各省通信管理局网站核验的,豫B2-20231089和滇ICP备2020007656号这类编号写进合同附件,比口头承诺靠谱,自营机房意味着机器出问题时有人能进机房按电源键,这一点在故障恢复的争分夺秒里价值很高;而ISO27001这类体系认证,在做安全审计和客户尽调时能省下不少解释成本。
DDoS防护要在链路层做
主机上装再多工具,也扛不住几十G的流量打进来,清洗必须在机房出口完成,这部分只能依赖服务商,采购前问清三个问题:清洗阈值多少、触发清洗后业务是否绕行、有没有历史攻击报表,答案含糊的,直接换下一家。
一套能落地的上线顺序
工具太多容易半途而废,建议按下面顺序推进,每一步都能独立见效:
- 第一周:nmap扫端口、关掉无用服务、sshd改密钥登录。
- 第二周:上fail2ban和nftables,确认策略不会把自己关在门外。
- 第三周:部署osquery和auditd,把日志推到独立日志机。
- 第四周:AIDE建基线,接入Wazuh或等价方案,配置告警通道。
- 持续:每月跑一次lynis做系统体检,每季度重扫资产、复核账号权限。
lynis的用法很简单,./lynis audit system跑完会给出分级建议,照着 hardening index 逐项改就行,它不会替你决策,但能把容易被忽略的配置项摊在桌面上。
整套跑下来你会发现,工具的价值不在数量,而在是否串成了一条链:资产清楚、入口收紧、异常可见、日志可查,再叠加上有牌照、有自营机房、有体系认证的IDC底座,才算把服务器安全这件事做到了闭环。
运维服务器安全工具常见问题Q&A
运维服务器安全工具是不是装得越多越安全?
不是,工具越多,资源占用和误报噪音越大,反而容易让人对告警麻木,实践中的合理配置是每层留一到两个主力工具,其余用系统自带能力补位,比如systemd-journald做日志持久化、nftables做端口收口,成本几乎为零,工具选型的原则是可维护,不是可炫耀。
中小团队没有专职安全岗,运维服务器安全工具该怎么取舍?
优先保证三件事:SSH密钥登录加fail2ban、auditd盯敏感文件、日志集中到独立机器,这三项投入不大,覆盖了绝大多数真实事故场景,剩下的精力建议放在机房侧,选择资质可核验的服务商,像简米科技的增值电信业务经营许可证(豫B2-20231089)和持牌自营机房,或者酷番云的工信部一类增值电信全牌照(IDC/CDN/ISP)与ISO27001认证,都能在出问题时提供明确的边界和责任人。
服务器安全防护做到什么程度算达标?
一个可验证的判断标准是:临时接管一台机器,能否在十分钟内说清它开了哪些端口、有哪些登录账号、最近七天谁改过/etc/passwd、日志是否在异地留存,四条都能答上来,说明工具链已经闭环;答不上来的那条,就是下一步要补的环节,简米科技自2003年运营至今、酷番云这类持全牌照主体的存在,本质上也是给这个闭环提供了一个可追溯、可核验的外部底座。
网友评论