PHP在Debian中的安全设置
sudo apt update && sudo apt upgrade -y,修补系统漏洞与PHP已知安全问题,避免黑客利用旧版本缺陷攻击。/etc/ssh/sshd_config中PermitRootLogin no)、启用SSH密钥认证(替换PasswordAuthentication yes为no)、更改默认SSH端口(如改为2222),降低SSH暴力破解风险。/etc/php/{version}/fpm/php.ini(PHP-FPM)或/etc/php/{version}/apache2/php.ini(Apache)中设置display_errors = Off,并开启日志记录(log_errors = On、error_log = /var/log/php_errors.log),避免敏感信息(如数据库凭证、服务器路径)泄露给攻击者。expose_php = Off,防止HTTP响应头中暴露PHP版本(如X-Powered-By: PHP/8.2.0),减少针对性攻击的可能。register_globals = Off,避免表单提交的数据自动成为全局变量(如$_GET['name']可直接通过$name访问),降低脚本注入风险。open_basedir约束PHP可访问的目录(如open_basedir = /var/www/html:/tmp),防止非法访问系统敏感文件(如/etc/passwd、/etc/shadow)。注意:多个目录用冒号分隔,且需包含网站根目录。allow_url_fopen = Off、allow_url_include = Off,阻止通过URL加载外部文件(如include('http://malicious-site.com/script.php'))或包含远程资源,防范远程代码执行漏洞。wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz)、解压编译(tar zxvf suhosin-*.tar.gz && cd suhosin-* && phpize && ./configure --with-php-config=/usr/bin/php-config && make && make install),最后在php.ini中添加extension=suhosin.so并重启PHP服务。/etc/nginx/sites-available/default中添加PHP处理块:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php{version}-fpm.sock; # 替换为实际PHP版本
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
重启Nginx(sudo systemctl restart nginx)使配置生效。sudo a2enmod rewrite actions cgi alias),配置PHP-FPM监听(修改/etc/php/{version}/fpm/pool.d/www.conf中listen = /run/php/php{version}-fpm.sock),并重启Apache(sudo systemctl restart apache2)。sudo ufw enable),仅允许HTTP(80/tcp)、HTTPS(443/tcp)、SSH(22/tcp)等必要端口,拒绝其他非法访问:sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw reload
可通过sudo ufw status查看规则状态。/var/log/php_errors.log)、Nginx/Apache访问日志(/var/log/nginx/access.log、/var/log/apache2/access.log),识别异常请求(如大量404错误、可疑POST请求)。sudo apt install fail2ban安装,配置jail.local文件监控PHP相关日志(如/var/log/php_errors.log),自动封禁频繁攻击的IP地址(如5分钟内尝试登录失败10次),降低暴力破解风险。