适用对象与准备条件
本文面向已完成香港服务器租用:如何根据CPU与内存配置匹配业务需求选型并交付使用的中小企业、跨境电商卖家及运维人员。读者需具备基础的Linux命令行操作能力,并拥有服务器的root或sudo权限。
在开始配置前,请确保您已备份重要数据,并确认当前业务所使用的端口(如Web服务的80/443,数据库的3306等),以免因规则设置过严导致业务中断。
第一道防线:云平台安全组的最小权限原则
安全组是云服务商提供的虚拟防火墙,位于网络入口的最外层。对于香港服务器而言,由于网络环境复杂,合理的安全组策略能过滤掉大量无效扫描。
操作要点:
- 默认拒绝所有入站:除非明确允许,否则禁止所有外部IP访问。
- 仅开放必要端口:例如,若服务器仅作为Web服务器,则只开放TCP 80和443端口。SSH端口(22)建议仅对特定管理IP开放,或修改为非常用高位端口以减少暴力破解尝试。
- 禁用高危端口:严禁向公网开放3306(MySQL)、6379(Redis)等数据库端口,这些服务应仅通过内网IP访问。
第二道防线:Linux系统防火墙(iptables/firewalld)配置实战
即使通过了安全组,系统层面的防火墙仍是抵御小规模DDoS SYN Flood的关键。以下以CentOS/RHEL常用的firewalld为例进行说明。
步骤1:启动并启用firewalld
systemctl start firewalld
systemctl enable firewalld
步骤2:配置基础规则
允许SSH、HTTP和HTTPS流量:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
步骤3:限制单IP并发连接数
通过iptables直接添加规则,限制单个IP在60秒内的新建连接数不超过20个,这能有效缓解简单的SYN Flood:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT
注意:此命令需在每次重启后重新加载,建议将其写入启动脚本或使用持久化工具。
第三道防线:利用Fail2ban与Nginx缓解CC攻击
CC攻击针对的是应用层,通过模拟正常用户频繁请求动态页面消耗服务器CPU资源。单纯的网络层防火墙难以识别此类攻击,需结合应用层工具。
1. 安装与配置Fail2ban
Fail2ban通过监控日志文件,自动封禁多次失败登录或高频访问的IP。
yum install fail2ban -y
systemctl start fail2ban
创建自定义过滤器 /etc/fail2ban/jail.local,针对Nginx访问日志设置阈值:
[nginx-cc]
enabled = true
filter = nginx-cc
action = iptables-multiport[name=NoCC, port="http,https"]
logpath = /var/log/nginx/access.log
maxretry = 50
findtime = 60
bantime = 3600
上述配置表示:若某IP在60秒内访问超过50次,将被封禁1小时。
2. Nginx限流模块
在Nginx配置文件中添加限流区域:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
}
这将限制每个IP每秒最多处理10个请求,突发流量允许20个,超出部分直接返回503错误,从而保护后端PHP或Java应用不被压垮。
验证方法与常见错误排查
验证方法:
- 使用
fail2ban-client status查看被封禁的IP列表。 - 使用
iptables -L -n检查防火墙规则是否生效。 - 通过另一台服务器使用
ab或wrk工具进行低压测试,观察Nginx是否按预期返回503状态码。
常见错误:
- 误封管理员IP:在配置Fail2ban时,务必将管理IP加入白名单(
ignoreip参数)。 - 规则冲突:同时使用ufw、firewalld和iptables可能导致规则混乱,建议只保留一种防火墙管理工具。
- 日志路径错误:确保Fail2ban配置的logpath与实际Nginx日志路径一致,否则无法触发封禁。
回滚与恢复策略
若配置后导致业务无法访问,可通过以下方式快速恢复:
- 临时关闭防火墙:
systemctl stop firewalld(仅用于紧急排查,确认后需立即重新配置)。 - 清除iptables规则:
iptables -F将所有链清空,恢复默认允许状态。 - 重启Fail2ban:
systemctl restart fail2ban以解除所有自动封禁的IP。
建议在每次重大变更前快照服务器磁盘,以便在极端情况下快速回滚至变更前状态。
结语与建议
安全防护是一个持续的过程,而非一次性配置。对于香港服务器用户而言,除了上述系统级防御外,选择具备基础DDoS清洗能力的服务商也至关重要。IDC Luma 提供包括云服务器、物理服务器在内的多种产品,其在网络安全架构上的投入能为用户提供更稳定的底层环境。若您正在寻找高防或标准型香港服务器,可参考相关产品线以获取更适合业务需求的解决方案。
