1. 更改虚拟主机配置文件:网站设定防盗链(非白名单网站不可引用)
给111.com网站下所有(txt,doc,mp3,zip,rar,jpg,gif,png等这些格式的资源),
防止其他网站私自引用,设定只给白名单网站引用显示,设定防盗链:
[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
删除之前的配置:
增加内容(防盗链配置信息):
注意:设定防盗链规则对应的文件和图片格式,要和做实验上传访问的格式要一致!
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "http://aaa.com" local_ref
#SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
注意:#SetEnvIfNoCase Referer "^$" local_ref 这行如果不注释掉,下面行设定的防盗链所防的格式图片文件等就会失效!也就是所有网站都可以引用了,一定要注释掉这行才可以。
2. 检测虚拟机配置文件是否有错误 :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t
3. 启动apache2.4/httpd :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl start
4. 重新加载配置文件(不会重启服务) :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
5. 进入111.com网站目录下 :
[root@hao-01 ~]# cd /data/wwwroot/111.com
6. 6. 从window上传一张图片到当前目录下 :
[root@hao-01 111.com]# rz
7. 查看虚拟主机111.com目录下的文件 :
(1.jpg就是刚刚从windows上传到当前目录的图片)
[root@hao-01 111.com]# ls
8. Linux服务器上打开80端口 :
[root@hao-01 111.com]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
(关闭80端口:iptables -D INPUT -p tcp --dport 80 -j ACCEPT )
10. Windows上游览器,访问111.com/1.jpg :
(.jpg图片做防盗链虚拟主机配置文件一定要有这个格式规则):
11. 测试非白名单网站,访问111.com下的防盗链后的txt等格式文件 :
[root@hao-01 111.com]# curl -e "http://aaa.com/123.txt" -x127.0.0.1:80 111.com/1.jpg -I
12. 测试白名单网站,访问111.com下的防盗链后的txt等格式文件 :
[root@hao-01 111.com]# curl -e "http://bbb.com/123.txt" -x127.0.0.1:80 111.com/1.jpg -I
11.26 访问控制Directory
Directory设定访问控制
1. 编辑虚拟主机配置文件 :
[root@hao-01 ]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
增加内容(111.com/admin是受限的目录):
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
2. 在111.com主机目录下,创建一个admin目录:
这个admin目录,是在配置文件中设定只有白名单ip可以访问的!
[root@hao-01 ~]# mkdir /data/wwwroot/111.com/admin/
3. 在amdin目录下,创建一个index.php文件,编写任意字符 :
[root@hao-01 ~]# vim /data/wwwroot/111.com/admin/index.php
内容任意
4. 检测虚拟机配置文件是否有错误 :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t
5. 重新加载配置文件(不会重启服务) :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
6. curl 白名单来源ip 访问111.com主机下的限制目录文件可以访问的 :
[root@hao-01 111.com]# curl -x127.0.0.1:80 111.com/admin/index.php -I
7. curl 跟非白名单来源ip访问111.com主机下的限制目录文件不能访问的 :
[root@hao-01 111.com]# curl -x192.168.223.128:80 111.com/admin/index.php -I
11.27 访问控制FilesMatch
1. 编辑虚拟主机配置文件 :
[root@hao-01 ]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
增加内容(上面的限制admin目录的内容删掉了):
<Directory /data/wwwroot/111.com>
<FilesMatch admin.php(.*)>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
2. 检测虚拟机配置文件是否有错误 :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t
3. 重新加载配置文件(不会重启服务) :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
4. curl 跟白名单来源ip 访问111.com主机下的admin.php限制文件可以访问:
[root@hao-01 ~]# curl -x127.0.0.1:80 'http://111.com/admin.php.123' -I
11.28 限定某个目录禁止解析php
访问控制 – 禁止php解析
1. 编辑虚拟主机配置文件,针对网站下的目录设定禁止解析php文件!:
[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
添加内容:
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
<FilesMatch (.*)\.php(.*)>
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
2. 创建upload目录 :
[root@hao-01 ~]# mkdir /data/wwwroot/111.com/upload
3. 创建编辑123.php测试文件到upload目录下 :
[root@hao-01 ~]# vim /data/wwwroot/111.com/upload/123.php
插入内容:
<?php
echo "123.php";
4. 检测虚拟机配置文件是否有错误 :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t
3. 启动apache2.4/httpd :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl start
4. 重新加载配置文件(不会重启服务):
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
5. curl访问111.com网站下的限定禁止解析目录upload下文件:
[root@hao-01 ~]# curl -x127.0.0.1:80 'http://111.com/upload/123.php'
11.29 限制user_agent
• user_agent可以理解为浏览器标识
• 核心配置文件内容
1. 编辑虚拟主机配置文件:
[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
插入内容:
(curl 和baidu.com是被匹配筛选的关键词,NC是区分大小写,OR是或者)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
2. 检测虚拟机配置文件是否有错误 :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t
3. 重新加载配置文件(不会重启服务) :
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
4. curl 访问测试 :
[root@hao-01 ~]# curl -x127.0.0.1:80 'http://111.com/123.php'
5. 查看以今天日期命名的访问日志 :
[root@hao-01 ~]# tail /usr/local/apache2.4/logs/111.com-access_20180313.log
6. curl -A 指定user_agent(hao hao 就是模拟指定的) :
[root@hao-01 ~]# curl -A "hao hao" -x127.0.0.1:80 'http://111.com/123.php' -I
7. 查看以今天日期命名的访问日志 :
[root@hao-01 ~]# tail /usr/local/apache2.4/logs/111.com-access_20180313.log
11.30 PHP相关配置-11.31 PHP相关配置(上下)
1. 在111网站根目录下,创建index.php,内容如下:
[root@hao-01 ~]# vim /data/wwwroot/111.com/index.php
插入内容:
<?php
phpinfo();
2. 拷贝到指定路径,重命名为 php.ini :
[root@hao-01 ~]# cp /usr/local/src/php-5.6.30/php.ini-development /usr/local/php/etc/php.ini
3. 重新加载配置文件(不会重启服务)
[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
4. 在Windows游览器中,访问111网站的index.php,就可以看到php.ini所在路径了,可以在php.ini这个文件中做些配置 :
5. 编辑 php.ini,安全选项,禁掉这些函数 :
[root@hao-01 ~]# vim /usr/local/php/etc/php.ini
指定的函数,添加上!:
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
6.编辑php.ini,安全选项,避免报警 :
[root@hao-01 ~]# vim /usr/local/php/etc/php.ini
修改内容(指定时区为重庆上海都可以):
date.timezone = Asia/Chongqing
7. 编辑php.ini,安全选项,有错误不会在游览器中显示出 :
[root@hao-01 ~]# vim /usr/local/php/etc/php.ini
修改内容:
display_errors = Off
8. 编辑php.ini,配置错误日志路径 :
[root@hao-01 ~]# vim /usr/local/php/etc/php.ini
修改指定错误日志路径:
error_log = /tmp/php_errors.log
9. 创建错误日志 :
[root@hao-01 ~]# touch /tmp/php_errors.log
10. 给错误日志增加777权限,这样有错误就可以正常写入 :
[root@hao-01 ~]# chmod 777 /tmp/php_errors.log
11. 编辑虚拟主机配置文件,限制主机的open_basedir :
[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
对应的虚拟主机,添加对应的网站来限制 :
php_admin_value open_basedir "/data/wwwroot/abc.com:/tmp/"
5. curl 跟非白名单来源ip 访问111.com主机下限制目录文件是不可以访问 :
[root@hao-01 ]# curl -x192.168.223.128:80 'http://111.com/admin.php.123' -I
11.32 PHP扩展模块安装
1. 查看模块 :
[root@hao-01~]# /usr/local/php/bin/php -m
2. 进入src目录:
[root@hao-01 ~]# cd /usr/local/src/
3.下载phpredis—develop :
[root@hao-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
4. phpredis—develop是zip压缩包,需重命名 :
(刚刚下载这个包本身就是压缩包!),重命名下 :
[root@hao-01 src]# mv develop phpredis-develop.zip
5.解压phpredis-develop.zip :
[root@hao-01 src]# unzip phpredis-develop.zip
6. 进入解压的phpredis-develop包下 :
[root@hao-01 src]# cd phpredis-develop
7. 安装依赖包 :
[root@hao-01 phpredis-develop]# yum install -y autoconf
8. 生成configure文件 :
[root@hao-01 phpredis-develop]# /usr/local/php/bin/phpize
10. 编译 :
[root@hao-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config
11. 检查上一条命令执行是否有错误 ?
[root@hao-01 phpredis-develop]# echo $?
12. make 并且 make install :
[root@hao-01 phpredis-develop]# make && make install
13. 检查上一条命令执行是否有错误 ?
[root@hao-01 phpredis-develop]# echo $?
14. 查看扩展模块存放目录(可以在php.ini中去自定义该路径)
[root@hao-01 phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir
15. 查看是否有redis.so文件 :
[root@hao-01 phpredis-develop]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226
16. 编辑php.ini配置文件
[root@hao-01 phpredis-develop]# vim /usr/local/php/etc/php.ini
在末尾添加一行配置内容 :
extension = redis.so
17. 搜索是否有redis扩展模块!!!
[root@hao-01 phpredis-develop]# /usr/local/php/bin/php -m |grep redis