外贸独立站安全防护:防DDoS与防暴力破解实战指南

这个安全细节,很多外贸站长踩过坑。

外贸建站实战经验

案例背景:帮五金配件客户抗住了DDoS

上个月接了个五金配件外贸独立站,流量不大,月均两三万UV。客户突然遭遇一次小规模DDoS攻击,流量瞬间飙升到5万QPS,服务器直接CPU飙满,网站秒变“死机”。我帮他做了全链路安全防护,最后稳定扛过了攻击,整个过程用到的命令行和配置,今天全分享给你们。

为什么外贸网站一定要配置DMARC?

简单说,DMARC是邮件认证的最后一道关卡。很多外贸独立站发邮件,客户邮箱经常被判垃圾邮件,邮件到达率低得惨。配置了DMARC后,邮件服务器会严格校验发件人身份,防止钓鱼邮件和伪造发信,邮件信誉度提升,邮件到达率直接从62%飙到95%。

配置DMARC的步骤很简单:

  • 配置SPF记录,指定哪些服务器允许发邮件。
  • 配置DKIM,邮件内容加签名。
  • 配置DMARC策略,告诉收件服务器如何处理未通过认证的邮件。

举例,DNS里添加这条DMARC记录:

_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-failures@example.com; fo=1"

这条记录意思是,未通过SPF或DKIM的邮件直接拒收,并把报告发到指定邮箱。

防DDoS实战:Nginx + iptables + Cloudflare三剑客

单靠服务器防护,抗住大流量DDoS几乎不可能。我的方案是多层防护叠加,先说Nginx层:

1. Nginx限制连接数和请求频率

修改Nginx配置,限制同一IP最大连接数和请求速率,防止暴力刷流量。

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;

    server {
        ...

        limit_conn addr 20;
        limit_req zone=req_limit_per_ip burst=5 nodelay;

        ...
    }
}
  • limit_conn_zone:定义内存区域存储IP连接数
  • limit_req_zone:定义请求速率,10请求/秒
  • limit_conn:限制单IP最大连接数20
  • limit_req:超过速率请求直接丢弃

2. iptables黑名单和限速

iptables是内核层防火墙,直接丢包更高效。下面是限制每IP每分钟最大连接数的命令:

# 限制每个IP每分钟最多连接100次80端口
iptables -N HTTP_LIMIT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j HTTP_LIMIT
iptables -A HTTP_LIMIT -m recent --set
iptables -A HTTP_LIMIT -m recent --update --seconds 60 --hitcount 100 -j DROP

这段规则意思是,如果某IP一分钟内新建连接超过100次,后续连接直接丢弃。对抗高频连接攻击十分有效。

3. 利用Cloudflare做流量清洗

Cloudflare作为CDN+WAF能帮你挡掉大部分DDoS,尤其是网络层大流量攻击。把域名DNS指向Cloudflare,开启“I’m under attack”模式,自动弹出JS挑战页面,过滤掉恶意机器人。

特别提醒,Cloudflare配置中要关闭“代理协议”,使用真实IP转发,Nginx才能正确读取客户端IP。

Nginx配置获取真实IP:

http {
    real_ip_header CF-Connecting-IP;
    set_real_ip_from 173.245.48.0/20;
    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 103.22.200.0/22;
    set_real_ip_from 103.31.4.0/22;
    # 其他Cloudflare IP段
}

防暴力破解实操:SSH与WordPress双重加固

外贸独立站攻击者喜欢暴力破解SSH和后台登录,防护没做好,服务器秒变肉鸡。

1. SSH防暴力破解

  • 禁用root远程登录
  • 改默认端口
  • 使用公钥登录
  • 安装fail2ban自动封禁暴力IP

修改SSH配置:

# /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no

安装并配置fail2ban:

yum install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 3600

fail2ban会扫描日志,检测失败登录尝试超过5次就封禁IP一小时,极大减少暴力破解风险。

2. WordPress后台防护

WordPress后台登录暴力破解同样猖獗。我用过两个利器:

  • Limit Login Attempts Reloaded插件,限制密码错误次数
  • nginx配置HTTP认证,给/wp-admin目录加一层登陆

给wp-admin加HTTP基本认证,配置示例:

location /wp-admin {
    auth_basic "Admin Login";
    auth_basic_user_file /etc/nginx/.htpasswd;

    try_files $uri $uri/ /index.php?$args;
}

用命令生成密码文件:

htpasswd -c /etc/nginx/.htpasswd admin

这样双重验证,暴力破解难度直线上升。

DNS安全加固

外贸站DNS安全同样不能忽视,DNS被劫持,客户访问网站变成钓鱼页面,损失惨重。

  • 启用DNSSEC,防止DNS缓存投毒
  • 使用权威DNS厂商,确保高可用和安全
  • 设置域名注册商账户双因素认证,避免域名被盗

DNSSEC配置需要DNS服务支持,比如Cloudflare、AWS Route 53都支持。开启后,DNS解析有数字签名验证,确保返回记录未被篡改。

总结一点:安全不是一劳永逸

外贸独立站防护没有万能钥匙,必须多层次、多工具联合起来用。Nginx限流+iptables丢包+Cloudflare清洗,再加上SSH、WordPress后台双重认证,最后DNS层面加固,才能把安全风险降到最低。

记住,安全配置不是配置完就完事,攻击花样多,日志要常看,规则要常调,工具要常更新。上月五金配件客户的服务器就是这样活下来,稳稳地吃下了黑产的流量洪峰。

你要是外贸独立站还没做这些,赶紧动手!

滚动至顶部