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网站服务器安全配置加固防护方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • vmware linux系统安装最新的php7图解

    php7比旧版本的性能提高了好多倍,linux通过yum安装php7. 首先我们先检查一下我们之前的php版本,通过yum list installed | grep php,如果没有输出信息说明是没有安装php 如果有安装php,首先卸载之前的php版本,通过命令yum remove php*,卸载php所有的依赖 过yum list |grep php  查看一下php版本,发现现在是5.4的版本. 现在php5.4,如果我们单独安装需要解决一些依赖问题,通过yum来解决依赖问题,通过命令我

  • Linux系统下为Nginx安装多版本PHP

    我们在安装配置服务器LNPM环境时应该考虑到PHP多版本并存的问题,下面是实现Linux系统下为Nginx安装多版本PHP的实现方法 linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 & php5.4.44 注意假如php5.5是主版本已经安装在/usr/local/php目录下,那么再安装其他版本的php再指定不同安装目录即可. 安装PHP # wget http://cn2.php.net/get/php-5.4.44.tar.

  • Linux基于php-fpm模式的lamp搭建phpmyadmin的方法

    一. 名词简介 1.linux Linux 是免费开源软件,这意味着源代码可用的操作系统. 2. lamp lamp指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 3.mysql mysql 是多线程.多用户的SQL数据库管理系统. mysql 已由Oracle公司自 2010 年 1 月 27 日通过SUN购买.SUN 最初于 2008 年 2

  • 将phpstudy中的mysql迁移至Linux教程

    项目目的 将原来windows环境中使用phpstudy搭建的mysql 5.5.53 中的数据迁移至新主机Linux环境中 环境情况 新主机 系统平台: CentOS release 7.4 (Final)             内核  3.10.0-693.el7.x86_64 mysql环境: mysql> status Server version:     5.6.39-log MySQL Community Server (GPL) Server characterset:   

  • php中如何执行linux命令详解

    前言 本文主要给大家介绍了关于在php中如何执行linux命令的相关内容,下面话不多说了,来一起看看详细的介绍吧 php如何执行某个命令 ,官方手册在这里 我们先从shell_exec来说 如何使用shell_exec在php里面执行shell命令 先来试一下,使用php执行某个shell命令,该命令是mkdir testdir. <?php $cmd = 'mkdir testdir'; shell_exec($cmd); 在这个php脚本执行之前,目录里面是这样子的: 执行之后,目录里面是如

  • Linux系统下多版本php共存的解决方案(超简单)

    自php7问世,身为最新版本控的我马上升级体验,但是由于服务器上还有旧程序在运行,只好部署一个php多版本共存环境. 现有环境是lnmp - CentOS 6.7 - nginx 1.10.1 - mariadb-10.0.26 - php 7.0.8 为了更好兼容旧的php程序,推荐使用5.4.45. 主要是兼容mysql扩展. 开始安装 首先要下载php-5.4.45.tar.gz源码包. 通过源码安装 # tar xzvf php-5.4.45.tar.gz # cd php-5.4.45

  • Linux下 php7安装redis的方法

    安装redis服务 1 下载redis cd /usr/local/ 进入安装目录 wget http://download.redis.io/redis-stable.tar.gz 2 解压安装 tar xvzf redis-stable.tar.gz cd redis-stable make && make install 3 配置redis 拷贝配置文件到/etc/redis/redis.conf cp redis.conf /etc/redis/6379redis.conf vim

  • Linux下PHP网站服务器安全配置加固防护方法【推荐】

    PHP被广泛用于各种Web开发.而当服务器端脚本配置错误时会出现各种问题.现今,大部分Web服务器是基于Linux环境下运行(比如:Ubuntu,Debian等). 本文详细总结了PHP网站在Linux服务器上面的安全配置,包含PHP安全.mysql数据库安全.web服务器安全.木马查杀和防范等,很好很强大很安全.(如果需要深入的安全部署建议找专业做安全的国内公司如:Sinesafe,绿盟,启明星辰等等都是比较不错的专业做网站安全的公司) PHP安全配置 1. 确保运行php的用户为一般用户,如

  • Linux下源码编译安装配置SVN服务器的步骤分享

    说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

  • Linux 下FTP的安装与配置教程详解

    0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=" disabled " ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否安装过vsftp # rpm -qa | grep vsftpd 则代表已经安装.可直接跳过步骤2 2 .安装 vsftp # yum install vsftp* Is this ok [y/N]: y 代表安装完成. 3. 对vsftp 进行配置 # /etc/vsftpd/vsftp

  • Linux下搭建ftp服务器

    使用RH 系Linux,Debian系请酌情参照 安装ftp所需包 安装ftp包 yum -y install ftp 安装vsftpd包 yum -y install vsftpd 注:配置文件路径   /etc/vsftpd/ 创建ftp用户,并付赋权 创建普通用户(我这里用户名为huoher) useradd huoher 设置该用户只能使用ftp而不能通过ssh或其他协议登录进来 usermod -s /sbin/nologin huoher 由于用户是ftp的,不是正常的登录用户,修改

  • Linux下批量修改服务器用户密码方法步骤

    密码快要过期.由于机器数量众多,因此采用批量修改密码的方式来进行处理. 下面是具体步骤: 1.配置ssh免key # ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # ssh-copy-id 10.230.86.64 (由于只是需要单向的copy文件,因此我们配置63与64到91的boco用户免key即可) 2.测试免key是否配置成功 3.编写密码文件 将所有需要修改的用户与密码按下面格式写到文件里,注意中间不要有空行 vi userpasswdfile.t

  • Mac 下阿里云服务器的配置方法

    最近阿里云服务器在搞活动9.9元半年.就买来配置玩下. 按照购买流程 公共镜像:选择第一个CentOs,<建议使用稍低版本 ,CentOs使用比较多些> 之后会有一个公网IP 和私有IP, 这里我们使用公网IP .下面2种方式都可以配置服务器,建议使用2 1. 在购买设置界面找到->实例详情 -> 远程连接 会进入你的购买服务器操作系统 输入账号 密码 2. 使用软件CyberDuck 连接你服务器并且在mac 终端上$ ssh root@123.36.222.22 (公网IP)之

  • 图解Linux下安装Tomcat服务器

    图解Linux下安装Tomcat服务器的具体过程,供大家参考,具体内容如下 上传Tomcat服务器: 首先,需要下载Tomcat-上传到服务器. 安装Tomcat服务器 解压tomcat服务器压缩包 现在已经在java目录下了. tar zxvf apache-tomcat-7.0.72.tar.gz 解压成功了: 配置环境变量 tomcat服务器运行时是需要JDK支持的,所以必须配置好JDK用到的那些环境变量 cd /etc/ ls #显示目录下所有文件及文件夹 编辑/etc下的profile

  • linux下vsftpd的安装及配置使用详细步骤(推荐)

    vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征. 比如:非常高的安全性需求.带宽限制.良好的可伸缩性.可创建虚拟用户.支持IPv6.速率高等. vsftpd是一款在Linux发行版中最受推崇的FT

  • Linux下Docker及portainer相关配置方法

    一.安装使用Docer CE 本文以CentOS 7为例,安装docker CE版本,docker有两种版本,社区版本CE和企业版本EE,此处学习研究以CE版本为例, 两种安装方式可选:1.使用yum安装,2.使用脚本自动安装 系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定. 卸载旧版本 旧版本的 Do

  • Linux下安装jdk1.8并配置环境变量的教程

    1.去官网下载对应版本的安装包,64位系统对应64位的安装包 2.新建一个目录,如:/usr/lib/jdk 3.把安装包移动到新建的jdk目录下,并解压缩,得到目录jdk1.8.0_161 4.此时要配置环境变量了,使用sudo gedit /etc/environment,打开文件,在末尾添加 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$JAVA

随机推荐