11.29 限制user_agent
11.30/11.31 php相关配置
限定某个目录禁止解析php
数据泄露可能性
①网站php程序漏洞
②sql注入漏洞:可以把查询的sql,通过特殊提交到服务器上,服务器会把sql语句转换成正常查询,最终获得一些数据(容易修复,只要在网站提交的入口增加特殊符号过滤,达到阻断效果)
实例:
第一个大括号和第二个大括号之间的表示对/upload目录禁止解析php,防止被黑客等人拿到权限调走数据
第二个大括号则是对files match访问控制,让外界对这个/upload目录无法访问
测试:
①加了两层限制后的403 Forbidden
②只针对某个目录禁止解析php:如下图显示的是源代码,不解析
可写的目录(静态文件),一般情况下不需要解析php,一般静态文件所存放的目录下不允许放php
限制user_agent
在网站受到SYS攻击时(攻击人通过一些手段,如软件,肉机(被黑被控制的机器)同时访问一个站点)
限制user_agent的过于频繁访问请求,减轻服务器压力
NC表示忽略大小写 OR或者 F:Forbidden
测试成功:
curl -A 再测试确定因为限制了user_agent
curl -A指定usr_agent
curl -e 指定referer 必须以“http:// ”开头
curl -x 省略hosts
curl -I 返回状态码,不执行
PHP相关配置
在网站根目录下通过网页查看php.info(找php配置文件最准确)
①根目录下index.php编辑成php.info
②打开111.com/index.php显示具体页面信息(虽然配置文件是/usr/local/php7/etc,但是并没有加载)
③把源码包的php.ini拷贝到配置文件路径下,并刷新配置apachectl graceful
④打开配置文件 vim /usr/local/php7/etc/php.ini
disable_functions 禁掉一些危险函数,甚至phpinfo函数,有时不小心写了phpinfo的页面上传到网上,被黑客扫到可以看到系统信息,有潜在的深入挖掘渗透
禁掉后刷新发现phpinfo页面无法访问
定义date.timezone(如果不定义可能会有一些报警信息)
日志相关
因为有display_errors = On使得之前phpinfo被禁后的错误信息直接显示在网站上 (暴露目录地址),改成off比较安全,不需要把错误信息输出到浏览器中,参数改成Off后再重新加载配置,出现百页,无错误提示
用curl访问发现没有任何输出,这时候需要配置一个错误日志方便以后排错
配置错误日志信息
①/log_errors = On
②error_log = 定义到某目录下
③定义error_log的级别,如果不定义只会记录严重的错误,不会完全记录
最不严谨的就是所有都生成,然而在生产环境中,Notice很多,所以只要选择log 错误就行了
生成php_errors.log 属主于daemon,ps aux |grep httpd查看,也是httpd的属主,实际上以进程的身份生成(应用:如果定义了一个错误日志,但是始终没有生成,应该排查定义错误日志所在的目录是否有写的权限,此处写文件的“人”是apache所属主,启动用户daemon)
为了保险起见可以先grep查看错误日志的定义路径,先touch,再改777权限
cat这个Log发现
模拟一个错误:新编辑一个2.php文件(语法错误),然后curl后没有任何提示,再cat发现错误详情
安全相关参数
open_basedir主要用来限定并隔离站点与站点之间的目录 (比如一台服务器跑N个站点,其中一个漏洞多被黑被拿到权限,增加open_basedir 可以避免扩散)
找到open_basedir选项,把文件目录限制在/tmp下
如果定义错了,如1111.com看看实验结果,curl结果是500错误, Internal Server Error
查看错误日志: cat /tmp/php_errors.log
改成正确的路径 /data/wwwroot/111.com:/tmp; curl后正常
如果一个服务器跑N个站点,如何限定?所有网站根目录都在/data/wwwroot/下,如果限定在这一层不行,又由于php.ini配置文件是针对所有站点生效,所以需要到单个站点上配置open_basedir,即在vhost(apache虚拟主机)配置文件中个性化针对 某站点进行限制
php_admin_value参数可以定义php.ini里的一些参数(如error_log, error_reporting等等)
限制在/tmp/目录下的原因是:默认所有临时文件等都会先保存在/tmp/下,如图片上传是先传到/tmp/下再到相应的路径,这样达到隔离效果
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