在Debian系统上进行PHP安全设置,可以遵循以下步骤和建议:
保持系统和所有软件包都是最新的,以修补已知的安全漏洞。
sudo apt update && sudo apt upgrade -y
屏蔽PHP错误输出:
在 /etc/php.ini
文件中将 display_errors
设置为 Off
,并将错误日志写入日志文件。
display_errors Off
error_reporting E_ALL
error_log /var/log/php_errors.log
屏蔽PHP版本信息:
将 expose_php
设置为 Off
,防止在返回头中显示PHP版本信息。
expose_php Off
关闭全局变量:
将 register_globals
设置为 Off
,以减少脚本注入的风险。
register_globals Off
限制文件系统访问:
使用 open_basedir
限制PHP可以访问的系统目录。
open_basedir /var/www:/tmp
禁止远程资源访问:
将 allow_url_fopen
和 allow_url_include
设置为 Off
,以防止通过URL访问本地资源。
allow_url_fopen Off
allow_url_include Off
安装Suhosin扩展:
Suhosin是一个PHP程序的保护系统,可以抵御各种攻击。
wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz
tar zxvf suhosin-0.9.37.1.tar.gz
cd suhosin-0.9.37.1
phpize
./configure --with-php-config=/usr/local/bin/php-config
make
make install
然后在 php.ini
文件中加入:
extension suhosin.so
确保Nginx配置文件(如 /etc/nginx/sites-available/default
)正确设置,以支持PHP处理。
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
如果你使用Apache,确保在配置文件中启用必要的模块和设置。
sudo cp /etc/php/8.2/fpm/pool.d/www.conf{,_bak}
sudo sed -i 's/listen .*/listen 0.0.0.0:9000/' /etc/php/8.2/fpm/pool.d/www.conf
sudo systemctl restart php8.2-fpm
使用 iptables
或 ufw
配置防火墙,仅允许必要的端口(如HTTP、HTTPS和SSH)连接。
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw reload
sudo
命令提升权限。sudo useradd -m myuser
sudo usermod -aG sudo myuser
配置SSH安全性:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
定期检查系统日志和应用程序日志,使用工具如 Logwatch
或 Fail2ban
监控系统活动。
通过上述步骤,可以显著提高Debian系统上PHP应用的安全性。建议定期审查和更新安全设置,以应对新的安全威胁。