遭遇黑客攻击?3步紧急止血 + 5个代码级防护方案

一、判定攻击存在的关键迹象

当服务器出现以下异常时,很可能正在被攻击:

  1. 流量突增:带宽使用率超过日常3倍

    # 实时监控带宽(示例:每2秒刷新)
    ifstat -i eth0 -T 2
    
  2. 资源耗尽:CPU/内存长期满载

    # 快速查看资源消耗排名
    top -o %CPU -c | head -n 20
    
  3. 异常日志:大量重复错误请求

    # 分析Nginx日志中的高频错误码(如499/500)
    awk '{print $9}' access.log | sort | uniq -c | sort -nr
    

二、紧急处理步骤(30分钟内完成)

1. 切断攻击入口
  • 临时封禁IP

    # 封禁请求频率最高的前10个IP
    cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10 | awk '{print "iptables -A INPUT -s "$2" -j DROP"}' | sudo sh
    
  • 启用云防护开关

    # 调用云服务商API开启全站防护(以阿里云为例)
    import aliyunsdkddoscoo
    client = aliyunsdkddoscoo.AcsClient('', '', 'cn-hangzhou')
    request = aliyunsdkddoscoo.EnableWebAccessLogConfigRequest()
    request.set_Domain('www.example.com')
    client.do_action_with_exception(request)
    
2. 降低攻击影响
  • 限制请求速率(Nginx配置):
    http {
        limit_req_zone $binary_remote_addr zone=emergency:10m rate=10r/s;
        server {
            location / {
                limit_req zone=emergency burst=20 nodelay;
                proxy_pass http://backend;
            }
        }
    }
    

三、深度防御方案(附可运行代码)

1. 自动化IP封禁系统
# 基于日志分析的实时封禁脚本(保存为protect.py)
import subprocess
from collections import defaultdict

ip_counter = defaultdict(int)
LOG_FILE = "/var/log/nginx/access.log"

def monitor_log():
    # 使用tail实时读取日志
    process = subprocess.Popen(['tail', '-F', LOG_FILE], stdout=subprocess.PIPE)
    while True:
        line = process.stdout.readline()
        if line:
            ip = line.decode().split()[0]
            ip_counter[ip] += 1
            if ip_counter[ip] > 100:  # 阈值:100次/分钟
                subprocess.run(f"iptables -A INPUT -s {ip} -j DROP", shell=True)
                print(f"Blocked IP: {ip}")

if __name__ == "__main__":
    monitor_log()

启动脚本

nohup python3 protect.py > block.log &
2. 验证码强制挑战

在登录/注册页面添加Google reCAPTCHA:


<script src="https://www.google.com/recaptcha/api.js">script>
<form>
  <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY">div>
  <button type="submit">提交button>
form>


import requests
def verify_captcha(response):
    secret = "YOUR_SECRET_KEY"
    result = requests.post(
        "https://www.google.com/recaptcha/api/siteverify",
        data={'secret': secret, 'response': response}
    ).json()
    return result['success']

四、工具推荐与总结

  1. 攻击分析工具
    • Wireshark(抓包分析)
    • Logstash(日志实时过滤)
  2. 总结 Checklist
    • 确认攻击类型(DDoS/CC/入侵)
    • 临时封禁高危IP
    • 启用云防护紧急模式
    • 部署速率限制规则

你可能感兴趣的:(安全问题汇总,服务器,运维,人工智能,网络,安全)