
哎,前段时间朋友那台业务服务器又被打趴了,半夜给我打电话救火。登录上去一看,好家伙,TCP连接数飙到好几万,SSH都快卡死了,业务更是早就断了片。他那台机器,说是什么“高防”,结果就只是在防火墙后台点了几个按钮,装了个宝塔了事。这年头,真以为买了带防御的机器就能高枕无忧了?太天真了。
高防服务器的“高防”,更多时候是服务商在网络入口给你扛流量,你自己的系统要是跟筛子一样,内部应用一打就穿,那钱可就算白花了。
我这些年经手维护和加固的服务器,没一千也有几百台了。
我发现一个挺普遍的问题:很多管理员,尤其是业务出身的,特别依赖面板和可视化操作,觉得点了“一键防护”就万事大吉。等到真正遇到点有技术含量的CC攻击或者慢速攻击,立马现原形。
攻击者早就不是只会SYN Flood的脚本小子了,他们盯上的就是你系统层面和应用层面的默认配置弱点。你的CentOS 7,如果不做任何加固,那几乎就等于在公网上裸奔,把业务的生死交给攻击者的“心情”。
所以,今天聊的这套搭建思路,核心就一句话:把高防服务器的“防御”属性,从机房边界延伸到你的系统骨髓里。让服务器本身变成一个难啃的硬骨头,配合机房的高防清洗,形成纵深防御。
下面这套组合拳,是我实战中总结出来的,照着做,不敢说百分百无敌,但能帮你扛住90%以上的常见攻击,稳定性提升几个数量级,说“稳如老狗”一点也不夸张。
第一步:系统安装与最小化原则
千万别用那些集成了乱七八糟服务的“精品镜像”或者“宝塔镜像”。就从最干净的CentOS 7 Minimal ISO开始装。安装过程中,除了你的业务必须的“开发工具”组包,其他任何额外的软件包都不要选。装完第一件事,更新系统,然后就把没用的服务全关了。我习惯先用这条命令看看哪些服务是开机自启的:
像postfix, avahi-daemon, cups这些,除非你明确知道它是干嘛的并且业务需要,否则统统systemctl disable && systemctl stop。服务越少,暴露的攻击面就越小,这是铁律。
第二步:内核参数调优,这是抗量的基石
系统默认的内核参数是为了兼容性,不是为了高性能和高抗压。我们必须手动调整。直接修改/etc/sysctl.conf,把下面这一大段加进去。这些参数是我根据线上高并发业务调整过的,主要优化TCP连接处理、防御SYN Flood和TIME_WAIT过多。
保存后,执行sysctl -p生效。别小看这些数字,它们直接决定了你的服务器在面对海量连接请求时,是优雅地排队处理还是直接崩溃。
第三步:防火墙不只是“开关”,而是第一道闸门
CentOS 7自带的firewalld挺好用,但对于追求极致性能和老派控制感的人来说,我更喜欢直接用iptables。别怕,规则不用记,我直接给你一个能用的基础强化脚本。把它存为/etc/iptables.sh,并设置开机执行。
这个规则集的意思很明确:只允许我明确放行的服务端口,其他一概拒绝。这是最朴素也最有效的安全原则。执行脚本后,记得yum install iptables-services,然后systemctl enable iptables保存并设为开机启动。
第四步:应用层防护,这里才是主战场
系统层加固好了,攻击者就会把火力集中在你的Web或App上。以最常用的Nginx为例,默认配置就是个“欢迎来打”的配置。
1. 隐藏版本号:在nginx.conf的http段里加上server_tokens off;,别让对手知道你的武器型号。
2. 限制请求频率:这是防CC的利器。在http段里定义限制区:
然后在具体的server或location里使用:
意思是,每个IP每秒最多20个请求,允许短时间内突发30个,超过的直接返回503。这个数值根据你的业务调整,动态页面可以小点,静态可以大点。
3. 限制并发连接数:同样,定义连接区并应用,可以有效地扼制单个IP开大量连接耗光你资源的攻击。
4. 优化客户端超时:适当调短时间,让慢速攻击和资源持有攻击尽快释放。
对于更复杂的业务逻辑攻击(比如疯狂刷验证码、恶意爬虫),这些基础规则可能不够。这时候就需要上更专业的WAF了。你可以用开源的ModSecurity,不过规则维护需要精力。我实测发现,对于重要的生产业务,结合一个靠谱的云WAF服务效果更好。
比如,你可以把域名DNS解析到像CDN07这样的服务商,他们除了提供全球加速,其内置的智能WAF规则库更新非常及时,能拦截大量的SQL注入、XSS、0day漏洞利用等应用层攻击,而且配置简单,能省下大量自己写规则和维护的时间。相当于请了个专业的门卫,你自己家里的锁(系统加固)也得更牢,这才是双层保险。
第五步:监控与告警,给系统装上眼睛
机器配置得再硬,没有监控就是瞎子。别等用户打电话告诉你网站打不开了你才知道。最简单的,用netstat命令写个脚本,监控TCP状态:
重点关注TIME_WAIT, CLOSE_WAIT, SYN_RECV的数量。如果SYN_RECV异常高,可能就是SYN Flood。如果ESTABLISHED连接数异常高且来自少量IP,可能就是CC攻击。
更专业的,上Prometheus + Grafana,监控系统负载、连接数、流量、应用QPS。设置好阈值告警,一旦异常,短信、邮件、钉钉立马就来了。这是你主动发现问题的唯一途径。
折腾完这一大套,你的高防CentOS 7才算真正有了“防御”的灵魂。它不再是一个单纯被动挨打的靶子,而是一个具备主动防御和预警能力的堡垒。
记住,安全没有一劳永逸,这套配置是一个强大的基线。你需要根据自己业务的真实流量模式持续观察和微调那些参数(比如连接数限制、请求速率),定期查看日志,分析异常。
说到底,防御的本质就是增加攻击者的成本和难度。当你把系统层面该做的都做到位了,绝大多数自动化的攻击工具和缺乏耐心的攻击者就会知难而退,转去找那些更容易得手的目标。而你的业务,就能在风雨飘摇的网络环境中,真正地“稳如老狗”。别偷懒,现在就动手,给你的服务器穿上这身铠甲吧。