1. 系统及PHP基础安全加固
sudo yum update -y更新CentOS系统和PHP至最新版本,及时修补已知安全漏洞。adm、lp等),关闭无用服务(如FTP、Telnet),减少攻击面。2. Web服务器配置优化
/etc/httpd/conf/httpd.conf,限制目录访问(Options -Indexes禁止目录列表)、禁用.htaccess覆盖(AllowOverride None),仅允许必要HTTP方法(Limit GET POST)。server块中添加location ~ /\. { deny all; }禁止访问隐藏文件(如.env、.git),设置client_max_body_size 10M限制上传文件大小。3. PHP核心配置强化
/etc/php.ini中设置disable_functions = eval,exec,shell_exec,passthru,system,curl_exec,curl_multi_exec,parse_ini_file,show_source,防止恶意代码执行系统命令。open_basedir = /var/www/html:/tmp限制PHP脚本只能访问网站根目录(/var/www/html)和临时目录(/tmp),避免非法读取系统文件(如/etc/passwd)。display_errors = Off(生产环境必须关闭),log_errors = On(开启日志记录),并指定日志路径error_log = /var/log/php_errors.log,防止错误堆栈信息暴露给攻击者。register_globals = Off(默认值),防止表单提交的数据自动注册为全局变量(如$_GET['username']可直接通过$username访问),避免SQL注入等攻击。allow_url_fopen = Off、allow_url_include = Off,禁止PHP通过URL访问远程文件(如include 'http://example.com/malicious.php';),防止远程代码包含攻击。/etc/php.ini中设置session.cookie_httponly = On(防止XSS窃取Cookie)、session.cookie_secure = On(仅通过HTTPS传输Cookie)、session.cookie_samesite = Strict(限制Cookie在跨站请求时不被发送),提升会话安全性。4. 防火墙与网络访问控制
sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https开放HTTP(80端口)和HTTPS(443端口),执行sudo firewall-cmd --reload使配置生效,限制仅允许必要网络流量访问服务器。5. HTTPS加密与数据保护
sudo yum install mod_ssl openssl安装SSL模块,生成自签名证书(openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/example.com.key -out /etc/pki/tls/certs/example.com.crt)或申请Let’s Encrypt免费证书,配置/etc/httpd/conf.d/ssl.conf(Apache)或Nginx的server块(listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem),强制网站使用HTTPS加密传输数据。6. 数据库安全防护
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username"); $stmt->execute(['username' => $username]);),防止SQL注入攻击。app_user),仅授予必要权限(如SELECT, INSERT, UPDATE),避免使用root账户连接数据库。7. 日志监控与入侵检测
error_log = /var/log/php_errors.log)、Web服务器访问日志(Apache:/var/log/httpd/access_log;Nginx:/var/log/nginx/access.log)和错误日志(Apache:/var/log/httpd/error_log;Nginx:/var/log/nginx/error_log),定期检查日志中的异常行为(如大量404请求、SQL注入尝试)。sudo yum install fail2ban),配置/etc/fail2ban/jail.local监控SSH(ssh jail)、Web服务器(httpd或nginx jail)的暴力破解行为,自动封禁恶意IP。8. 备份与恢复策略
rsync或tar命令备份网站数据(/var/www/html)和数据库(mysqldump -u root -p dbname > /backup/dbname.sql),将备份文件存储在异地(如云存储)或离线介质(如移动硬盘),确保数据丢失后可快速恢复。9. 其他安全增强措施
/etc/ssh/sshd_config,设置Port 2222(或其他10000以上的端口),减少SSH暴力破解尝试。/etc/vsftpd/vsftpd.conf,设置anonymous_enable=NO,禁止匿名用户访问FTP服务器。sudo yum install php-suhosin),增强PHP的安全防护(如加密Session、限制eval函数、防止缓冲区溢出),进一步提升PHP应用的安全性。