happy_boy 发表于 2018-12-12 11:10:48

11.28限定某个目录禁止解析php11.29限制user_agent11.30

  11.28 限定某个目录禁止解析php
http://i2.运维网.com/images/blog/201803/07/dbf2a06cbfcb4fd80de15ec4722ab4bd.png
例如一些目录允许上传图片,为防止有人上传带有病毒php文件,所以禁止php解析,一般存放静态的文件上的目录是不允许解析PHP文件的
http://i2.运维网.com/images/blog/201803/07/6b19ae23609b16186d934a058fa1a27d.jpg
重新加载配置文件
http://i2.运维网.com/images/blog/201803/07/2f38f0700e634554ab79309a3a61796e.png
创建upload目录,访问提示403状态码
http://i2.运维网.com/images/blog/201803/07/ac479ed7ba9ea92e76fbeca5e26e4a7f.png
在浏览器打开是无法打开的,连访问的机会都没有
http://i2.运维网.com/images/blog/201803/07/1b64d1b1ce09dfc68f715a987f77de48.png
将下图的注释掉
http://i2.运维网.com/images/blog/201803/07/9b76ec941832f1edcefd8adb9afcb5df.jpg
再重新加载后测试,这时候不能解析了,显示它的源代码
http://i2.运维网.com/images/blog/201803/07/253622a1a7a55bfac0041080c96ad9f4.png
在浏览器打开提示下载
http://i2.运维网.com/images/blog/201803/07/fa5aa77ffa6a6369958eb66148128e38.png
11.29 限制user_agent
http://i2.运维网.com/images/blog/201803/07/562d5bbb597742af9fa712d5a1ed2f2a.png
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
http://i2.运维网.com/images/blog/201803/07/58d2bc721a0ccc03598cf210d5fe4632.png
重新加载配置文件,curl访问提示状态码是403,就是因为user_agent是curl 所以无法访问
http://i2.运维网.com/images/blog/201803/07/33619f262171e5f4443c44df31e11460.png
用curl -A来自定义下user_agent就可以访问了,状态码是200,直接可以访问
http://i2.运维网.com/images/blog/201803/07/2f48bf6597fff403fdd42f509117194d.png
查看日志的user_agent 下图所示
http://i2.运维网.com/images/blog/201803/07/81d8e21de282f9bcee2b0eaeb14b84bc.jpg
11.30/11.31 php相关配置
http://i2.运维网.com/images/blog/201803/07/2d33723ad73aa371980cf062e6924ba2.png
在下面这个根目录下创建phpinfo
http://i2.运维网.com/images/blog/201803/07/7d6a310229062a6866d4f05f458ff9c1.png
http://i2.运维网.com/images/blog/201803/07/25da2f1de64b8ffab44ce1c93846c0c9.png
在浏览器查看php.ini配置文件的路径,但是实际上没有加载
http://i2.运维网.com/images/blog/201803/07/e7b35f6f0bec4fa1ee540c7b3b36ae1f.png
没有加载就需要在源码包复制一个php.ini进去
http://i2.运维网.com/images/blog/201803/07/91e529a9879bfe39972df3adb0d965e3.png
再重新加载一下配置文件
http://i2.运维网.com/images/blog/201803/07/b68bfb8272a284cabf38370464e5a91b.png
刷新一下浏览器就加载了配置文件的路径
http://i2.运维网.com/images/blog/201803/07/abae255ae6537554bf4f6cd30e29f259.png
这时候就可以去编辑配置文件做一些限制了
vim /usr/local/php7/etc/php.ini
输入/disable_fu 搜索到的是空的,再加入一些比较危险的函数
http://i2.运维网.com/images/blog/201803/07/1505b0851f606598fdd314585650b8ba.png
测试phpinfo的作用打开网可以看到站点的具体内容,如果禁掉就无法打开站 点了
http://i2.运维网.com/images/blog/201803/07/9b0d4411c1c86f9a6e03243b67d7d738.png
所 以这里就把phpinfo取消,因为还需要使用它
还需要定义date.timezone,如果不定义这个可以会有一些告紧信息,可以定的上海或重庆都是可以的
http://i2.运维网.com/images/blog/201803/07/17a44cbf06b96461ea88f81f1292223b.png
上面把phpinfo函数禁用了,打开网页时把错信息显示 在页面上了,这样容易暴路信息
http://i2.运维网.com/images/blog/201803/08/e56b92c41dfa8e6e6b0ccc0ca36132d2.png
重新加载 配置文件
http://i2.运维网.com/images/blog/201803/08/f942106c118d454f130fa9a2eecfc1f4.png
浏览器重新刷新一下,没有错误提示了,显示空白
http://i2.运维网.com/images/blog/201803/08/7a8f799f2a4fa2443cd41ea88b4300f6.png
curl -A查看也是没有任何的输出 也是白页,但这不是我们想要的结果 ,因为不知道什么问题,不知道发生事
http://i2.运维网.com/images/blog/201803/08/2180bb88cdd3a9d86ed18aac5e21337a.png
这时候就要配置几个错误日志,方便查找原因
vim /usr/local/php7/etc/php.ini
输入/log_errors查看是否开启
http://i2.运维网.com/images/blog/201803/08/66d86fb99b5bacc5180a6354cefabf1a.png
输入error_log定义路径
http://i2.运维网.com/images/blog/201803/08/0270a3463d39a97337dd4d35e0bf42d9.png
这时候还要定义error_log的级别,如果error_log的级别很高的话,它仅仅会记录一比较来严峻的错误
像一些警告的就不会记录,所在就不知道错误在那
输入/error_reporting   在 生产中我们用E_ALL & E_NOTICE就可以了,这里用E_ALL
http://i2.运维网.com/images/blog/201803/08/c2ac27c0f4fe77238bb0aba2eb6e3ee7.png
加载配置文件测试,在/tmp下生成了php_errors.log日志文件,并查看它的属主属组
http://i2.运维网.com/images/blog/201803/08/0c477aec2320e0bf410c8668070f1cf8.png
它的属主属组其实是httpd的属主属组
http://i2.运维网.com/images/blog/201803/08/4474b46a1c8673221a7bb5e9cc84023b.png
如果有一天发现错误日志始终没有写进定义的错误日志文件里,那么你就要查看一下这个定义的文件所在的目录有没有写的权限,这个写的权限的人就是httpd的启动用户,这里是deamon这个用户,为了安全起见也可以在创建touch /tmp/php_erroes.log然后再给它权限chmod 777 /tmp/php_erroes.log
查看下日志记录,然后再模拟下访问,再查看日志文件,这时候就出现Parse更严重的安全级别了
我们在排查错误的时候一定要有错误日志,如果没有是不行的
http://i2.运维网.com/images/blog/201803/08/e21cae19f055bd7e5242891656f9a6e7.png
下面介绍open_basedir安全选项
例如一个服务器上跑了N多个站点,有一些站点漏洞很多,结果这个站点被黑了,被人拿到了权限,不断惨透服务器,就有可能造成其它站点也会被黑了,这个时候增加一个open_basedir就有可能防止其它网站被黑,A网站目录在A目录下,B网站目录在B目录下,这2个目录做一个隔离,A网站被黑了也只能看到A目录,但看不到B目录,因为没有权限进去B目录,这个就是open_basedir的作用
编辑配置文件,故意把111.com写错1111.com
http://i2.运维网.com/images/blog/201803/08/da39b76194cb93155ef142ad455f6c80.png
测试一下结果 提示状态码为500
http://i2.运维网.com/images/blog/201803/08/4d5281376928f2c6290972ac44d11f30.png
将1111.com更改成正确的111.com
http://i2.运维网.com/images/blog/201803/08/45fe5e89b94b613a199fd5c9a644df98.png
访问的状态码就正确了 200
http://i2.运维网.com/images/blog/201803/08/e214e2dc7e01c1efae487c1cfff4c232.png
如果这个服务器有N多个站点,都在这个目录下,更改php.in只针对一个目录,那么其它站点都在这个目录,都可以访问,更改php.ini文件就不合适了,php.ini是做不到的
这时候需要针对这些站点去做open_basedir,就要到虚拟服务器里去做限制了
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
/tmp/默认存放临时文件,如果限制了就无法写入临时文件,例如上传图片,它会先把图片放在临时目录,再把图片放到该放的地方,根据不同的虚拟主机限制open_basedir
http://i2.运维网.com/images/blog/201803/08/d266b4dd80a795390588b63554553fc0.jpg
测试可以访问
http://i2.运维网.com/images/blog/201803/08/53b5fa64101432fa04bf9fcdf6993aad.png
  扩展
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 配置https 支持ssl http://ask.apelearn.com/question/1029



页: [1]
查看完整版本: 11.28限定某个目录禁止解析php11.29限制user_agent11.30