centos

CentOS上PHP安全设置怎么做

小樊
55
2025-10-17 11:02:54
栏目: 编程语言

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),调整以下参数:

修改后重启PHP-FPM:

sudo systemctl restart php-fpm

3. 配置PHP.ini核心安全参数

编辑主配置文件/etc/php.ini,重点设置以下安全选项:

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. 定期维护与监控

通过以上步骤,可显著提升CentOS上PHP应用的安全性,防范常见攻击(如SQL注入、XSS、文件上传漏洞等)。需根据实际业务场景调整参数(如上传文件大小、会话有效期),并在测试环境验证配置有效性。

0
看了该问题的人还看了