Ubuntu LNMP如何进行安全加固
导读:Ubuntu LNMP 安全加固实操清单 一 系统与账户安全 保持系统与应用为最新:执行apt update && apt full-upgrade -y && apt autoremove -y,并启用无...
Ubuntu LNMP 安全加固实操清单
一 系统与账户安全
- 保持系统与应用为最新:执行apt update & & apt full-upgrade -y & & apt autoremove -y,并启用无人值守安全更新(如 unattended-upgrades)以持续获取补丁。
- 最小权限账户与 sudo:创建非 root运维账户,按需授予sudo;禁止 root 远程登录。
- SSH 加固:编辑**/etc/ssh/sshd_config**,设置PermitRootLogin no、PasswordAuthentication no、PubkeyAuthentication yes;如更改 SSH 端口,先放行新端口再变更,避免被锁。
- 防火墙基线:使用 UFW 默认拒绝入站、放行出站,仅开放22/80/443(或自定义 SSH 端口)与业务必需端口;必要时对 SSH 限制来源 IP。
- 暴力破解防护:安装并启用 Fail2Ban,为 SSH 与 Nginx 配置拦截策略。
二 网络与防火墙规则
- UFW 快速基线:
- ufw default deny incoming
- ufw default allow outgoing
- ufw allow OpenSSH(或自定义 SSH 端口)
- ufw allow 80/tcp, 443/tcp
- ufw enable
- 精细化访问控制:对管理端口(如 22)建议仅允许可信网段或固定 IP:ufw allow from YOUR_IP to any port 22;变更 SSH 端口后,务必先添加新规则再修改 sshd_config。
- 数据库访问控制:数据库默认端口 3306 仅在需要时对外开放,生产环境优先通过本地套接字或内网访问,并在云安全组层面做白名单。
- 变更验证:每次规则调整后执行ufw status verbose核对,确保业务与运维通道不被阻断。
三 Nginx 安全配置
- 隐藏版本与信息泄露:在 http/server 块设置server_tokens off; 。
- 全站 HTTPS 与强化参数:使用 Certbot 获取并自动配置证书,建议启用重定向 80→443、HSTS、OCSP Stapling,示例:certbot --nginx --redirect --hsts --staple-ocsp --email your@email.com --agree-tos。
- 安全响应头:统一添加
- X-Frame-Options SAMEORIGIN
- X-Content-Type-Options nosniff
- Referrer-Policy strict-origin-when-cross-origin
- Permissions-Policy accelerometer=(), camera=(), microphone=()
- Content-Security-Policy default-src ‘self’; script-src ‘self’; object-src ‘none’;
- Strict-Transport-Security max-age=63072000; includeSubDomains; preload
- 抗 DoS 与资源限制:
- client_max_body_size 2M; client_body_timeout 10s; keepalive_timeout 15;
- 连接与请求限速:limit_conn_zone、limit_req_zone 与 limit_conn/limit_req 控制每 IP 并发与速率(如 10 并发、5 r/s 桶速、突发 5)。
- 访问控制:对管理后台、备份目录等路径设置鉴权或 IP 白名单。
四 MySQL MariaDB 安全
- 安全初始化:执行mysql_secure_installation,完成强 root 密码、删除匿名用户、禁止 root 远程登录、移除 test 库等步骤。
- 绑定与解析:在 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf 设置bind-address = 127.0.0.1、skip-name-resolve,减少暴露面与解析延迟。
- 权限最小化:为应用创建专用账户并授予最小权限,例如:
- CREATE USER ‘appuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- GRANT SELECT, INSERT, UPDATE, DELETE ON yourdb.* TO ‘appuser’@‘localhost’;
- FLUSH PRIVILEGES;
- 加密与审计:启用TLS 连接(如需要远程管理数据库)、开启错误日志与安全审计,定期审查异常登录与慢查询。
五 PHP 与文件权限
- php.ini 关键项:
- expose_php Off;display_errors Off;log_errors On;error_log /var/log/php_errors.log
- memory_limit 128M;max_execution_time 30;max_input_time 60
- file_uploads On;upload_max_filesize 2M;post_max_size 8M
- session.cookie_httponly 1;session.cookie_secure 1;session.use_strict_mode 1
- disable_functions exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
- 路径与函数限制:在 Nginx FastCGI 段为站点设置open_basedir(如 fastcgi_param PHP_ADMIN_VALUE “open_basedir=/var/www/html:/tmp/”),限制 PHP 读写范围。
- 目录权限与属主:网站根目录建议 chown -R www-data:www-data /var/www/html,chmod -R 755 /var/www/html,文件 644,避免 777。
- 运行与扩展:仅启用必需 PHP 扩展,移除调试/开发组件;定期审计 PHP-FPM 进程与日志。
六 运维监控与备份
- 日志与监控:集中收集并定期审计 Nginx 访问/错误日志、PHP-FPM 日志、MySQL 错误日志;部署监控告警(如 Netdata/Prometheus+Grafana),关注异常流量、5xx 激增、暴力登录与慢查询。
- 备份与恢复:制定定期备份(全量+增量)与离线/异地存储策略,定期恢复演练验证可用性;关键配置与证书单独备份并版本化管理。
- 纵深防护:在边界或云侧启用 WAF(如 Cloudflare),必要时部署 IDS/IPS(如 Snort/Suricata);对管理口与敏感接口实施多因素认证与源 IP 白名单。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LNMP如何进行安全加固
本文地址: https://pptw.com/jishu/777221.html
