centos lnmp如何实现安全防护
以下是CentOS上部署LNMP实现安全防护的关键措施:
系统基础安全
-
系统更新与权限管理
- 定期执行
yum update
修复系统漏洞。 - 禁用
root
远程登录,创建专用服务用户(如webuser
),并限制其权限。 - 使用
chattr +i
锁定关键配置文件,防止篡改。
- 定期执行
-
防火墙配置
- 启用
firewalld
或iptables
,仅开放必要端口(HTTP 80、HTTPS 443、SSH 22等),禁止数据库端口(3306)外部访问。 - 示例
firewalld
规则:firewall-cmd --permanent --add-service=http --add-service=https firewall-cmd --reload
- 启用
-
服务最小权限原则
- Nginx、MySQL、PHP-FPM 均以非
root
用户运行,配置文件中指定用户组(如user = webuser
)。
- Nginx、MySQL、PHP-FPM 均以非
组件安全加固
Nginx 安全配置
- 隐藏版本号:
server_tokens off;
。 - 禁用危险 HTTP 方法:
if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; }
。 - 启用安全头:
add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self';";
MySQL 安全配置
- 使用强密码,禁止远程
root
登录,限制用户权限至最小必要范围。 - 配置
my.cnf
:[mysqld] skip-name-resolve # 禁用DNS解析 sql_mode=STRICT_TRANS_TABLES # 严格模式
PHP 安全配置
- 禁用高危函数:
disable_functions = exec,passthru,shell_exec
。 - 启用
open_basedir
限制文件访问路径,防止跨目录攻击。 - 使用预处理语句(PDO/MySQLi)防止SQL注入,避免直接拼接用户输入。
数据与访问控制
-
文件与目录权限
- Web 根目录权限设为
755
,敏感文件(如配置文件)设为640
,确保仅服务用户可读。 - 上传文件存储于独立目录,禁止执行权限(
chmod 600
),并使用随机文件名。
- Web 根目录权限设为
-
数据备份与加密
- 定期备份数据库(如
mysqldump
)和网站文件,存储至异地。 - 启用 HTTPS(Let’s Encrypt 免费证书),加密传输数据。
- 定期备份数据库(如
安全监控与审计
- 部署日志分析工具(如
ELK Stack
)监控异常访问,重点关注404
、500
错误及异常登录尝试。 - 使用
fail2ban
防止暴力破解,限制单个IP的失败登录次数。 - 定期进行安全审计,通过工具(如
Lynis
)扫描系统漏洞。
高级防护(可选)
- 部署 Web 应用防火墙(WAF)如
ModSecurity
,拦截SQL注入、XSS等攻击。 - 启用 SELinux 限制进程权限,仅允许必要操作。
参考来源:[1,2,3,6,7,8,9,10,11,13,14]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!