CentOS环境下PHP安全配置的核心要点
sudo yum update
命令,更新CentOS系统内核、PHP及所有关联软件包,及时修复已知安全漏洞,避免攻击者利用旧版本漏洞入侵。firewalld
工具限制服务器网络访问,仅开放必要端口(如HTTP的80端口、HTTPS的443端口),禁止未授权IP访问PHP服务。例如:sudo firewall-cmd --permanent --zone=public --add-service=http && sudo firewall-cmd --permanent --zone=public --add-service=https && sudo firewall-cmd --reload
。/etc/ssh/sshd_config
中的PermitRootLogin no
),强制使用强密码策略,降低SSH暴力破解风险。php.ini
中通过disable_functions
指令禁用高危函数,防止攻击者通过这些函数执行系统命令、读取敏感文件。常见需禁用的函数包括:eval
、exec
、shell_exec
、passthru
、system
、popen
、curl_exec
、proc_open
等。display_errors = Off
),避免泄露数据库结构、路径等敏感信息;开启错误日志记录(log_errors = On
),并将日志存储在非Web可访问目录(如/var/log/php_errors.log
),便于后续排查问题。upload_max_filesize = 2M
、post_max_size = 8M
)和数量(max_file_uploads = 5
),防止攻击者通过大文件上传消耗服务器资源或上传恶意脚本;同时,建议将上传目录设置为不可执行脚本(如chmod 755 /var/www/html/uploads
)。session.cookie_httponly = On
(防止JavaScript访问会话Cookie,降低XSS攻击风险)、session.cookie_secure = On
(仅通过HTTPS传输会话Cookie,防止中间人攻击)、session.cookie_samesite = Strict
(限制会话Cookie仅在同站点请求中发送,防止CSRF攻击)、session.use_strict_mode = On
(防止会话固定攻击)。allow_url_fopen
和allow_url_include
(防止远程文件包含攻击)、设置memory_limit
(如128M,限制脚本内存使用,防止内存耗尽攻击)、expose_php = Off
(隐藏PHP版本信息,减少针对性攻击)。/etc/php-fpm.d/www.conf
文件,将user
和group
设置为非root用户(如apache
或nginx
),避免PHP进程以root权限运行,降低权限提升风险。listen.owner
和listen.group
为非root用户,且listen.mode = 0660
,限制socket文件的访问权限。security.limit_extensions
指令限制PHP-FPM仅处理指定扩展的文件(如.php
、.php3
、.phtml
),防止攻击者上传其他扩展名的恶意脚本。/etc/httpd/conf/httpd.conf
)中,限制目录访问权限(Options -Indexes +FollowSymLinks
,禁止目录遍历)、禁用目录索引(防止敏感文件泄露)、允许.htaccess
覆盖(AllowOverride All
,用于自定义安全规则)。/etc/nginx/nginx.conf
)中,正确配置PHP处理块(location ~ \.php$
),使用fastcgi_pass
指向PHP-FPM的socket文件,设置fastcgi_param SCRIPT_FILENAME
为$document_root$fastcgi_script_name
(确保脚本路径正确),并限制仅允许GET、POST等必要HTTP方法。certbot
工具申请免费的Let’s Encrypt SSL证书,配置Apache或Nginx启用HTTPS,加密客户端与服务器之间的数据传输,防止数据被窃取或篡改。例如:sudo yum install certbot python2-certbot-nginx && sudo certbot --nginx -d yourdomain.com
。mod_security
模块(适用于Apache)或Nginx的WAF模块,过滤恶意请求(如SQL注入、XSS攻击),增强PHP应用的安全性。例如:sudo yum install mod_security && sudo systemctl enable mod_security && sudo systemctl start mod_security
。php.ini
中开启OPcache(opcache.enable = 1
),缓存编译后的PHP脚本,提高性能的同时,防止攻击者通过修改脚本文件执行恶意代码。php.ini
、www.conf
),使用rsync
或tar
工具存储至异地;设置监控工具(如fail2ban
)检测异常访问(如频繁的登录失败尝试),自动封禁恶意IP。