
核心要点(TL;DR)
- 网站安全入门需从服务器加固、防火墙、HTTPS、漏洞修复四方面着手。
- 使用ufw和fail2ban快速配置基础防火墙与入侵防御。
- 强制HTTPS并启用HSTS可有效防止中间人攻击。
- 定期更新软件和备份是成本最低的安全措施。
你的网站真的安全吗?
许多站长和运维人员认为网站上线即可,却忽略了安全防护。据统计,超过70%的网站存在基础安全配置缺陷,如弱密码、未修复漏洞、开放多余端口等。这些缺陷极易被自动化工具扫描并利用,导致数据泄露、服务中断甚至服务器被控。本文将从零开始,手把手教你搭建一套基础网站安全防护体系,涵盖服务器加固、防火墙配置、HTTPS部署、漏洞修复与安全监控,并提供具体命令和检查清单,助你快速提升网站安全水位。
一、服务器安全加固:从系统层面堵住漏洞
服务器是网站的根基,加固系统能有效减少攻击面。以下步骤适用于主流Linux发行版(如Ubuntu/CentOS)。
1. 更新系统与软件
保持系统最新是成本最低的安全措施。定期执行:
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS建议开启自动安全更新,例如Ubuntu可安装unattended-upgrades。
2. 最小化服务与端口
关闭不必要的服务和端口。使用netstat -tulnp查看监听端口,停止无用服务:
sudo systemctl stop
sudo systemctl disable 仅开放必要端口(如80、443、22)。
3. 强化SSH访问
修改SSH配置/etc/ssh/sshd_config:
- 禁用root登录:
PermitRootLogin no - 使用密钥认证:
PasswordAuthentication no - 更改默认端口:
Port 2222(可选)
重启SSH服务:sudo systemctl restart sshd。
4. 账户与权限管理
删除无用账户,设置强密码策略。使用sudo passwd -l 锁定账户。为网站文件设置正确权限:目录755,文件644,属主为Web用户(如www-data)。
二、防火墙与入侵防御:构建网络边界
防火墙能过滤恶意流量,是网站安全防护的关键组件。
1. 配置UFW(Ubuntu)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable查看状态:sudo ufw status verbose。
2. 配置Firewalld(CentOS)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload3. 安装Fail2ban防暴力破解
Fail2ban能监控日志并自动封禁恶意IP。安装:
sudo apt install fail2ban -y # Debian/Ubuntu
sudo yum install fail2ban -y # CentOS创建本地配置/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600重启服务:sudo systemctl restart fail2ban。
三、HTTPS与安全头:加密传输与浏览器防护
HTTPS加密数据传输,防止窃听和篡改。安全头则增强浏览器防护。
1. 部署Let's Encrypt证书
使用Certbot自动获取和续期证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.comCertbot会自动修改Nginx配置并设置续期。
2. 强制HTTPS跳转
在Nginx配置中添加:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}3. 配置安全响应头
在HTTPS server块中添加:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Content-Security-Policy "default-src 'self'" always;这些头能防御点击劫持、MIME嗅探等攻击。
四、漏洞修复与安全更新:持续维护
漏洞是攻击者的主要入口。定期扫描和修复至关重要。
1. 使用漏洞扫描工具
推荐OpenVAS或Nessus(社区版)。也可用在线扫描如AegisX的漏洞扫描功能,快速发现Web应用漏洞。
2. 及时更新CMS和插件
若使用WordPress等CMS,务必保持核心、主题和插件最新。删除未使用的插件和主题。
3. 备份策略
定期备份网站文件和数据库,并测试恢复流程。使用rsync或mysqldump:
mysqldump -u root -p dbname > backup.sql
rsync -avz /var/www/html/ /backup/五、安全监控与日志分析:及时发现异常
监控能让你在攻击发生时快速响应。
1. 日志集中管理
使用rsyslog或journald收集日志,并定期检查/var/log/下的auth.log、nginx/access.log等。
2. 入侵检测
安装AIDE进行文件完整性检查:
sudo apt install aide -y
sudo aideinit配置每日检查并邮件告警。
3. 实时监控工具
使用htop、netstat监控资源与连接。可部署AegisX的实时监控告警,及时发现异常流量和登录行为。
六、基础安全防护检查清单
完成以上步骤后,使用以下清单核对:
| 项目 | 检查点 |
|---|---|
| 系统更新 | 已安装最新安全补丁 |
| SSH安全 | 禁用root登录,使用密钥认证 |
| 防火墙 | 仅开放必要端口,启用fail2ban |
| HTTPS | 证书有效,强制跳转,安全头配置 |
| 漏洞管理 | 定期扫描,及时更新CMS/插件 |
| 备份 | 定期备份并测试恢复 |
| 监控 | 日志检查,入侵检测,告警设置 |
建议每季度复查一次,确保防护持续有效。
行动建议:从今天开始加固你的网站
安全不是一次性的任务,而是持续的过程。立即执行以下三步:1. 按照本文步骤配置服务器和防火墙;2. 部署HTTPS并设置安全头;3. 建立定期更新和备份计划。若需更高级防护,可评估AegisX的WAF和监控服务,为网站提供额外保障。记住,基础防护能抵御90%的常见攻击,切勿因疏忽而付出代价。
常见问题(FAQ)
我的网站刚上线,应该先做哪些安全措施?
首先更新系统补丁,配置防火墙只开放必要端口,安装fail2ban防止暴力破解,然后部署HTTPS证书并强制跳转。这些基础措施能防御大部分自动化攻击。
如何检查服务器是否被入侵?
检查异常进程、网络连接、计划任务和登录日志。使用top、netstat、crontab -l和last命令,并查看/var/log/auth.log中的失败登录记录。
免费SSL证书和付费的有什么区别?
免费证书(如Let's Encrypt)提供相同强度的加密,但有效期短(90天),需自动续期。付费证书通常提供更长有效期和技术支持,适合企业用户。
网站安全防护需要多少预算?
基础防护可以零成本实现,如使用开源防火墙和免费证书。若需高级防护如WAF,可考虑云服务商按需付费,每月几十到几百元不等。
如何防止网站被DDoS攻击?
基础防护可限制连接数、启用CDN隐藏源站IP。若攻击流量大,需接入专业DDoS清洗服务。日常应监控流量异常,及时切换高防IP。