CentOS系统PHP安全设置指南
sudo yum update更新CentOS系统和PHP至最新版本,修复已知安全漏洞。php-mcrypt(若版本支持)、php-gd、php-mbstring、php-bcmath),增强PHP功能与安全性。firewalld仅开放HTTP(80端口)、HTTPS(443端口),阻止非法IP访问:sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
mod_ssl模块,配置SSL证书(如Let’s Encrypt),强制网站使用HTTPS传输数据,防止流量被窃听。php.ini中添加disable_functions指令,禁用可能被滥用的函数(如eval、exec、shell_exec、system、curl_exec、popen等),防止命令注入攻击。display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
upload_max_filesize = 2M、post_max_size = 8M),防止大文件上传导致拒绝服务(DoS)攻击;建议添加文件类型验证(如仅允许图片、文档格式)。session.cookie_secure = On # 仅通过HTTPS传输Cookie
session.cookie_httponly = On # 禁止JavaScript访问Cookie
session.cookie_samesite = Strict # 限制跨站请求携带Cookie
session.gc_maxlifetime = 1440 # 会话有效期(分钟)
allow_url_fopen(防止通过URL访问远程文件)、allow_url_include(防止远程文件包含漏洞);根据需求设置open_basedir(限制PHP脚本可访问的目录,如open_basedir = /var/www/html:/tmp)。/etc/php-fpm.d/www.conf,将PHP-FPM进程运行用户/组设置为非root(如apache或nginx),降低权限滥用风险:user = apache
group = apache
listen = /run/php-fpm/www.sock),减少网络暴露风险;若必须使用TCP,需绑定127.0.0.1并设置防火墙规则。sudo yum install mod_security
sudo systemctl enable mod_security
sudo systemctl start mod_security
php-policies扩展,通过策略文件限制PHP函数调用、文件访问等行为,进一步提升安全性。$stmt->prepare("SELECT * FROM users WHERE id = ?"))。SELECT、INSERT),避免使用root用户连接数据库。Enforcing模式(sudo setenforce 1),并通过semanage命令配置PHP相关策略(如允许Apache访问/var/www/html目录),增强系统级安全。sudo chmod -R 755 /var/www/html、sudo chown -R apache:apache /var/www/html),防止未授权访问。/var/www/html)与数据库(如使用mysqldump),避免数据丢失或泄露。Fail2Ban监控登录尝试(如SSH、FTP),自动封禁恶意IP;定期检查/var/log/php_errors.log、Web服务器日志,发现异常行为及时处理。