Ubuntu上的PHP-FPM可以通过多种方式来提高安全性。以下是一些关键的步骤和建议:
使用systemd进行进程守护:
在支持systemd的Linux系统上,可以使用systemd进行PHP-FPM进程守护。编辑PHP-FPM systemd配置文件:
sudo vi /etc/systemd/system/php-fpm.service
在该文件中,添加以下内容:
[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
[Install]
WantedBy=multi-user.target
上述配置中,ExecStart
指定了PHP-FPM的启动命令,--nodaemonize
参数表示不使用守护进程模式,--fpm-config
参数指定了PHP-FPM的配置文件路径。
使用Supervisor进行进程守护:
除了systemd,还可以使用Supervisor进行PHP-FPM进程守护。安装Supervisor:
sudo apt-get install supervisor
创建PHP-FPM的Supervisor配置文件:
sudo vi /etc/supervisor/conf.d/php-fpm.conf
在该文件中,添加以下内容:
[program:php-fpm]
command=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
autostart=true
autorestart=true
startretries=3
user=nobody
redirect_stderr=true
上述配置中,command
指定了PHP-FPM的启动命令,--nodaemonize
参数表示不使用守护进程模式,--fpm-config
参数指定了PHP-FPM的配置文件路径。
使用ufw允许必要的端口:
配置防火墙允许SSH和HTTP服务,并定期检查防火墙状态。
sudo ufw allow 'Apache Full'
使用特定的用户和用户组运行PHP-FPM:
为每个站点创建一个以不同用户身份运行的不同池,以提高隔离性。例如:
sudo groupadd site1
sudo useradd -g site1 site1
然后在/etc/php5/fpm/pool.d/site1.conf
中配置:
[site1]
user = site1
group = site1
listen = /var/run/php5-fpm-site1.sock
listen.owner = www-data
listen.group = www-data
php_admin_value[error_log] = /var/log/php5-fpm-site1.log
php_admin_flag[log_errors] = on
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
使用unattended-upgrades包实现系统的自动更新:
定期手动运行:
sudo apt update && sudo apt upgrade
考虑使用SELinux或AppArmor来进一步提高系统的安全性:
限制进程的权限。
定期审计系统安全性:
通过查看系统日志、检查系统更新、防火墙设置、系统服务等来审计系统安全性。
通过上述措施,可以显著提高Ubuntu PHP-FPM的安全性,减少遭受网络攻击的风险。请注意,安全性是一个持续的过程,需要不断地监控和更新。