服务器安全加固清单:黑客最常攻击的10个入口和防护方案
服务器被入侵的代价远超你的想象——数据被加密勒索、网站被挂马、用户信息泄露。大多数入侵不是因为攻击者有多高明,而是因为管理员忽略了基本的安全配置。本文列出10个最容易被攻击的入口和对应的加固方案。
1. SSH弱密码
攻击方式:黑客用字典暴破root用户的常见密码(admin123、password、123456等)。
加固方案:
# 禁用root直接登录
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 禁用密码登录,只用密钥
sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# 修改默认22端口(降低自动化扫描命中率)
sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
systemctl reload sshd额外防护:安装fail2ban,3次登录失败后自动封禁IP 10分钟。
2. 未更新的软件漏洞
攻击方式:利用已知CVE漏洞攻击过时的软件版本。Apache Struts、WordPress插件、旧版PHP都是重灾区。
加固方案:
# Debian/Ubuntu自动安全更新
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
# 定期手动检查
apt update && apt list --upgradable | grep -i security对于WordPress/Typecho这类CMS,启用后台自动更新(小版本),大版本发布后一周内手动更新。
3. 开放的数据库端口
攻击方式:MySQL的3306、Redis的6379、MongoDB的27017直接暴露在公网,没有任何认证或使用默认密码。
加固方案:
- 数据库只监听127.0.0.1,不绑定公网IP
- Redis设置
requirepass强密码 - MongoDB启用认证(
security.authorization: enabled) - 在云防火墙层禁止数据库端口的入站流量
4. 不安全的文件权限
攻击方式:网站目录权限设置为777(任何人可写),上传目录可执行PHP文件。
加固方案:
# 目录一律755
find /var/www -type d -exec chmod 755 {} \;
# 文件一律644
find /var/www -type f -exec chmod 644 {} \;
# 上传目录禁止执行PHP
echo "php_flag engine off" > /var/www/usr/uploads/.htaccess5. 未限制的管理后台
攻击方式:暴破WordPress的/wp-admin、Typecho的/admin登录页。
加固方案:
# Nginx限制管理后台只能特定IP访问
location /admin/ {
allow 你的IP;
deny all;
}
# 或添加HTTP基础认证
location /admin/ {
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}6. 信息泄露
攻击方式:phpinfo.php暴露在公网、.git目录可访问泄露源码、错误信息显示数据库路径。
加固方案:
# 禁止访问敏感文件
location ~ /\.(git|env|htaccess) {
deny all;
return 404;
}
# 生产环境关闭错误显示
# php.ini: display_errors = Off7. SQL注入和XSS
攻击方式:未过滤的用户输入直接拼接到SQL查询或输出到HTML页面。
加固方案:使用参数化查询(Prepared Statements)而非字符串拼接。Typecho和WordPress核心代码已经做了防护,但自定义插件和主题可能引入漏洞。审查所有第三方代码中的$_GET和$_POST使用。
8. DDoS攻击
攻击方式:大量请求耗尽服务器带宽或CPU。
加固方案:套Cloudflare免费CDN,开启"Under Attack"模式。Nginx配置连接限流:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;9. 备份文件泄露
攻击方式:backup.zip、database.sql等备份文件放在网站目录下可被直接下载。
加固方案:备份文件绝对不要放在web根目录下。使用root用户crontab执行备份,存储在/root/backups/或远程服务器。
10. 缺乏入侵检测
攻击方式:已经被入侵但不知情,攻击者长期潜伏。
加固方案:
- 安装rkhunter扫描rootkit:
rkhunter --check - 监控
/var/log/auth.log中的异常登录 - 定期检查crontab和启动项是否有未知条目
- 用
netstat -tlnp检查是否有不明监听端口
安全是一个持续的过程而非一次性配置。每月花10分钟做一遍安全检查,远比被入侵后花10天恢复数据划算。