ubuntu lamp如何保障数据安全
Ubuntu LAMP数据安全保障体系构建指南
一、系统基础安全加固
-
物理与启动安全
配置BIOS/UEFI密码,禁用CD/DVD、外部USB等非必要启动设备;设置GRUB引导密码,防止未经授权的启动项修改,阻断物理接触攻击的入口。 -
系统更新与补丁管理
定期执行sudo apt update & & sudo apt upgrade
更新系统及软件包,修复已知漏洞;安装unattended-upgrades
包,自动安装安全更新,确保系统始终处于最新安全状态。 -
用户与权限管理
- 禁用root账户的远程登录(保留本地root权限),创建普通用户并通过
usermod -aG sudo
赋予sudo权限; - 设置强密码策略:修改
/etc/login.defs
中的PASS_MAX_DAYS
(如90天)、PASS_MIN_LEN
(如12位),强制定期更换密码; - 限制用户对敏感目录(如
/etc/apache2
、/var/lib/mysql
)的访问权限,使用chmod
、chown
命令设置合理权限(如750、640)。
- 禁用root账户的远程登录(保留本地root权限),创建普通用户并通过
二、LAMP组件专项安全配置
1. Apache Web服务器安全
- 禁用目录列表:修改Apache配置文件(
/etc/apache2/apache2.conf
或虚拟主机配置),添加Options -Indexes
,防止暴露目录结构; - 隐藏版本信息:在配置中添加
ServerTokens Prod
、ServerSignature Off
,避免泄露Apache版本及系统信息; - 限制请求大小:通过
LimitRequestBody
指令限制上传文件大小(如10M),防范大文件攻击; - 启用HTTPS:使用Let’s Encrypt免费证书,配置SSL/TLS加密(
sudo a2enmod ssl
、sudo certbot --apache
),确保数据传输安全。
2. MySQL数据库安全
- 强密码与访问控制:运行
sudo mysql_secure_installation
设置root密码,删除匿名账户(DROP USER ''@'localhost';
)和测试数据库(DROP DATABASE test;
); - 限制远程访问:修改
/etc/mysql/mysql.conf.d/mysqld.cnf
,将bind-address
设置为127.0.0.1
(仅本地访问),或通过GRANT
语句仅允许特定IP访问(如GRANT ALL ON db.* TO 'user'@'192.168.1.100';
); - 数据库备份:使用
mysqldump
定期导出数据库(如mysqldump -u root -p dbname > backup.sql
),或使用Percona XtraBackup进行热备份(不影响服务运行)。
3. PHP应用安全
- 禁用危险函数:修改
php.ini
,设置disable_functions = exec,passthru,shell_exec,system
,防止代码执行攻击; - 关闭信息泄露:设置
expose_php = Off
,隐藏PHP版本信息;开启display_errors = Off
(生产环境),避免泄露敏感错误信息; - 限制文件包含:设置
open_basedir
限制PHP脚本可访问的目录(如/var/www/html/
),防止目录遍历攻击; - 限制上传文件:通过
upload_max_filesize
(如2M)、post_max_size
(如8M)限制上传大小,验证文件类型(如仅允许图片格式)。
三、网络安全防护
-
防火墙配置(UFW)
安装UFW(sudo apt install ufw
),设置默认策略sudo ufw default deny incoming
(拒绝所有入站)、sudo ufw default allow outgoing
(允许所有出站);仅开放必要端口:SSH(2222,自定义)、HTTP(80)、HTTPS(443)(sudo ufw allow 2222/tcp
、sudo ufw allow http
、sudo ufw allow https
);启用防火墙(sudo ufw enable
),定期检查状态(sudo ufw status
)。 -
SSH安全加固
- 禁用root登录:修改
/etc/ssh/sshd_config
,设置PermitRootLogin no
; - 使用密钥认证:本地生成密钥对(
ssh-keygen -t rsa -b 4096
),将公钥复制到服务器(ssh-copy-id username@server_ip
); - 更改默认端口:修改
Port 22
为非标准端口(如2222),减少暴力破解尝试; - 限制登录尝试:设置
MaxAuthTries 3
(最多3次尝试)、LoginGraceTime 60
(60秒内完成登录),防止暴力破解。
- 禁用root登录:修改
-
暴力破解防护(Fail2Ban)
安装Fail2Ban(sudo apt install fail2ban
),配置/etc/fail2ban/jail.local
,启用SSH防护([sshd]
部分),设置maxretry = 3
(3次失败后封禁)、bantime = 3600
(封禁1小时);定期检查日志(/var/log/fail2ban.log
),确认防护效果。
四、数据备份与恢复策略
-
备份策略
- 全量备份:每周日进行一次全量备份(包括数据库、网站文件、配置文件),使用
mysqldump
(数据库)、tar
(网站文件)命令; - 增量/差异备份:周一至周六进行增量备份(仅备份当天修改的文件)或差异备份(备份自上次全量备份以来的修改),减少备份时间和存储占用;
- 加密与存储:使用
gpg
加密备份文件(如gpg -c backup.tar.gz
),存储到异地(如云存储、外部硬盘),遵循“3-2-1”原则(3份备份、2种介质、1份异地)。
- 全量备份:每周日进行一次全量备份(包括数据库、网站文件、配置文件),使用
-
恢复测试
定期测试备份文件的可用性:- 数据库恢复:创建新数据库,执行
mysql -u root -p newdb < backup.sql
; - 文件恢复:解压备份文件到原始目录(如
tar -xzvf website_backup.tar.gz -C /var/www/html
); - 验证数据完整性:检查数据库记录、网站文件是否能正常访问。
- 数据库恢复:创建新数据库,执行
五、监控与审计
-
日志监控
收集系统日志(/var/log/syslog
)、Apache日志(/var/log/apache2/access.log
、error.log
)、MySQL日志(/var/log/mysql/error.log
),使用logwatch
工具生成每日报告,分析异常访问(如大量404错误、频繁登录失败)。 -
入侵检测
安装Fail2Ban实时监控SSH、Apache等服务的登录行为,自动封禁恶意IP;使用chkrootkit
、rkhunter
定期扫描系统,检测rootkit、木马等恶意软件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu lamp如何保障数据安全
本文地址: https://pptw.com/jishu/732986.html