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

本文介绍了如何在Apache服务器上进行安全配置,包括禁止特定目录解析PHP以防止安全隐患,以及通过限制user_agent来缓解CC攻击。同时,文章讨论了PHP的配置优化,如禁用危险函数、设置正确时区、启用错误日志并控制其级别,以及使用open_basedir进行目录隔离。这些措施有助于提升服务器的安全性和性能。
摘要由CSDN通过智能技术生成

11.28 限定某个目录禁止解析php

在一些静态文件目录(如upload)应禁止解析PHP,否则容易产生安全隐患。

编辑虚拟主机配置文件

php_admin_flag engine off

测试结果

[root@linux-5 upload]# curl -x 192.168.88.5:80 def.com/upload/ceshi.php

echo "def.com";

如上述结果所示,规则已成功生效。虽然PHP已不能解析,但是访问结果会返回源代码,同样存在着数据泄露的风险,因此应结合FilesMatch,将静态文件目录访问PHP的权限完全禁止。

Order allow,deny

Deny from all

php_admin_flag engine off

Order allow,deny

Deny from all

11.29 限制user_agent

user_agent可以理解为浏览器标识

CC攻击的特性:user_agent相同,并发量高。日常如果遇到疑似CC攻击,可通过限制user_agent的方式来缓解服务器的压力。

编辑虚拟主机配置文件

RewriteEngine on

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

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

RewriteRule .* - [F]

NC代表忽略大小写,OR代表与其他条件为或者的关系,如果不加OR则与其他条件为并且的关系。

【F】代表forbidden的意思

结果测试

[root@linux-5 ~]# curl -x 192.168.88.5:80 def.com -I

HTTP/1.1 403 Forbidden

Date: Mon, 04 Jun 2018 07:10:16 GMT

Server: Apache/2.4.33 (Unix) PHP/5.6.32

Content-Type: text/html; charset=iso-8859-1

[root@linux-5 ~]# curl -A "lem lem" -x 192.168.88.5:80 def.com -I

HTTP/1.1 200 OK

Date: Mon, 04 Jun 2018 07:19:30 GMT

Server: Apache/2.4.33 (Unix) PHP/5.6.32

X-Powered-By: PHP/5.6.32

Cache-Control: max-age=0

Expires: Mon, 04 Jun 2018 07:19:30 GMT

Content-Type: text/html; charset=UTF-8

curl -A 选项可以自定义user_agent

11.30/11.31 php相关配置

在修改PHP的配置文件前,首先要找到php.ini文件的位置,我们可以用phpinfo或者php -i去查找,但是PHP在Apache上是一个模块,二者并没有绝对的联系,因此很可能修改的不是同一个php.ini文件

/usr/local/php/bin/php -i|grep -i "loaded configuration file" //可能不准确

通过目标网站下的phpinfo进行查找

74fecc45ea046fa8f2cda17a02f7aa0f.png

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

这些函数较为敏感和危险,可在php.ini中禁用掉

8c098a6bfc6c9889ba17d930f323d043.png

date.timezone(时区)

如果不在PHP中定义时区,可能会出现一些告警信息。

487100c3a95d140292a322cc9cc1e769.png

错误日志相关

在生产环境中,如果错误直接显示在浏览器上,可能会暴露网站的一些目录信息,存在安全隐患,但是关闭错误显示我们平时出现问题又很难排查,所以我们需要开启错误日志。

display_errors(是否显示错误日志)

4a0118ee8128724336f3e48b72f93063.png

log_errors(定义错误日志是否开启)

948a960900b94cb1ac11cea3ac1a6ca9.png

error_log(定义错误日志存放路径)

2abad8e5e74a11efd59e105ada4b43f0.png

error_reporting(定义错误日志的级别)

c42e19ef25865462885731e54dcd0f88.png

默认为ALL,把所有日志都进行记录,日志较多,在生产环境中,使用E_ALL & ~E_NOTICE即可。

open_basedir(目录隔离)

791f89f9d7fe250964acfffa0a3cf663.png

在php.ini中修改会针对所有站点生效,具有一定局限性,因此可在虚拟主机配置文件中针对单一站点进行配置open_basedir

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

增加tmp目录的目的,是因为临时文件存于tmp目录下,限制tmp目录可限制上传图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值