千家信息网

Linux下PHP网站服务器安全配置如何加固防护

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关Linux下PHP网站服务器安全配置如何加固防护的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PHP被广泛用于各种Web开发。而当服务器端脚本配置
千家信息网最后更新 2026年11月02日Linux下PHP网站服务器安全配置如何加固防护

这篇文章给大家分享的是有关Linux下PHP网站服务器安全配置如何加固防护的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

PHP被广泛用于各种Web开发。而当服务器端脚本配置错误时会出现各种问题。现今,大部分Web服务器是基于Linux环境下运行(比如:Ubuntu,Debian等)。

本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全、mysql数据库安全、web服务器安全、木马查杀和防范等,很好很强大很安全。(如果需要深入的安全部署建议找专业做安全的国内公司如:Sinesafe,绿盟,启明星辰等等都是比较不错的专业做网站安全的公司)

PHP安全配置

1. 确保运行php的用户为一般用户,如www

2. php.ini参数设置

disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,phpinfo #禁用的函数

expose_php = off #避免暴露PHP信息

display_errors = off #关闭错误信息提示

register_globals = off #关闭全局变量

enable_dl = off #不允许调用dl

allow_url_include = off #避免远程调用文件

session.cookie_httponly = 1 #http only开启

upload_tmp_dir = /tmp#明确定义upload目录

open_basedir = ./:/tmp:/home/wwwroot/#限制用户访问的目录

open_basedir参数详解

open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号"."来代表当前目录。注意用open_basedir指定的限制实际上是前缀,而不是目录名。

举例来说: 若"open_basedir = /home/wwwroot", 那么目录"/home/wwwroot"和"/home/wwwroot1"都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。

注意:

从网上获取的资料来看,open_basedir会对php操作io的性能产生很大的影响。研究资料表明,配置了php_basedir的脚本io执行速度会比没有配置的慢10倍甚至更多,请大家自己衡量

open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。

MySQL安全设置

1. MySQL版本的选择

在正式生产环境中,禁止使用4.1系列的MySQL数据库。至少需要使用5.1.39或以上版本。

2. 网络和端口的配置

在数据库只需供本机使用的情况下,使用-skip-networking参数禁止监听网络 。

3. 确保运行MySQL的用户为一般用户,如mysql,注意存放数据目录权限为mysql

vi/etc/my.cnf user = mysql

4. 开启mysql二进制日志,在误删除数据的情况下,可以通过二进制日志恢复到某个时间点

vi/etc/my.cnf log_bin = mysql-bin expire_logs_days = 7

5. 认证和授权

(1) 禁止root账号从网络访问数据库,root账号只允许来自本地主机的登陆。

mysql>grantallprivilegeson*.* toroot @localhost identified by'password'withgrantoption; mysql>flush priveleges;

(2) 删除匿名账号和空口令账号

mysql>USE mysql; mysql>deletefromuserwhereUser=; mysql>deletefromuserwherePassword=; mysql>deletefromdb whereUser=;

web服务器安全

确保运行Nginx或者Apache的用户为一般用户,如www,注意存放数据目录权限为www

防止sql注入

if( $query_string ~* ".*[\;'\<\>].*"){ return404; }

关闭存放数据上传等目录的PHP解析

location ~* ^/(attachments|data)/.*\.(php|php5)${ deny all; }

针对Apache:关闭图片目录/上传等目录的PHP解析

order allow,deny Deny from all

木马查杀和防范

php木马快速查找命令

grep-r --include=*.php '[^a-z]eval($_POST'/home/wwwroot/ grep-r --include=*.php 'file_put_contents(.*$_POST\[.*\]);'/home/wwwroot/

利用find mtime查找最近两天或者发现木马的这几天,有哪些PHP文件被修改

find-mtime -2 -typef -name \*.php

防范:

1. 做好之前的安全措施,比如禁用相关PHP函数等

2. 改变目录和文件属性

find-typef -name \*.php -execchomd 644 {} \; find-typed -execchmod755 {} \; chown-R www.www /home/wwwroot/www.waitalone.cn

3. 为防止跨站感染,需要做虚拟主机目录隔离

(1) nginx的简单实现方法

利用nginx跑多个虚拟主机,习惯的php.ini的open_basedir配置:

open_basedir = ./:tmp:/home/wwwroot/

注:/home/wwwroot/是放置所有虚拟主机的web路径

黑客可以利用任何一个站点的webshell进入到/home/wwwroot/目录下的任何地方,这样对各个虚拟主机的危害就很大

例如: /data/www/wwwroot目录下有2个虚拟主机

修改php.ini

open_basedir = ./:/tmp:/home/wwwroot/www.sinesafe.com:/home/wwwroot/back.sinesafe.com

这样用户上传webshell就无法跨目录访问了。

(2) Apache的实现方法,控制跨目录访问

在虚拟机主机配置文件中加入

php_admin_value open_basedir "/tmp:/home/wwwroot/www.sinesafe.com"

感谢各位的阅读!关于"Linux下PHP网站服务器安全配置如何加固防护"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

目录 安全 配置 用户 数据 服务器 服务 主机 文件 虚拟主机 网站 数据库 木马 账号 路径 运行 限制 参数 更多 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为想互联网科技 致骋互联网科技 善班互联网科技有限公司 左右互联网络科技 互联网科技公司做什么 互联网科技创新企业排名 科技赋能互联网健康 博兴的互联网电子科技公司 互联网之后的科技是什么 中化能源互联网科技招聘 厦门千工互联网科技有限公司 深圳市优智互联网科技有限公司 长沙互联网科技 上海科技产业互联网平台 互联网公司属于科技吗 艺电能源互联网科技有限公司招聘 互联网金融运营模式中的金融科技 科技和互联网行业的特点 安徽九吞吴互联网科技有限公司 利用互联网等科技手段 壕鑫互联网络科技 互联网科技大会 上海亿帐通互联网科技 顺网科技2021年互联网排名 互联网科技项目计划书材料类 辽宁互联网新科技 华夏恒生科技与互联网科技 山东星卡互联网科技有限公司官网 福建互联网展示科技馆设计 科技发展第三阶段互联网时代
0