温馨提示×

如何防止CentOS PHP被攻击

小樊
48
2025-07-24 17:04:33
栏目: 编程语言

防止CentOS上的PHP应用被攻击需要采取一系列的安全措施。以下是一些关键的步骤和最佳实践:

系统及软件包更新

  • 保持系统和软件包最新:定期使用 yum update命令更新系统和所有软件包,以修补已知的安全漏洞。

防火墙配置

  • 使用Firewalld:安装并配置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 --permanents
    sudo firewall-cmd --zone=public --add-port=443/tcp --permanents
    sudo firewall-cmd --reload
    

PHP安全设置

  • 修改php.ini文件
    • 关闭错误显示:display_errors = Off
    • 启用 open_basedir 限制文件访问路径:open_basedir = "/var/www/html:/tmp"(根据实际路径调整)
    • 设置合理的文件上传大小限制:upload_max_filesize = 2Mpost_max_size = 8M
  • 禁用危险函数:在php.ini中禁用一些潜在危险的PHP函数,例如 exec()shell_exec()等。
    disable_functions = exec,shell_exec,system,passthru,popen,proc_open
    

安装必要的PHP扩展

  • 安装安全扩展:如 php-mcryptphp-gdphp-mbstringphp-bcmath,增强安全性及功能。
    sudo yum install php-mcrypt php-gd php-mbstring php-bcmath
    

启用HTTPS

  • 使用HTTPS协议:安装并配置SSL证书,使用HTTPS协议加密网站流量。
    sudo yum install mod_ssl
    sudo systemctl restart httpd
    

用户及账户安全

  • 删除不必要的系统账户,更改SSH默认端口,并强制使用强密码策略,禁用root直接登录。
    sudo passwd -dl user1 user2 ...
    sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
    

数据备份

  • 定期备份:定期备份网站数据和数据库,以防数据丢失或损坏。
    mkdir -p /backup
    rsync -avz --delete /var/www/html/ /backup/website_backup/
    mysqldump -u[数据库用户名] -p[数据库密码][数据库名] | gzip > /backup/website_backup.sql.gz
    

SELinux配置(可选)

  • 启用SELinux:提供更严格的安全防护,但需要仔细配置以避免与应用程序冲突。
    sudo yum install selinux-policy-targeted
    sudo sed -i 's/SELINUXdisabled/SELINUXenforcing/g' /etc/sysconfig/selinux
    sudo setenforce 1
    

定期更新和维护

  • 定期检查和更新配置文件,以适应新的安全需求和威胁。

通过上述措施,可以显著提高CentOS系统上PHP应用的安全性。务必定期检查和更新安全设置,以应对不断变化的安全威胁。

0