LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块

                限定某个目录禁止解析php

防止黑客上传一个目录文件php,网站会从而解析php,对我们的网站有很大的危险。

因此,我们需要在能上传文件的目录直接禁止解析PHP代码


禁止步骤

1.编辑虚拟主机配置文件:增添内容

核心配置文件内容

<Directory /data/wwwroot/111.com/upload>

php_admin_flag engine off   //禁止解析PHP这行即可

<FilesMatch  (.*)\.php(.*)>   //加上这个deny是可以防止解析我们xxx.php(.*)源代码

Order deny,allow

Deny from all

</FilesMatch>

</Directory>


修改完后:

改完了配置文件需要重新加载一下:

/usr/local/apache2.4/bin/apachectl -t  (检测)

/usr/local/apache2.4/bin/apachectl graceful (加载)


创建upload目录:(在/data/wwwroot/111.com/下创建

cd /data/wwwroot/111.com

mkdir upload

复制admin.php到upload下并改名为test.php


测试:


此时只是显示test.php源代码

去掉这个标签内容,再测试,连访问的权限都没有

测试


                 限制user_agent

user_agent:为浏览器的标识

当很多用户同时访问同一个站点,这样会很消耗服务器资源

针对user_agent做访问控制步骤:

1.编辑虚拟主机配置文件:增添内容

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]

RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]

RewriteRule  .*  -  [F]

</IfModule>

限制.*curl.或者.*baidu.com.这两个user_agent的访问


改完了配置文件需要重新加载一下:

/usr/local/apache2.4/bin/apachectl -t  (检测)

/usr/local/apache2.4/bin/apachectl graceful (加载)


测试:

在日志文件可以看出:user_agent是我们的定义的curl


指定user_agent进行测试 curl -A(加-A选项)

 curl -A "cansheng" -x192.168.136.133:80 'http://111.com/admin.php' -I 

访问日志查看user_agent


curl 的常用选项意义:

-A :指定user_agent

-I    :显示状态码

-x  :相当省略了hosts


                             PHP相关配置


查看我们的配置文件位置:(111.com虚拟主机)

(1)网页上查看:

首先得在 /data/wwwroot/111.com/index.php下编辑添加

phpinfo();

网页上查看信息:

cp  /usr/local/src/php-5.6.30/php.ini-development /usr/local/php/etc/php.ini

复制后则会出现这样的信息

这就是我们配置文件php.ini的位置


(2)命令行查看

usr/local/php/bin/php -i|grep -i "loaded configuration file"

(上面的PHP Warning:这个不是报错。需要取消的话编辑php.ini  。找到data.timezone

 

把PHP里的一些函数禁掉:

步骤:

1.修改配置文件:vim /usr/local/php/etc/php.ini

增添要禁止的函数

disable_functions

eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close


禁止了phpinfo()函数后再次访问111.com/index.php(内有phpinfo())则不会显示函数的内容:


配置error_log (不让错误信息显示在浏览器中)

1.修改display_errors = Off

修改以后就不会把错误信息显示在浏览器中

2.定义错误日志的路径:

(1)确保:log_errors =On

(2)路径:error_log = /tmp/log/php/php_errors.log(自定义路径)

(3)定义error_log级别:error_reporting

创建 错误日志路劲文件:

并修改权限:


测试:



配置open_basedir:(安全选项)

open_basedir:作用是将网站限制在指定的目录里,就算黑客黑了这个网址也只能在这个目录下操作,影响不了其他目录下的网站。(一台服务器可以跑多个网站)


步骤:

1.修改配置文件,增加内容。

增加限定所在目录(多个目录用“:”隔开


测试:

故意把限定目录改成不存在的一个目录:


运行: curl -x192.168.136.133:80 111.com/index.php -I 

(index.php是在111.com目录下的)

报错。

错误日志内容显示:


正确修改完后

访问正常:


如果我们的服务器上有很多个网站都在同一个目录,那么直接修改php.ini就不是这么合适。php.ini是针对所有的站点的。

解决方法:

对单个虚拟主机设置open_basedir

步骤:

修改虚拟主机配置文件:

 vim  /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增添内容:

php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

php_admin_value  可以定义php.ini里面的参数:


这样两台虚拟主机都限定在各自的目录下

(/tmp 目录基本都得添加到限制目录中,这个是因为一些临时限制文件一般的都是先存放在/tmp,不加tmp则类似图片上传也不能正确使用)


(切记:每次修改完配置文件都要检测和加载

/usr/local/apache2.4/bin/apachectl -t  (检测)

/usr/local/apache2.4/bin/apachectl graceful (加载)


                                 PHP扩展模块安装

PHP动态扩展模块

当我们的需求变更时,我们的模块在一开始配置完成后没有变更时的模块,那么就需要动态扩展:

查看PHP目前都加载了什么模块

/usr/local/php/bin/php -m 


下面安装一个redis的模块( 放在/usr/local/src/目录下)

1.先下载redis 的包:

2.修改一下名字:

mv develop phpredis-develop.zip

3.解压:

unzip phpredis-develop.zip

4.进入到包里:

cd phpredis-develop


5.生成configure文件

/usr/local/php/bin/phpize 

yum install -y autoconf


安装完成后再执行/usr/local/php/bin/phpize 


6.执行

./configure --with-php-config=/usr/local/php/bin/php-config

7.make

8.make  install

安装完后:生成有redis.so这个文件,这正是我想要的 

但是此时我们的php并没有加载到这个模块


9.配置,让php加载这个redis模块:

(1)查看扩展模块存放目录,(我们可以在php.ini中去自定义该路径)

/usr/local/php/bin/php -i |grep extension_dir 

下载的模块都是默认放在这里的:


(2)编辑php.ini

vim /usr/local/php/etc/php.ini

增加一行配置(可以放到文件最后一行)

extension = redis.so  


最后就可以查看到php加载了这个模块

(编译一个扩展模块的时候,如果如果自带的源码包里(php)的ext目录下有我们想要的模块,那么就可以直接在ext编译它 ,不用下载,先进入该包然后执行生成configure文件这里开始的步骤

)













原文地址:http://blog.51cto.com/13589255/2088631

时间: 2024-08-14 08:53:25

LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块的相关文章

限定某个目录禁止解析php 限制user_agent php相关配置

原文地址:https://www.cnblogs.com/xiaobo-Linux/p/8541510.html

11.28 限定某个目录禁止解析php;11.29 限制user_agent;11.30,11.31 php相关配置(上下)

扩展: apache开启压缩  http://www.aminglinux.com/bbs/thread-5528-1-1.html apache2.2到2.4配置文件变更  http://www.aminglinux.com/bbs/thread-7292-1-1.html apache options参数  http://www.aminglinux.com/bbs/thread-1051-1-1.html apache禁止trace或track防止xss  http://www.aming

限定某个目录禁止解析php、限制user_agent、php相关配置

限定某个目录禁止解析php 当黑客攻击你的服务器时,在你的静态目录下添加一个木马脚本,这时服务器将会很大风险,这时需要限制哪些目录不能解析php,提高安全性. 1.新增内容 [[email protected] local]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.c

2018-3-7 11周2次课 限定某个目录禁止解析php、限制user_agent、php相关配置

11.28 限定某个目录禁止解析php 禁止php解析:防止被上传有害php文件,而被执行,php中可能有危险的函数,如果开放了上传权限,肯定会被上传恶意木马文件,会被拿到服务器权限,root权限,非常危险. 更可以在加上FilesMatch访问限制 检查并重新加载配置文件 -t,graceful [[email protected] ~]# cd /data/wwwroot/111.com/ [[email protected] 111.com]# mkdir upload [[email p

11.28 限定某个目录禁止解析php;11.29 限制user_agent;11.30-11.31

扩展 : apache开启压缩 : http://ask.apelearn.com/question/5528 apache2.2到2.4配置文件变更 : http://ask.apelearn.com/question/7292 apache options参数 : http://ask.apelearn.com/question/1051 apache禁止trace或track防止xss : http://ask.apelearn.com/question/1045 apache 配置htt

apache2.4限定某个目录禁止解析PHP、限制user_agent、PHP相关配置

限定某个目录禁止解析PHP 对于使用PHP语言编写的网站,有一些目录是有需求上传文件的,比如服务器可以上传图片,并且没有做防盗链,所以就会被人家当成了一个图片存储服务器,并且盗用带宽流量.如果网站代码有漏洞,让黑客上传了一个用PHP代码写的木马,由于网站可以执行PHP程序,最终会让黑客拿到服务器权限,为了避免这种情况发生,我们需要把能上传文件的目录直接禁止解析PHP代码(不用担心会影响网站访问,若这种目录也需要解析PHP,那说明程序员不合格) 1. 修改虚拟主机配置文件 [[email prot

11.28限定某个目录禁止解析php11.29限制user_agent11.30-31php相关配置

11.28 限定某个目录禁止解析php例如一些目录允许上传图片,为防止有人上传带有病毒php文件,所以禁止php解析,一般存放静态的文件上的目录是不允许解析PHP文件的重新加载配置文件 创建upload目录,访问提示403状态码在浏览器打开是无法打开的,连访问的机会都没有将下图的注释掉再重新加载后测试,这时候不能解析了,显示它的源代码在浏览器打开提示下载11.29 限制user_agentvim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf重

11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31

11.28 限定某个目录禁止解析php 核心配置文件内容<Directory /data/wwwroot/www.123.com/upload>php_admin_flag engine off</Directory>curl测试时直接返回了php源代码,并未解析 curl -x127.0.0.1:80 'http://123.com/upload/123.php' 11.29 限制user_agent user_agent可以理解为浏览器标识核心配置文件内容<IfModul

四十四、限定某个目录禁止解析php、限制user_agent、PHP相关配置

一.限定某个目录禁止解析php 禁止解析php主要是为了安全,一般静态文件所存放的目录下是不允许放PHP的 # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off       //禁止解析PHP <FilesMatch (.*)\.php(.*)>    //访问php后缀的全部拒绝,拒绝后都无