CentOS上PHP安全设置怎么做
导读:CentOS上PHP安全设置步骤 1. 更新系统和PHP 确保系统和PHP为最新版本,修复已知安全漏洞: sudo yum update -y sudo yum install epel-release -y sudo yum instal...
CentOS上PHP安全设置步骤
1. 更新系统和PHP
确保系统和PHP为最新版本,修复已知安全漏洞:
sudo yum update -y
sudo yum install epel-release -y
sudo yum install php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-pear php-bcmath -y
2. 配置PHP-FPM(若使用)
编辑PHP-FPM主配置文件(通常为/etc/php-fpm.d/www.conf),调整以下参数:
- 用户/组权限:避免使用
root运行PHP进程,推荐使用apache或nginx用户。user = apache group = apache - 禁用危险函数:禁止执行系统命令、文件操作等高风险函数。
disable_functions = eval,assert,system,shell_exec,passthru,exec,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source - 限制进程数量:防止资源耗尽攻击。
pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 - 请求超时设置:避免长时间运行的脚本占用资源。
request_terminate_timeout = 60s
修改后重启PHP-FPM:
sudo systemctl restart php-fpm
3. 配置PHP.ini核心安全参数
编辑主配置文件/etc/php.ini,重点设置以下安全选项:
- 错误报告:生产环境关闭详细错误显示,防止敏感信息泄露。
display_errors = Off log_errors = On error_log = /var/log/php_errors.log - 文件上传限制:限制上传文件大小,防止大文件攻击或恶意文件上传。
file_uploads = On upload_max_filesize = 10M post_max_size = 10M - 会话安全:增强会话ID的随机性和Cookie保护,防止会话劫持/CSRF。
session.cookie_httponly = On # 禁止JavaScript访问会话Cookie session.cookie_secure = On # 仅通过HTTPS传输Cookie(需开启HTTPS) session.cookie_samesite = Strict # 防止跨站请求伪造(CSRF) session.gc_maxlifetime = 1440 # 会话有效期(分钟) - 密码策略:强制使用强哈希算法(如bcrypt)存储密码。
password_hash_default = bcrypt - 禁用危险特性:关闭远程文件包含、动态代码执行等高风险功能。
allow_url_fopen = Off allow_url_include = Off - 启用OPcache:提升性能的同时减少代码暴露风险。
opcache.enable = 1 opcache.memory_consumption = 128 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 60 opcache.fast_shutdown = 1
4. 配置Web服务器安全
根据使用的Web服务器(Apache/Nginx)调整配置:
Apache
编辑虚拟主机配置文件(如/etc/httpd/conf.d/your_site.conf),限制目录访问:
<
Directory "/var/www/html">
Options -Indexes +FollowSymLinks # 禁止目录列表
AllowOverride All
Require all granted
<
/Directory>
重启Apache:
sudo systemctl restart httpd
Nginx
编辑虚拟主机配置文件(如/etc/nginx/conf.d/your_site.conf),防止恶意文件访问:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
# 禁止访问.htaccess等隐藏文件
}
}
重启Nginx:
sudo systemctl restart nginx
5. 配置防火墙
使用firewalld限制对Web服务的访问,仅允许HTTP(80)和HTTPS(443)端口:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
6. 使用安全模块增强防护
安装并配置ModSecurity(开源Web应用防火墙),防御SQL注入、XSS等常见攻击:
sudo yum install mod_security -y
sudo systemctl enable mod_security
sudo systemctl start mod_security
7. 定期维护与监控
- 备份数据:定期备份网站文件和数据库(如使用
rsync或mysqldump)。 - 监控日志:定期检查
/var/log/php_errors.log和Web服务器日志,发现异常行为。 - 更新策略:订阅PHP安全公告,及时升级到最新稳定版本。
- 文件权限:确保PHP文件权限合理(如
755目录、644文件),避免敏感文件(如config.php)被篡改:sudo chmod -R 755 /var/www/html sudo chown -R apache:apache /var/www/html # 根据实际用户调整
通过以上步骤,可显著提升CentOS上PHP应用的安全性,防范常见攻击(如SQL注入、XSS、文件上传漏洞等)。需根据实际业务场景调整参数(如上传文件大小、会话有效期),并在测试环境验证配置有效性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上PHP安全设置怎么做
本文地址: https://pptw.com/jishu/729406.html
