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

案例背景:帮五金配件客户抗住了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层面加固,才能把安全风险降到最低。
记住,安全配置不是配置完就完事,攻击花样多,日志要常看,规则要常调,工具要常更新。上月五金配件客户的服务器就是这样活下来,稳稳地吃下了黑产的流量洪峰。
你要是外贸独立站还没做这些,赶紧动手!