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

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


限定某个目录禁止解析php


对于PHP编写的网站吗,有一些目录是有需求上传文件的,最好就是把上传图片的目录做一个禁止解析PHP,不然有人恶意使用PHP代码写的木马上传到服务器,会导致他们拿到服务器最高权限。
添加以下配置:
1. vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


2. <Directory /data/test.com/tupian>
php_admin_flag engine off
</Directory>


3. /usr/local/apache2.4/bin/apachectl -t


4. /usr/local/apache2.4/bin/apachectl graceful


5.测试

curl -x127.0.0.1:80  www.etc.com/tupian/1.php


但是这样会显示源码不太好!
下面直接把php全部拒绝访问:在上面的基础上加filesmatch保护


有关pho后缀全部拒绝
<Directory /data/test.com/tupian>
        php_admin_flag engine off
        <filesmatch (.*)\.php(.*)>
        Order allow,deny
        Deny from all
        </filesmatch>
</Directory>


测试:
curl -x127.0.0.1:80  www.etc.com/tupian/1.php


限制user_agent

user_agent可以理解为浏览器标识,比如别人同时发动100台用户攻击你的服务器,会造成访问太频繁,就会导致服务器浪费资源,从而服务器提供正常服务,这种攻击叫做CC攻击。

当遇到这种情况,可以先查看日志,看看攻击是否有规律,从而限制user_agent来禁止别人访问。
添加一下配置,需要开启rewrite.c模块
1.开启rewrite模块
vim /usr/local/apache2.4/conf/httpd.conf
搜索rewrite取消#号


2.编辑虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


3.添加以下配置:
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
        RewriteCond %{HTTP_USER_AGENT} .*baidu.* [NC]
        RewriteRule .* -  [F]
</IfModule>

代码上的NC是不区分大小写,OR表示或者 F表示Forbidden

4 /usr/local/apache2.4/bin/apachectl -t

5 /usr/local/apache2.4/bin/apachectl graceful

6.测试
 curl -I   -x127.0.0.1:80 www.etc.com


因为设置了curl访问都被拒绝所有是访问不了的。


7.测试其他agent
这里用到-A 自定义agent
curl -A "xxxxx1212" -x127.0.0.1:80 www.etc.com -I


通过测试这个是可以的!


我们也可以查看日志:



php相关配置
虽然PHP是以一个模块的形式存在,但是PHP本身有自己的配置文件.
我们去源码包把pho配置文件拷贝出来。
1.首先定位php文件路径
随意在站点目录写一个1.php文件
添加:<?echo
phpinfo();  //保存并在浏览器打开查看configuration file path文件路径

    

2. cd /usr/local/src/php-5.6.32/
  cp php.ini-development  /usr/local/php/lib/php.ini  //拷贝生成环境使用的配置文件


3.graceful重新加载


定义下时间信息,不然有时候会报警告信息
1.vim /usr/local/php/lib/php.ini 
2.搜索date.timezone 
定义Asia/shanghai


disable_functions相关:

PHP有诸多内置函数,有一些函数(比如exec)会直接调取Linux系


统命令,如果开放将会非常危险,为了安全考虑应该把一些存在安


全风险的函数禁掉:
1.vim /usr/local/php/etc/php.ini 
2.搜索disable_functions
添加如下信息:
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


更改完后需要graceful重新加载。


配置error_log
PHP的日志对程序员来讲非常重要,他是排查问题的重要手段。
1,vim /usr/local/php/lib/php.ini 
2.搜索log_errors 
改成log_errors=on   //打开日志功能


再搜索error_log  设置
error_log = /var/log/php/php_error.log //这个为错误日志保存路径

再搜索error_reporting 

error_reporting = E_ALL 一般开发环境设置为E_ALL方便排查问题,但也会导致日志记录很多无意义的警告信息,所以看需求:
error_reporting = E_ALL & ~E_NOTICE  //这样可以排除警告信息。 
&表示并且  ~表示排除


然后再搜索display_erroes 
display_errors = On  改为off,,这样设置是为了保证错误日志不直接显示浏览器里,避免日志暴露网站一些重要的文件路径信



2.设置好一切后,创建日志文件夹并设为777权限


mkdir /var/log/php
chmod 777 /var/log/php


3.重新加载httpd
/usr/local/apache2.4/bin/apachectl graceful 


4测试 curl -i -x127.0.0.1:80 www.etc.com/1.php

查看日志:tail /var/log/php/php_error.log 




open_basedir相关配置:

作用:将网站限定在指定目录里,就算该站点被黑了,黑客只能在该目录下面有所作为,而不能左右其他目录。

如果服务器只有一个站点,那可以直接在php.ini下设置open_basedir

步骤:

1.vim /usr/local/php/lib/php.ini 

2。搜索open_basedir

            修改为:open_basedir =  /tmp:/data/test.com/tupian   //只能在tmp和tupian 2个目录里活动

3.测试

curl -A"123" -x127.0.0.1:80 -I www.etc.com/1.php -I


查看日志:tail /var/log/php/php_error.log


可以看到因为open_basedir限制

curl -A"123" -x127.0.0.1:80 -I www.etc.com/tupian/1.php -I  //只有访问图片目录才可以提示200



当然如果站点多的话,这个方法就没什么用了,这时有另外一个办法就是去虚拟主机配置文件中添加配置来限定:

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

2.在虚拟主机配置里添加

    php_admin_value open_basedir "/data/test.com/tupian/:tmp/"  //目录自定义,tmp一定要有,因为他是临时文件系统

总结,这样就可以实现一个虚拟主机定义一个open_basedir。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值