首页主机资讯LNMP环境下Ubuntu如何防止攻击

LNMP环境下Ubuntu如何防止攻击

时间2025-10-25 03:35:04发布访客分类主机资讯浏览1113
导读:保持软件持续更新 定期更新Ubuntu系统、Nginx、MySQL、PHP及相关依赖至最新版本,及时修补已知安全漏洞。可通过sudo apt update && sudo apt upgrade -y命令一键更新,建议开启u...

保持软件持续更新
定期更新Ubuntu系统、Nginx、MySQL、PHP及相关依赖至最新版本,及时修补已知安全漏洞。可通过sudo apt update & & sudo apt upgrade -y命令一键更新,建议开启unattended-upgrades实现自动更新。

强化SSH访问安全

  • 修改默认端口:编辑/etc/ssh/sshd_config,将Port 22改为非标准端口(如2222),减少暴力破解风险;
  • 禁用root登录:设置PermitRootLogin no,禁止直接通过SSH登录root账户;
  • 启用公钥认证:配置PubkeyAuthentication yes并禁用密码认证(PasswordAuthentication no),使用SSH密钥对登录;
  • 重启SSH服务使配置生效:sudo systemctl restart sshd

配置防火墙限制访问
使用UFW(Uncomplicated Firewall)限制入站/出站连接,仅允许必要端口:

  • 允许SSH(自定义端口,如2222):sudo ufw allow 2222/tcp
  • 允许HTTP/HTTPS:sudo ufw allow 'Nginx Full'
  • 启用防火墙:sudo ufw enable
  • 默认拒绝未明确允许的连接:sudo ufw default deny incoming

优化Nginx配置

  • 禁用不必要的模块:移除未使用的Nginx模块(如autoindex),减少攻击面;
  • 设置安全HTTP头:在Nginx配置中添加add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; add_header Content-Security-Policy "default-src 'self'; ",防范MIME类型嗅探、点击劫持等攻击;
  • 隐藏版本信息:修改server_tokens off; ,避免暴露Nginx版本;
  • 限制请求速率:通过limit_req_zonelimit_req指令限制单个IP的请求频率(如1秒1次),防范DDoS/CC攻击。

加固MySQL/MariaDB安全

  • 运行安全脚本:安装MySQL后执行sudo mysql_secure_installation,完成设置强root密码、删除匿名用户、禁止远程root登录等操作;
  • 限制访问权限:仅允许信任的IP地址访问MySQL(如GRANT ALL PRIVILEGES ON database.* TO 'user'@'trusted_ip' IDENTIFIED BY 'strong_password'; );
  • 使用强密码:为所有数据库用户设置复杂且唯一的密码(包含大小写字母、数字、特殊字符);
  • 强制加密连接:配置MySQL使用TLS(如ssl-cassl-certssl-key参数),加密客户端与服务器间的通信。

安全配置PHP

  • 禁用危险函数:编辑/etc/php/{ version} /fpm/php.ini,设置disable_functions = eval,passthru,exec,system,chroot,scandir,shell_exec,proc_open,禁止执行危险系统命令;
  • 限制文件访问:使用open_basedir限制PHP脚本只能访问指定目录(如/var/www/html:/tmp/),防止越权访问;
  • 关闭错误显示:设置display_errors = Off,避免暴露服务器路径、数据库结构等敏感信息;
  • 禁用远程代码包含:设置allow_url_include = Off,防止远程文件包含攻击。

使用Web应用防火墙(WAF)
部署ModSecurity等WAF,过滤恶意请求(如SQL注入、XSS攻击)。可通过sudo apt install libapache2-mod-security2安装(若使用Apache作为前端代理),或使用Nginx的ModSecurity模块,配置规则集(如OWASP Core Rule Set)。

启用HTTPS加密通信
使用Let’s Encrypt免费证书服务获取SSL证书,配置Nginx支持HTTPS:

  • 安装Certbot:sudo apt install certbot python3-certbot-nginx
  • 获取证书:sudo certbot --nginx -d yourdomain.com
  • 自动续期:Certbot会自动添加续期任务,也可手动运行sudo certbot renew --dry-run测试。

监控与日志管理

  • 启用日志审计:定期检查Nginx(/var/log/nginx/access.log/error.log)、MySQL(/var/log/mysql/error.log)、PHP(/var/log/php{ version} -fpm.log)的日志,使用fail2ban监控异常登录(如SSH暴力破解);
  • 使用监控工具:部署Prometheus+Grafana监控服务器性能(CPU、内存、磁盘)和安全状况(如异常连接数、请求频率),及时预警。

数据备份与恢复
定期备份网站数据(/var/www/html)和数据库(mysqldump -u root -p database_name > backup.sql),将备份文件存储在异地(如云存储)或离线介质(如移动硬盘),测试备份恢复流程,确保安全事件发生时能快速恢复。

安全编码实践
开发Web应用时遵循安全编码规范:

  • 验证用户输入:对表单数据(如用户名、密码)进行格式检查(如长度、字符类型),防止SQL注入(使用预编译语句)、XSS(输出转义);
  • 使用参数化查询:避免直接拼接SQL语句(如SELECT * FROM users WHERE username = '$username');
  • 最小权限原则:数据库用户仅授予必要权限(如SELECTINSERT),避免使用root账户。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: LNMP环境下Ubuntu如何防止攻击
本文地址: https://pptw.com/jishu/735350.html
Debian Message有哪些实用功能 如何在Ubuntu上迁移LNMP站点

游客 回复需填写必要信息