lamp(八)——禁止php解析、限制user_agent、php设置

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

限定某个目录禁止解析php

涉及到编程,bug是不可避免的。web安全是运维、安全、开发几乎所工程师要做的事情。lamp中要防范php使用范围,比如一些资料目录限止使用。

禁止解析php,在apache配置文件增加:

   <Directory /data/wwwroot/www.123.com/upload>
       php_admin_flag engine off
   </Directory>

最好再加上filesmatch,匹配*\.php(.*)。这样不但阻止php语句执行,还能屏蔽访问内容。

curl测试时直接返回了php源代码,成功。

限制user_agent

user_agent可以理解为浏览器标识,如chrome、firefox。此外还有curl、爬虫等。主要用于限止爬虫和洪水攻击。

核心配置文件内容

  <IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR] #忽略大小写
       RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
       RewriteRule  .*  -  [F] #F是forbiden
   </IfModule>

curl 参数-A用来指定user_agent。也可以用第三方计算机浏览器测试访问。记得提前编辑hosts文件解析自己的服务器。

php相关配置

查看php配置文件位置:/usr/local/php/bin/php -i|grep -i "loaded configuration file"。php -i列出了详细的php信息,关于使用的配置文件位置可能不准。更准确的是用php.inf:创建一个phpinfo()文件,然后用浏览器访问该文件。

启动apache时可能有waring提示,其实在php配置文件中设置时区即可。搜索“date.timezone” 修改为Asia/Shanghai或者Asia/Chongqing。

禁止一些比较危险的php函数,这样网站会安全一些。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
error_log, log_errors, display_errors, error_reporting, phpinfo

php配置文件中还可以指定访问服务器目录,这样被黑后入侵者只能访问规定目录。打开php配置文件,设置open_basedir:vim /usr/local/php/etc/php.ini,搜索open_basedir,改成如下
“open_basedir = /tmp:/data/wwwroot/123.com”,即指定可以访问的目录,用冒号分隔。但是这样限止了该机所有虚拟主机访问的目录,即多个虚拟主机都被只能访问规定的目录。如果服务器有多个网站,可以在apache的配置文件中设置:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,在虚拟主机virtualhost段中添加指定目录php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"。起作用的就是这句 php_admin_value,除此之外像 error_log 之类的php配置
也可以定义。这样就可以实现,一个虚拟主机定义一个open_basedir。

    原文作者:awsome365
    原文地址: https://www.jianshu.com/p/a8c0c839bae5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞