一、防御架构设计原则
- 纵深防御模型:
用户 → CDN/WAF → 高防IP → 源服务器(隐藏真实IP) ↑ 防火墙集群
二、必做安全加固措施
1. 隐藏服务器真实信息
- 修改SSH端口并禁用root登录:
# /etc/ssh/sshd_config Port 59222 PermitRootLogin no
- Nginx隐藏版本号:
server_tokens off;
2. 自动化漏洞扫描
使用Vuls进行定期扫描:
# 快速扫描系统漏洞
docker run --rm -it vuls/vuls scan -report-json -log-dir=/path/to/log -config=/path/to/config.toml
三、代码级防护方案
1. 动态令牌验证(防御重放攻击)
# Flask示例:生成动态令牌
from flask import Flask, session
import hashlib
import time
app = Flask(__name__)
app.secret_key = 'SECRET_KEY'
@app.route('/get_token')
def get_token():
timestamp = str(int(time.time()))
token = hashlib.sha256(f"{timestamp}{session.sid}".encode()).hexdigest()
session['token'] = token
return token
# 验证请求中的token
@app.route('/api')
def api():
client_token = request.args.get('token')
if client_token != session.get('token'):
return "Invalid token", 403
# 处理业务逻辑
2. 数据库防注入方案
使用ORM框架代替原生SQL:
# Django ORM示例
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
# 安全查询(非拼接SQL)
User.objects.filter(name=request.GET['name'])
四、监控与应急响应
1. 实时告警系统
配置Prometheus+Alertmanager:
# alert.rules.yml
groups:
- name: ddos-alert
rules:
- alert: HighTraffic
expr: sum(rate(nginx_http_requests_total[5m])) > 1000
for: 2m
labels:
severity: critical
annotations:
summary: "疑似DDoS攻击(请求速率过高)"
2. 定期攻防演练
使用Metasploit测试漏洞:
# 模拟SQL注入测试
msfconsole -x "use auxiliary/scanner/http/sql_injection; set RHOSTS 目标IP; run"
五、总结:安全加固清单
- 修改默认端口与敏感信息
- 部署WAF与高防IP
- 自动化漏洞扫描(每周一次)
- 业务代码防注入处理
- 建立监控告警系统
- 每月进行攻防演练