在 Debian + LNMP(Linux + Nginx + MySQL/MariaDB + PHP)环境下,防止黑客攻击需要从系统层、Web 层、数据库层、应用层、运维监控多方面入手。下面给你一套实用、可落地的安全方案。
apt update && apt upgrade -y
并开启自动安全更新:
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
编辑:
nano /etc/ssh/sshd_config
修改:
PermitRootLogin no
PasswordAuthentication no
使用 SSH 密钥登录。
Port 22222
然后:
systemctl restart ssh
使用 ufw:
ufw allow 22222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
server_tokens off;
location ~ /\. {
deny all;
}
location ~* \.(env|sql|bak|conf|log)$ {
deny all;
}
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 403;
}
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
limit_req zone=one burst=20 nodelay;
}
apt install certbot python3-certbot-nginx
certbot --nginx
编辑 php.ini:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
display_errors = Off
log_errors = On
open_basedir = /var/www/html:/tmp
location /uploads/ {
location ~ \.php$ {
deny all;
}
}
mysql_secure_installation
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1');
port = 3307
location /admin {
allow 1.2.3.4;
deny all;
}
apt install fail2ban
防止 SSH / Nginx 暴力破解
apt install aide
/var/log/nginx/access.log
/var/log/auth.log
rsync /var/www /backup
mysqldump -u root -p --all-databases > db.sql
✅ 不用 root
✅ 只用密钥
✅ 开防火墙
✅ 上 HTTPS
✅ 隐藏版本
✅ 禁危险函数
✅ 分库分用户
✅ 勤更新
✅ 装 fail2ban
✅ 定期备份
如果你愿意,我可以按你的 LNMP 版本(如 Debian 11/12、Nginx 1.x、PHP 8.x)给你一份可直接用的配置文件。