在CentOS系統上配置PHP以提高安全性,可以遵循以下步驟:
升級系統和軟件包:
sudo yum update
配置防火墻:
Firewalld
限制對服務器的訪問,僅允許必要的端口(如HTTP的80端口和HTTPS的443端口)。sudo yum install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload
配置PHP安全設置:
php.ini
文件,關閉錯誤顯示,啟用open_basedir
,設置合理的文件上傳大小限制。sudo vi /etc/php.ini
# 設置 display_errors 為 Off
# 設置 open_basedir 為限制訪問的目錄,如 /var/www/html
# 設置 upload_max_filesize 和 post_max_size 的合理值
安裝PHP安全擴展:
php-mcrypt
、php-gd
、php-mbstring
、php-bcmath
等,以增加額外的安全保護。sudo yum install php-mcrypt php-gd php-mbstring php-bcmath
使用HTTPS:
sudo yum install mod_ssl
sudo systemctl restart httpd
# 將SSL證書文件拷貝到 /etc/httpd/conf.d/ssl.conf 文件中
強化用戶和賬戶管理:
userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel news userdel uucp userdel operator userdel games userdel gopher userdel ftp
sudo passwd -dl user1 user2 ...
sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
定期備份數據:
mkdir /backup
rsync -avz --delete /var/www/html/ ./website_backup/
mysqldump -u[數據庫用戶名] -p[數據庫密碼][數據庫名] > website_backup.sql
gzip website_backup.sql
使用安全模式和禁用不必要函數:
php.ini
中啟用安全模式,禁用不安全的PHP函數。safe_mode = On
disable_functions = passthru,exec,shell_exec,system,set_time_limit,ini_alter,dl,pfsockopen,openlog,syslog,readlink,symlink,link,leak,fsockopen,popen,escapeshellcmd,error_log
啟用SELinux(可選):
sudo yum install policycoreutils-python-utils
sudo setenforce 1
通過這些步驟,可以顯著提高CentOS系統上PHP配置的安全性,減少潛在的安全風險。