网络安全是建站过程中必须重视的环节,今天师傅就带你一步步把服务器的安全防护做好。咱们从最基础的 SSL 证书配置说起,这是保护用户数据的第一道防线。
假设你有一台 CentOS 服务器,域名已经解析到位。先安装 Certbot 工具,执行 yum install certbot python3-certbot-nginx 完成依赖准备。然后运行 certbot –nginx -d 你的域名,按提示输入邮箱、同意协议,证书会自动申请并配置到 Nginx 里。配置完成后用浏览器访问 https 开头地址,看到小锁标志就说明成功了。记得设置自动续期,执行 crontab -e 添加 0 3 * * * certbot renew –quiet,每天凌晨三点检查续期,避免证书过期导致网站无法访问。
配好 SSL 只是第一步,防火墙才是真正挡攻击的闸门。CentOS 自带 firewalld,先 systemctl start firewalld 启动服务,再用 firewall-cmd –permanent –add-service=http 和 firewall-cmd –permanent –add-service=https 开放 Web 端口。如果用了自定义 SSH 端口,比如 2222,执行 firewall-cmd –permanent –add-port=2222/tcp 单独放行。关键是要关闭不用的端口,执行 firewall-cmd –list-all 查看当前开放列表,发现多余端口就用 –remove-port 关掉。最后 firewall-cmd –reload 使配置生效。这套组合拳下来,服务器只暴露必要端口,攻击面大大缩小。
光有防火墙还不够,得防着恶意请求把服务器打垮。安装 fail2ban 能自动封禁频繁尝试的 IP,yum install fail2ban 安装后,编辑 /etc/fail2ban/jail.local 文件,添加 [sshd] 区块,设置 maxretry = 3 表示三次失败就封禁,bantime = 3600 封一小时。启动服务 systemctl enable fail2ban && systemctl start fail2ban 就生效了。你可以自己测试,故意输错三次 SSH 密码,再用另一个终端尝试连接,会发现直接被拒绝。对于 Web 层面,Nginx 可以配置限流,在 server 块里加 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s,然后在 location 中用 limit_req zone=one burst=20,这样每秒超过十次的请求会被拦截,防住简单的 CC 攻击。
去年有个徒弟按这套方案配置后,网站扛住了一次小规模 DDoS 攻击。攻击者用几百个 IP 同时请求,fail2ban 自动封了五十多个恶意地址,Nginx 限流挡掉了剩余洪水请求,服务器 CPU 只涨了百分之二十,网站全程正常访问。关键是要定期检查日志,tail -f /var/log/secure 看 SSH 尝试,tail -f /var/log/nginx/access.log 看 Web 请求,发现异常模式及时调整策略。
安全不是一劳永逸的事,养成每周查看日志、每月更新系统的习惯,才能让网站长期稳定运行。师傅领进门,修行靠个人,把这些基础打牢,后续遇到复杂攻击才有底气应对。