首页主机资讯LNMP在Ubuntu上的安全防护措施有哪些

LNMP在Ubuntu上的安全防护措施有哪些

时间2025-11-11 02:36:04发布访客分类主机资讯浏览1429
导读:系统层强化 全面更新系统和软件:定期运行sudo apt update && sudo apt upgrade安装最新安全补丁,降低已知漏洞风险;可配置unattended-upgrades实现自动更新,确保系统及软件(如...

系统层强化

  • 全面更新系统和软件:定期运行sudo apt update & & sudo apt upgrade安装最新安全补丁,降低已知漏洞风险;可配置unattended-upgrades实现自动更新,确保系统及软件(如Nginx、MySQL、PHP)始终保持最新状态。
  • 设置严格防火墙策略:使用ufw(Uncomplicated Firewall)配置默认拒绝所有入站连接,仅允许必要端口(如SSH:修改后的非标准端口(如2222)、HTTP:80、HTTPS:443、MySQL:3306);运行sudo ufw enable开启防火墙,sudo ufw reload应用设置。
  • 安装和配置Fail2Ban:通过sudo apt install fail2ban安装,编辑/etc/fail2ban/jail.local启用SSH防护(enabled = trueport = 2222maxretry = 3bantime = 600),自动封禁多次登录失败的IP,防范暴力破解。
  • 禁用root远程登录,使用SSH秘钥:编辑/etc/ssh/sshd_config,设置Port 2222(非标准端口)、PermitRootLogin noPubkeyAuthentication yesPasswordAuthentication no;将本地公钥(~/.ssh/id_rsa.pub)复制到服务器~/.ssh/authorized_keys,重启SSH服务(sudo systemctl restart sshd)提升远程登录安全性。

Nginx强化

  • 隐藏版本号:编辑Nginx配置文件(/etc/nginx/nginx.conf/etc/nginx/sites-available/default),添加server_tokens off; ,避免响应头中暴露Nginx版本信息,减少针对性攻击。
  • 强制HTTPS并强化SSL设置:通过Let’s Encrypt获取免费SSL证书(sudo apt install certbot python3-certbot-nginx),配置Nginx重定向HTTP到HTTPS(return 301 https://$host$request_uri; );在SSL配置中启用强加密套件(如ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; )、设置合理的会话缓存(ssl_session_cache shared:SSL:10m; )和会话超时(ssl_session_timeout 1h; ),提升传输安全。
  • 添加安全头部:在Nginx配置的server块中添加安全头部,如add_header X-Content-Type-Options "nosniff"; (防止MIME类型嗅探)、X-Frame-Options "SAMEORIGIN"(防范点击劫持)、X-XSS-Protection "1; mode=block"(启用XSS防护)、Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"(强制HTTPS),增强客户端安全。
  • 限制请求大小和连接速度:在Nginx的http块中添加limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; (定义请求速率限制),在serverlocation块中使用limit_req zone=mylimit burst=5 nodelay; 限制突发请求(如5个请求),防止DoS/DDoS攻击;同时设置client_max_body_size 2M; (限制上传文件大小,避免大文件消耗资源)。
  • 设置连接制约:在Nginx的events块中调整worker_connections 1024; (每个worker进程的最大连接数),限制并发连接数,防止资源耗尽。

MySQL/MariaDB强化

  • 安全初始化:安装MySQL后运行sudo mysql_secure_installation,按照提示设置root密码(强密码,包含大小写字母、数字和特殊字符)、删除匿名用户(DELETE FROM mysql.user WHERE User=''; )、禁止远程root登录(REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%'; )、删除测试数据库(DROP DATABASE IF EXISTS test; ),提升数据库初始安全性。
  • 权限最小化设计:为网站用户分配仅必要的权限(如GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'appuser'@'localhost'; ),避免使用root账户连接数据库;限制远程访问(bind-address = 127.0.0.1,仅在/etc/mysql/mysql.conf.d/mysqld.cnf中允许本地连接),减少远程攻击面。
  • 启用安全日志:编辑MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf),添加log_error = /var/log/mysql/error.log(记录错误日志)、general_log = 1(开启通用查询日志,可选,生产环境谨慎使用)、slow_query_log = 1(开启慢查询日志,long_query_time = 2,记录执行时间超过2秒的查询),便于排查异常行为。

PHP强化

  • 修改php.ini关键参数:编辑PHP配置文件(/etc/php/7.x/fpm/php.ini,版本根据实际调整),设置expose_php = Off(隐藏PHP版本信息)、display_errors = Off(禁止显示错误信息,避免泄露敏感路径或代码)、log_errors = On(开启错误日志,error_log = /var/log/php_errors.log)、memory_limit = 128M(限制内存使用,防止内存耗尽)、max_execution_time = 30(限制脚本执行时间,避免长时间占用资源)、file_uploads = On(允许文件上传,但需配合其他限制)、upload_max_filesize = 2M(限制上传文件大小)、post_max_size = 8M(限制POST数据大小)。
  • 使用Open_basedir限制PHP读写目录:在Nginx的PHP-FPM配置(/etc/php/7.x/fpm/pool.d/www.conf)或php.ini中添加open_basedir = /var/www/html:/tmp/,限制PHP脚本只能访问指定目录(如网站根目录/var/www/html和临时目录/tmp),防止越权访问系统文件。
  • 重要目录权限限制:设置网站根目录权限为755chmod -R 755 /var/www/html),所有者为www-datachown -R www-data:www-data /var/www/html),避免其他用户修改网站文件;上传目录(如/var/www/html/uploads)设置为755,禁用PHP执行(在Nginx配置中添加location ~* ^/uploads/.*\.(php|php5)$ { deny all; } ),防止上传恶意脚本。

其他强化建议

  • 定期备份数据:使用rsynctar或工具(如DuplicityRestic)定期备份网站文件(/var/www/html)和数据库(mysqldump -u appuser -p appdb > appdb_backup.sql),存储到异地(如云存储、另一台服务器),确保数据丢失后可快速恢复。
  • 安装监控工具:部署Netdata(实时系统监控,sudo apt install netdata)、Prometheus+Grafana(可视化监控,用于监控服务器性能、Nginx请求量、MySQL连接数等),及时发现异常(如CPU占用过高、内存泄漏、异常请求)。
  • 启用WAF(Web应用防火墙):使用Cloudflare(免费版提供基础WAF,支持SQL注入、XSS、CC攻击防护)、ModSecurity(开源WAF,sudo apt install libapache2-mod-security2,需配合Nginx配置)过滤恶意请求,提升Web应用安全性。
  • 部署IDS/IPS:安装Snort(轻量级IDS,sudo apt install snort)或Suricata(高性能IPS,sudo apt install suricata),监控网络流量,识别并阻止入侵行为(如端口扫描、恶意代码注入)。

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


若转载请注明出处: LNMP在Ubuntu上的安全防护措施有哪些
本文地址: https://pptw.com/jishu/746979.html
如何用Linux优化php-fpm响应时间 Ubuntu hostname可以设置为IP地址吗

游客 回复需填写必要信息