徒弟啊,今天咱们聊聊网站安全。你别觉得这玩意儿高深莫测,其实就像给自家院子装门锁一样,一步步来就行。
先说最基础的 SSL 证书。这玩意儿就是给网站穿件加密外套,让数据在传输过程中不被偷看。你去阿里云或者腾讯云申请个免费证书,下载下来拿到手的是两个文件,一个 crt 一个 key。把这两个文件传到服务器上,一般放 /etc/nginx/ssl 目录下。然后编辑 nginx 配置文件,在 server 块里加上 ssl_certificate 和 ssl_certificate_key 两行,指向你刚才放的文件路径。再写上 ssl_protocols TLSv1.2 TLSv1.3,把老版本协议关了,安全系数更高。改完配置别忘了 nginx -t 测试一下,没问题就 nginx -s reload 重启。这时候你访问网站,浏览器地址栏就会显示那把小绿锁了。
接下来是防火墙。服务器上装个 ufw 就行,Ubuntu 自带这工具。先 ufw default deny incoming,默认拒绝所有进来的连接。然后 ufw allow 22/tcp 放开 SSH 端口,不然你自己也连不上了。要是跑网站就 ufw allow 80/tcp 和 ufw allow 443/tcp,把 HTTP 和 HTTPS 端口打开。最后 ufw enable 启动防火墙。就这么简单,那些乱七八糟的端口全给挡在外面了。
防攻击这块,主要是防 CC 攻击和 SQL 注入。装个 fail2ban 能自动封那些反复尝试登录的 IP。配置文件在 /etc/fail2ban/jail.local 里,设置 bantime = 3600 就是封一小时,findtime = 600 表示十分钟内失败五次就封。启动之后它会盯着日志,发现异常自动往防火墙里加黑名单。
再说个实在案例。去年有个学员的网站被 CC 攻击,服务器 CPU 直接飙到百分之百。后来他在 nginx 里加了限流配置,limit_req_zone 按 IP 分配区域,每个 IP 每秒只允许十次请求。超过这个数的直接返回 503。再加上 cloudflare 的免费 CDN,把攻击流量挡在门外,网站就稳当了。
安全这事儿没有一劳永逸,得经常看看日志,更新系统补丁。你先把上面这些做了,基本能挡住大部分小毛贼。遇到真有问题,咱们再一起琢磨。
