在Ubuntu系统中对PHP进行安全设置是至关重要的,以下是一些关键的安全配置步骤和建议:
确保系统和软件包保持最新,以修复已知的安全漏洞。
sudo apt update
sudo apt upgrade
禁用不需要的PHP模块或扩展可以减少系统的攻击面。例如,如果不需要使用MySQL数据库,可以禁用 mysqli
和 pdo_mysql
扩展。
php.ini
在 php.ini
文件中进行以下配置:
display_errors = Off
log_errors = On
error_log = /var/log/php_scripts_error.log
expose_php = Off
register_globals = Off
file_uploads = On
upload_max_filesize = 1M
post_max_size = 1M
open_basedir
限制PHP脚本只能访问特定目录。open_basedir = /var/www/html/:/tmp/
exec()
, system()
, passthru()
等。disable_functions = phpinfo, eval, passthru, assert, exec, system, ini_set, ini_get, get_included_files, get_defined_functions, get_defined_constants, get_defined_vars, glob, ```, `chroot`, `scandir`, `chgrp`, `chown`, `shell_exec`, `proc_open`, `proc_get_status`, `ini_alter`, `ini_restore`, `dl`, `pfsockopen`, `openlog`, `syslog`, `readlink`, `symlink`, `popepassthru`, `stream_socket_server`, `fsocket`, `fsockopen`
根据使用的Web服务器(Apache或Nginx),进行相应的配置:
禁用或隐藏版本信息:在 httpd.conf
中配置,避免在错误页面或响应头中显示Apache和PHP的版本信息。
使用 FollowSymLinks
选项谨慎配置目录权限:为每个VirtualHost分别配置PHP设置。
启用安全模块:如 mod_security
和 mod_evasive
来防止攻击。
fastcgi_param
隐藏PHP版本信息:在Nginx配置文件中设置。记录所有PHP脚本的执行情况,包括成功的请求和失败的请求。设置监控系统,及时发现异常行为或潜在的安全威胁。
定期更新PHP和操作系统,以修复已知的安全漏洞。定期审查PHP代码,确保没有引入新的安全问题。
遵循以上步骤和建议,可以显著提高Ubuntu系统中PHP运行环境的安全性,并帮助管理员有效地防范常见的网络攻击和安全威胁。需要注意的是,上述配置参数可能根据实际使用的Linux发行版和PHP版本有所差异,在实施时应根据实际情况进行调整。同时,还需定期关注安全动态,及时更新系统和应用程序,以弥补新出现的安全漏洞。