11.25配置防盗链
11.26访问控制Directory
11.27访问控制FilesMatch
11.28限定某个目录禁止解析php
11.29限制user_agent
11.30/11.31php相关配置
11.32php扩展模块安装
11.25配置防盗链
1.1 首先我们来清楚两个概念:a.防盗链:防盗链就是禁止其他网站引用自己网站资源而做的一系列设置,优点就不需要说了,绝多数就是防止资源浪费,特别是有宽带、流量限制的空间如果不做一些 限制可能就光引用自己网站图片、视频等等资源可能会消耗很大一部分流量。b. referer的概念:你通过A网站的一个页面http://a.com/a.html 里面的链接去访问B网站的一个页面http://b.com/b.html ,那么这个B网站页面的referer就是http://a.com/a.html。 也就是说,一个referer其实就是一个网址。
11.26访问控制Directory
1 有时候对于一些比较重要的网站内容,除了可以使用用户认证限制访问之外,还可以通过其他一些方法做到限制,比如可以限制IP,也可以限制user_agent,限制IP指的是限制访问网站的来源IP,而限制user_agent,通常用来限制恶意或者不正常的请求。
2首先还是编辑配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
3 验证一下语法,重新加载配置文件。并测试配置是否成功
/usr/local/apache2.4/bin/apachectl -t
Syntax OK
11.27访问控制FilesMatch
1 filesmatch表示配置匹配后缀名文件的防盗链,主要是针对某个文件来做限制。
2 首先还是来编辑配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
2 验证一下语法,重新加载配置文件。并测试配置是否成功
# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
# /usr/local/apache2.4/bin/apachectl gracefu
11.28限定某个目录禁止解析php
1 在可上传文件的目录下禁止解析PHP,为了避免上传的PHP文件有木马,所以禁止该目录下面的访问解析PHP。一般可写目录、静态文件存放的目录内是不允许存放PHP。
2 首先还是来编辑配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
3 验证一下语法,重新加载配置文件。并测试配置是否成功(这里我们模拟生产环境新建一个upload目录
#cd ..
#mkdir upload
#cp /data/wwwr oot/test.com/1. php /dattwwwroot/test.com/upload/
#cd ..
#cd test.com/
#cd upload/
#ls
1.php
11.29限制user_agent
1 user_agent可以理解为浏览器标识。防止CC攻击,使大量肉机同时访问某站点,造成拥堵。CC攻击的规律为所有的user_agent都是一致的,且访问频率快,访问地址相同。
2 首先我们还是看一下配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
3 验证一下语法,重新加载配置文件。并测试配置是否成功
当user_agent匹配到curl或者baidu.com时,都会触发规则显Forbidden
11.30/11.31 php相关配置
1 相关配置文件存放目录
# /usr/local/php/bin/php -i |grep -i "loaded configuration file"
2 这里我们看到有一些警告信息提示我们没有设置timezone,其实我们可以设置一下定义date.timezone
//编辑php.ini这个配置文件修改其中的timezone
# vim php.ini
[Date]; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shangahi
3 PHP的disable_functions:PHP有诸多的内置的函数,有一些函数(比如exec)会直接调取linux的系统命令,如果开放将会非常危险,因此,基于安全考虑应该把一些存在安全风险的函数禁掉。
4 php中配置 error_log(PHP的日志非常重要,它是排查问题的重要手段。将display_errors设为off,如果是on的话会将错误日志直接显示在浏览器里,这样对于用户访问不好,而且还会暴露一些文件路径等重要信息,所以要设为off。
编辑php.ini配置文件
1# vim php.ini
2 修改正确的open_basedir又可以正常访问了
3 针对不同的虚拟主机去限制不同的open_basedir
4 测试open_basedir
# curl -A "aaa aaa" -x127.0.0.1:80 'http://test.com/1.php' -I
11.32php扩展模块安装
1编译httpd时,有涉及动态和静态模块,PHP也一样有静态与动态之分,之前所涉及到的PHP安装都全部为静态,并没有任何动态的模块,所谓动态,就是一个独立存在的.so文件,在httpd中PHP就是以动态模块的形式被加载的。PHP一旦编译完成后,要想再增加一个功能的话,要么重新编译PHP,要么直接编译一个扩展模块(生成一个.so文件),然后在php.ini中配置一下,就可以被加载使用了。
2 看一下我们的电脑上面使用了哪些模块
# /usr/local/php/bin/php -m
[PHP Modules]
bz2
Corec
type
date
dom
ereg
exif
..........
fileinfo
xmlwriter
zlib
3 我们开始下载一个扩展模块编译成.so文件
4 我们查看一下编译好的.so文件有一个mongo.so文件,查询一下扩展模块存放目录
5 在php.ini中配置一行增加扩展模块
# vim php.ini
extension=mongo.so
6查看一下配置是否成功,模块是否添加成功
#/usr/local/php/bin/php -m
-
[PHP Modules]
-
bz2
-
Core
-
ctype
-
date
-
dom
-
ereg
-
exif
-
fileinfo
-
filter
-
gd
-
hash
-
iconv
-
json
-
libxml
-
mongo
-
mysql
-
mysqli
-
openssl
-
pcre
扩展 几种限制ip的方法 http://ask.apelearn.com/question/6519 apache 配置https 支持ssl http://ask.apelearn.com/question/1029 apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html apache rewrite 出现死循环 http://ask.apelearn.com/question/1043 php错误日志级别参考 http://ask.apelearn.com/question/6973