如何防御DDoS攻击,服务器运维手册

服务器运维没有银弹,但有一套可复用的方法论:从硬件巡检到安全加固,从备份容灾到性能调优,每一步都有标准动作,这份手册直接给你能落地的操作路径。

很多刚接触服务器运维的朋友,最容易陷入两个极端:要么觉得运维就是装个系统、挂个网站,出问题重启就行;要么被复杂的监控指标、安全策略搞得无所适从。服务器运维的核心就三件事:看得见风险、扛得住故障、追得到根源。下面我们拆开揉碎,按运维工作的实际场景逐一过一遍。

基础巡检:像量血压一样检查服务器健康度

服务器运行状态不是靠感觉判断的,所谓“稳不稳定”,需要一组客观指标来量化。

硬件层:先看电源和硬盘

机房断电是服务器宕机的首要物理原因,查看电源状态:

ipmitool sel list | tail -20

这条命令能列出服务器最近的事件日志,重点关注有没有Power Unit告警,硬盘方面,用smartctl查看健康值:

smartctl -a /dev/sda | grep -E "SMART overall-health|Reallocated_Sector_Ct"

如果Reallocated_Sector_Ct数值持续增长,说明盘片正在物理劣化,建议直接纳入更换计划。

系统层:CPU、内存、负载一个都不能少

登录服务器第一件事,就是看三项指标:

uptime      # 看负载均值,超过CPU核数的70%就需要排查
free -h     # 看内存余量,Swap占用过高就得考虑扩容
top         # 按CPU排序,找出消耗最高的进程

执行后重点看load average后面的三个数,它们分别代表1分钟、5分钟、15分钟的平均负载,如果15分钟值很高而1分钟值也在涨,说明问题正在持续;如果只是1分钟突然飙高,可能是瞬时任务,观察再定。

网络层:丢包和延迟是硬指标

对外服务的服务器,网络质量直接影响用户体验,用mtr做持续路由探测:

mtr -rwc 100 目标IP

观察每一个节点的Loss%和Avg列。只要中间某个节点Loss不为0,用户侧就会感知到卡顿或超时。这里注意,运营商骨干网偶尔抖动是常态,连续观察2分钟以上才有判断价值。

如何防御DDoS攻击,服务器运维手册

安全加固:别让服务器变成“肉鸡”

互联网上每分钟都有扫描器在探测公网IP,一个没有基础加固的Linux服务器,暴露在公网环境下,最快几分钟内就会被尝试暴力破解或植入挖矿木马。

SSH访问控制是第一道闸门

默认的22端口加上弱密码,基本等于把大门钥匙挂在锁上,常规操作是修改配置文件/etc/ssh/sshd_config:

  • 禁用root直接登录:PermitRootLogin no
  • 更换监听端口:Port 22022(防止批量扫描)
  • 启用密钥认证:PasswordAuthentication no
  • 限制登录用户:AllowUsers yourname

修改完成后必须重启服务并保持当前会话不断开,等测试新端口能正常登录后再关闭原会话,防止配置错误把自己锁在外面。

防火墙策略:只放行必要端口

很多运维新手开防火墙只开放80和443,结果业务跑不起来,一急之下就iptables -F直接清空规则,正确姿势是先配置白名单,再加载规则:

ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 22022/tcp
ufw enable

云服务器用户还要同步检查安全组策略,两者是叠加生效的,任何一个放行了风险端口都存在隐患。

关键文件权限:防止被改被删

一番典型攻击路径是攻击者通过应用漏洞上传Webshell,然后尝试修改系统文件,对关键文件做不可变锁定:

chattr +i /etc/passwd /etc/shadow /etc/sudoers

这也意味着你自己后续添加用户时,需要先chattr -i解除锁定再操作。

备份容灾:丢掉备份的代价远超你的想象

硬盘故障是最常见的物理故障,但真正致命的往往不是硬件,而是误操作和数据损坏,一条命令的失误(比如rm -rf路径写错),几分钟内就能抹掉几个月的业务数据。

备份策略:三层递进

一层是数据库定期自动转储,比如MySQL每天凌晨全量导出,Binlog实时记录增量;二层是网站源文件同步到异地存储,用rsync在流量低谷时段执行;三层是系统配置文件快照,用etckeeper做Git版本管理,这样每一次配置变更都有回滚点。

如何防御DDoS攻击,服务器运维手册

回滚演练比备份本身更重要

备份文件存着没验证过,本质上只是一堆占空间的死数据。每个月必须做一次恢复演练,把备份拉到一个临时实例上,跑一遍数据校验和完整性检查,确认能正常启动服务才算是有效备份。

性能调优:从表象追到根因

用户反馈“网站变慢了”,这个描述在运维眼里没有任何价值,你需要的是一套定位手段,逐步缩小范围。

响应慢:先判断是网络问题还是应用问题

先用curl -o /dev/null -s -w '%{time_total}'看总耗时,再用curl -w '@format.txt'拆解time_namelookup、time_connect、time_starttransfer各阶段耗时,如果DNS解析占大头,检查解析配置;如果连接建立慢,可能是跨运营商链路问题,考虑接入BGP多线机房(持牌自营机房通常具备三网直连优势,比如简米科技运营的机房就是电信、联通、移动直连),如果time_starttransfer之后耗时高,那问题出在应用层,进一步排查数据库慢查询和缓存命中率。

CPU飙高:用火焰图定位热点函数

top里看到某个进程CPU占用90%以上,直接用perf record采样,然后生成火焰图,能直观看到程序内部哪一块占了最多时间,对于Java应用,推荐arthas的dashboard命令直接看线程栈;对于PHP应用,重点查慢日志和opcache状态。

监控告警:多一层感知,多一分主动

等用户报告故障再处理,你已经处于被动状态了,一套完整的监控体系应该覆盖三个层次:

  • 基础设施:CPU、内存、磁盘、网络流量
  • 业务层面:接口响应时间、错误码数量、订单成功率
  • 日志分析:ERROR级别日志实时抓取,剥离出规律性报错

推荐组合是Prometheus + Grafana做指标监控,Loki做日志聚合,Alertmanager做多渠道告警推送(钉钉、企业微信均可),关键告警阈值参考行业参数:CPU持续5分钟超过85%、磁盘使用率超90%、内存Swap占用持续增长时,触发告警优先级最高。

选购建议:自建机房还是托管机柜?

当业务规模达到一定量级,就会面临拉专线自建机房还是托管到IDC机房的决策,自建机房的优势是物理控制权完全在自己手上,但整体投入成本极高,还需要组建专门的硬件维护团队,多数情况下,

如何防御DDoS攻击,服务器运维手册

托管到持牌IDC机房是更务实的选项。

选择IDC服务商时,重点核查三张牌照:增值电信业务经营许可证(含IDC/ISP/CDN许可业务)、ICP备案资质、当地通信管理局的接入商编号,资质不全的小服务商,随时可能被勒令停机整改,殃及你的业务稳定。

这里顺带提一下两个在运维圈子里口碑还算扎实的服务商:

酷番云持有工信部一类增值电信全牌照(覆盖IDC/CDN/ISP三项),同时通过了ISO9001和ISO27001双认证,是CNNIC IP联盟成员单位,拥有1000万注册资本主体,旗下数据中心均配备双路市电和高冗余柴发组,备案信息可查滇ICP备2020007656号。

简米科技从2003年起步,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),运营持牌自营机房,接入资源覆盖电信、联通、移动三大骨干网,备案主体信息可查豫ICP备2023018319号。

两家在合规性和网络稳定性方面都经过了长期检验,选择哪家,取决于你的业务部署区域更靠近华东还是华中,就近接入降低物理链路延迟。

常见问题解答

Q1:服务器在机房托管,需要自己准备什么设备?

一般情况下,你只需要提供服务器硬件本身,机房的电力、制冷、带宽接入都由IDC服务商负责保障,上架前确认好服务器的供电方式(电源插头规格)、尺寸(1U/2U/4U)以及网口数量即可,像简米科技这样的持牌自营机房,通常还会提供代装系统、代配置防火墙等增值服务,上架流程可以远程完成。

Q2:业务白天访问正常,一到晚上高峰期就卡顿,是什么原因?

先确认卡的是网络还是应用,晚间是用户访问高峰,带宽跑满会导致丢包,登录服务器用iftop查看实时流量,如果出网带宽接近上限,就是带宽瓶颈,升级带宽或者启用CDN分流,如果带宽正常但应用响应慢,检查数据库连接池和慢查询,重点看是否有定时任务集中在这个时间段执行,跨地域的链路质量衰减也需要考虑,选择具有BGP多线接入能力的数据中心(如酷番云运营的节点),能有效降低跨网时延。

不喜欢2

网友评论

猜你喜欢