Ubuntu LAMP如何进行安全防护
导读:Ubuntu LAMP 安全防护实操清单 一 系统与基础防护 保持系统与软件为最新,启用自动安全更新,减少已知漏洞暴露窗口: 执行:sudo apt update && sudo apt upgrade -y 配置自动安...
Ubuntu LAMP 安全防护实操清单
一 系统与基础防护
- 保持系统与软件为最新,启用自动安全更新,减少已知漏洞暴露窗口:
- 执行:
sudo apt update & & sudo apt upgrade -y - 配置自动安全更新:
sudo apt install unattended-upgrades & & sudo dpkg-reconfigure -plow unattended-upgrades
- 执行:
- 最小化攻击面:卸载无用软件包、关闭未使用服务(如 rsh/telnet/ftp 等),仅保留必要服务。
- 强化 SSH 访问:禁用 root 登录与口令登录,仅使用密钥认证,并限制可登录用户:
- 配置
/etc/ssh/sshd_config:PermitRootLogin no、PasswordAuthentication no、AllowUsers your_username - 重启 SSH:
sudo systemctl restart ssh
- 配置
- 配置防火墙 UFW,仅放行必要流量(HTTP/HTTPS/SSH):
- 执行:
sudo ufw allow 'Apache Full'(或分别放行 80/tcp 与 443/tcp)、sudo ufw enable
- 执行:
- 部署入侵防护:启用 Fail2Ban 监控暴力破解(如 SSH),缩短被爆破窗口。
二 Apache 安全加固
- 隐藏版本与标识,降低信息泄露面:
- 在
/etc/apache2/conf-available/security.conf中设置:ServerTokens Prod、ServerSignature Off、TraceEnable Off
- 在
- 禁用目录列表,防止未索引目录暴露文件清单:
- 在虚拟主机或目录配置中加入:
Options -Indexes
- 在虚拟主机或目录配置中加入:
- 限制请求方法,仅允许业务所需方法(如 GET/POST),在需要的虚拟主机中:
- 示例:
< LimitExcept GET POST> Deny from all < /LimitExcept>
- 示例:
- 关闭或限制 .ht* 文件解析,避免被利用上传 .htaccess 提权:
- 在相应目录:
AllowOverride None
- 在相应目录:
- 启用 WAF:部署 ModSecurity(Apache 模块),加载核心规则集,拦截常见 Web 攻击:
- 执行:
sudo apt install libapache2-mod-security2 & & sudo a2enmod security2
- 执行:
- 可选性能与安全优化:启用压缩与缓存、清理无用响应头(如 X-Powered-By)。
三 MySQL MariaDB 安全加固
- 运行安全初始化向导,设置 root 强密码、移除匿名账户、禁止远程 root 登录、删除测试库:
- 执行:
sudo mysql_secure_installation
- 执行:
- 绑定仅本地监听,避免数据库直接暴露公网(如无远程 DB 需求):
- 在
/etc/mysql/mysql.conf.d/mysqld.cnf中设置:bind-address = 127.0.0.1
- 在
- 禁用危险功能:关闭本地文件导入(防止读取系统敏感文件):
- 在
[mysqld]中加入:local-infile=0
- 在
- 最小权限原则:为应用创建专用数据库与账户,仅授予必要权限:
- 示例:
CREATE USER 'webapp'@'localhost' IDENTIFIED BY 'StrongPassword!'; GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'webapp'@'localhost'; FLUSH PRIVILEGES;
- 示例:
- 开启错误日志与慢查询日志,便于审计与性能优化:
- 在
[mysqld]中:log_error = /var/log/mysql/error.log、slow_query_log = 1、long_query_time = 2
- 在
四 PHP 安全配置
- 关闭错误回显,开启错误日志,避免敏感信息输出到前端:
- 在
/etc/php/*/apache2/php.ini:display_errors = Off、log_errors = On、error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
- 在
- 隐藏 PHP 版本信息,减少针对性攻击:
- 设置:
expose_php = Off
- 设置:
- 限制远程文件包含与执行,降低远程代码执行风险:
- 设置:
allow_url_fopen = Off、allow_url_include = Off
- 设置:
- 禁用危险函数(依据业务取舍):
- 设置:
disable_functions = exec,shell_exec,passthru,system,popen,proc_open,pcntl_exec,show_source
- 设置:
- 文件系统访问限制(按站点目录隔离):
- 设置:
open_basedir = /var/www/your_app:/tmp
- 设置:
- 精简未使用模块,减少攻击面与资源占用。
五 传输加密与备份监控
- 部署 HTTPS/TLS:启用 Apache SSL 模块,配置站点证书与链文件,强制 HTTP 跳转 HTTPS
- 启用模块:
sudo a2enmod ssl、sudo a2enmod rewrite - 在站点配置中设置:
SSLEngine on、SSLCertificateFile /path/cert.crt、SSLCertificateKeyFile /path/key.key、SSLCertificateChainFile /path/chain.crt - HTTP→HTTPS 跳转(在端口 80 的 VirtualHost 中):
RewriteEngine On、RewriteCond %{ HTTPS} !=on、RewriteRule ^(.*)$ https://%{ HTTP_HOST} $1 [L,R=301]
- 启用模块:
- 证书与链路:将证书文件(公钥、私钥、链)妥善存放(如 /etc/ssl/),权限最小化,定期轮换
- 备份与恢复:定期备份网站文件与数据库(如 mysqldump、rsync/tar),保留离线/异地副本,定期演练恢复流程
- 日志与监控:集中收集与审计 Web/DB 日志,结合 Fail2Ban、监控告警与基线巡检,形成闭环处置流程
- 安全提示:任何变更先在测试环境验证,变更窗口内保留回滚方案,生产环境优先使用自动化与最小化权限策略
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LAMP如何进行安全防护
本文地址: https://pptw.com/jishu/772512.html
