首页主机资讯LNMP服务器安全设置

LNMP服务器安全设置

时间2025-10-14 01:52:03发布访客分类主机资讯浏览385
导读:LNMP服务器安全设置指南 LNMP(Linux+Nginx+MySQL+PHP)架构是当前主流的Web服务组合,其安全性需从系统底层到应用层分层防护。以下是具体安全设置措施: 一、Linux系统安全加固 用户与权限管理:禁用root用户...

LNMP服务器安全设置指南
LNMP(Linux+Nginx+MySQL+PHP)架构是当前主流的Web服务组合,其安全性需从系统底层到应用层分层防护。以下是具体安全设置措施:

一、Linux系统安全加固

  • 用户与权限管理:禁用root用户直接SSH登录,创建普通用户并赋予sudo权限;定期清理冗余账户,确保每个账户仅具备完成工作所需的最小权限。
  • 密码策略:强制使用强密码(包含大小写字母、数字、特殊字符,长度≥8位),设置密码有效期(如90天),禁止空密码登录。
  • 端口与服务控制:关闭不必要的系统服务(如Telnet、FTP),仅开放必需端口(SSH:22、HTTP:80、HTTPS:443);使用systemctl disable禁用未使用的服务。
  • 内核参数优化:修改/etc/sysctl.conf增强系统抗攻击能力,例如启用地址空间布局随机化(kernel.randomize_va_space=2)、限制SYN洪水攻击(net.ipv4.tcp_syncookies=1),执行sysctl -p使配置生效。

二、Nginx Web服务器安全配置

  • 隐藏敏感信息:在nginx.conf中设置server_tokens off; 关闭版本号显示;使用more_clear_headers Server; 移除响应头中的“Server”标识,避免攻击者通过版本信息针对性攻击。
  • 访问控制:通过allow/deny指令限制敏感目录(如/admin)的IP访问;禁用自动目录列表(autoindex off; )防止文件泄露;限制HTTP方法(仅允许GET、POST、HEAD),拒绝TRACE、DELETE等危险方法(limit_except GET POST { deny all; } )。
  • SSL/TLS加密:使用Let’s Encrypt获取免费SSL证书,配置强制HTTPS跳转(return 301 https://$host$request_uri; );启用HSTS头部(add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; );配置强加密套件(ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; )。
  • 请求防护:使用limit_req_zone限制单IP请求速率(如limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s; ),防止DDoS攻击;通过client_max_body_size 2M; 限制上传文件大小,避免大文件消耗服务器资源。

三、MySQL数据库安全加固

  • 用户权限管理:遵循“最小权限原则”,仅为用户分配完成任务所需的权限(如SELECTINSERT),禁止授予ALL PRIVILEGESFILESUPER等高危权限;使用GRANT语句精确授权(如GRANT SELECT, INSERT ON appdb.* TO 'appuser'@'localhost'; )。
  • 访问控制:通过防火墙(如ufw)限制MySQL端口(3306)的访问,仅允许信任IP(如应用服务器IP)连接;修改默认端口(如3307)增加攻击难度。
  • 数据安全:设置强密码(使用mysql_secure_installation工具初始化密码);删除匿名用户(DROP USER ''@'localhost'; )和测试数据库(DROP DATABASE IF EXISTS test; );启用SSL加密连接(REQUIRE SSL)保护数据传输。
  • 日志与审计:开启通用日志(general_log = ON)记录所有查询,或使用MySQL Enterprise Audit插件进行细粒度审计,便于事后追溯异常行为。

四、PHP应用安全防护

  • 安全配置:在php.ini中禁用危险函数(如execsystemevaldisable_functions = exec,system,eval);设置open_basedir限制PHP访问目录(如open_basedir = /var/www/html:/tmp/),防止非法文件访问;关闭错误显示(display_errors = Off),将错误日志记录到指定文件(error_log = /var/log/php_errors.log),避免泄露敏感信息。
  • 输入验证与过滤:使用filter_var()函数验证用户输入(如电子邮件:filter_var($email, FILTER_VALIDATE_EMAIL)),过滤特殊字符(如htmlspecialchars()转义输出,防止XSS攻击)。
  • 防SQL注入:使用PDO或MySQLi的预处理语句(prepare+bind_param),将SQL结构与数据分离(如$stmt = $pdo-> prepare('SELECT * FROM users WHERE username = :username'); $stmt-> bindParam(':username', $username); ),彻底杜绝SQL注入。
  • 防CSRF攻击:为每个表单生成唯一CSRF令牌(session_start(); $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); ),提交时验证令牌(if ($_SESSION['csrf_token'] !== $_POST['csrf_token']) die('Invalid token'); )。
  • 文件上传安全:验证上传文件类型(如仅允许图片:in_array($_FILES['file']['type'], ['image/jpeg', 'image/png']))、大小(如≤2MB);将文件存储在非Web可访问目录(如/var/uploads/),避免直接通过URL访问。

五、持续维护与监控

  • 软件更新:定期检查并更新Linux内核、Nginx、MySQL、PHP至最新稳定版本,及时修补已知漏洞;使用apt update & & apt upgrade(Ubuntu)或yum update(CentOS)进行更新。
  • 日志审计:每日检查Nginx(access.logerror.log)、MySQL(error.log)、PHP(php_errors.log)日志,使用grepawk等工具分析异常请求(如大量404错误、SQL错误)。
  • 备份策略:定期备份网站数据(如/var/www/html)和数据库(使用mysqldump),将备份文件加密(如gpg -c backup.sql)并存储到异地(如云存储),测试恢复流程确保有效性。
  • 安全扫描:使用漏洞扫描工具(如OpenVAS、Nessus)定期扫描服务器,检测未修复的漏洞;使用Fail2Ban防止SSH暴力破解(配置/etc/fail2ban/jail.local限制失败次数)。

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


若转载请注明出处: LNMP服务器安全设置
本文地址: https://pptw.com/jishu/725405.html
LNMP与Java应用集成方案 LNMP下MySQL优化技巧

游客 回复需填写必要信息