Linux如何保障LAMP安全
导读:1. 系统基础安全强化 及时更新系统与软件包:定期执行sudo apt update && sudo apt upgrade -y(Ubuntu/Debian)或sudo yum update -y(CentOS/RHEL...
1. 系统基础安全强化
- 及时更新系统与软件包:定期执行
sudo apt update & & sudo apt upgrade -y
(Ubuntu/Debian)或sudo yum update -y
(CentOS/RHEL),修复操作系统及LAMP组件的已知漏洞,这是安全防护的基础。 - 禁用root直接登录:修改SSH配置文件(
/etc/ssh/sshd_config
),设置PermitRootLogin no
,禁止root账户通过SSH直接登录;创建普通用户并通过usermod -aG sudo username
赋予sudo权限,日常操作使用普通用户登录后再切换至root。 - 配置防火墙:使用
ufw
(Ubuntu)或firewalld
(CentOS)限制访问,仅开放必要端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口)。例如,Ubuntu下执行sudo ufw allow 22/tcp & & sudo ufw allow 443/tcp & & sudo ufw enable
,CentOS下执行sudo firewall-cmd --permanent --add-service=ssh --add-service=https & & sudo firewall-cmd --reload
。
2. SSH安全加固
- 启用密钥认证:生成SSH密钥对(
ssh-keygen -t rsa -b 4096
),将公钥(id_rsa.pub
)复制到服务器的~/.ssh/authorized_keys
文件中;修改SSH配置文件(/etc/ssh/sshd_config
),设置PasswordAuthentication no
,禁用密码登录,仅允许密钥认证,防止暴力破解。 - 更改SSH默认端口:修改
/etc/ssh/sshd_config
中的Port
参数(如改为2222),减少自动化扫描工具的探测概率;修改后重启SSH服务(sudo systemctl restart sshd
)。
3. Apache Web服务器安全配置
- 禁用不必要模块:注释Apache配置文件(
/etc/apache2/apache2.conf
或/etc/httpd/httpd.conf
)中不必要的模块(如mod_php
、mod_autoindex
),减少攻击面;仅启用必需模块(如rewrite
、headers
)。 - 设置专用网站目录与权限:将网站文件存放在专用目录(如
/var/www/html/mysite
),避免与系统文件混放;设置目录所有者为普通用户(如www-data
),组为www-data
,权限为750
(目录)和640
(文件),防止未授权访问。 - 隐藏敏感信息:修改Apache配置文件,设置
ServerTokens Prod
(隐藏服务器版本信息)、ServerSignature Off
(关闭错误页面的服务器信息),避免泄露系统细节给攻击者。
4. MySQL数据库安全配置
- 修改root密码与删除默认账户:运行
sudo mysql_secure_installation
脚本,设置root账户强密码(包含大小写字母、数字、特殊字符,长度≥10位);删除匿名用户(DELETE FROM mysql.user WHERE User='';
)和远程root登录(DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
),降低数据库被非法访问的风险。 - 限制数据库用户权限:为Web应用创建专用数据库用户(如
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'strongpassword';
),仅授予必要权限(如GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'webuser'@'localhost';
),避免使用root账户连接数据库。 - 启用SSL连接:为MySQL配置SSL证书(生成自签名证书或使用CA证书),修改
my.cnf
文件([mysqld]
部分)添加ssl-ca=/path/to/ca.pem
、ssl-cert=/path/to/server-cert.pem
、ssl-key=/path/to/server-key.pem
,强制数据库连接使用SSL加密,防止数据传输被窃取。
5. PHP安全设置
- 禁用危险函数与调整配置:修改
php.ini
文件,禁用危险函数(如eval
、exec
、system
、passthru
),设置disable_functions = eval,exec,system,passthru
;关闭错误信息泄露(display_errors = Off
),开启日志记录(log_errors = On
),将错误日志存储在非Web可访问目录(如/var/log/php_errors.log
),防止敏感信息(如数据库密码)暴露给攻击者。 - 限制PHP脚本访问范围:设置
open_basedir
参数(如open_basedir = /var/www/html/:/tmp/
),限制PHP脚本只能访问指定目录,防止脚本遍历系统文件;禁用不必要的PHP模块(如php_curl.dll
、php_gd.dll
),减少潜在攻击入口。
6. 访问控制与身份验证
- 最小权限原则:为Web应用用户分配最小必要权限(如数据库用户仅能访问特定表,Apache用户仅能读取网站文件),避免过度授权导致权限滥用。
- 使用Web应用防火墙(WAF):部署ModSecurity等WAF,检测并拦截SQL注入、XSS跨站脚本、CSRF跨站请求伪造等常见Web攻击,增强Web应用的安全防护能力。
7. 监控、审计与备份
- 部署监控与入侵检测工具:使用
fail2ban
监控系统日志(如/var/log/auth.log
、/var/log/apache2/error.log
),自动封禁多次尝试登录失败的IP地址(如sudo fail2ban-client set sshd banip 192.168.1.100
);使用auditd
记录系统调用和文件访问,及时发现异常行为(如未经授权的文件修改)。 - 定期备份数据:使用
rsync
、duplicity
或Bacula
等工具定期备份系统配置文件(/etc/
)、网站文件(/var/www/html/
)和数据库(mysqldump -u root -p mydb > mydb_backup.sql
),将备份存储在异地(如云存储)或离线介质(如移动硬盘),确保数据丢失或损坏时能快速恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux如何保障LAMP安全
本文地址: https://pptw.com/jishu/721887.html