0510预习笔记和课堂笔记--LAMP(下)

任务列表:

11.25 配置防盗链
11.26 访问控制Directory
11.27 访问控制FilesMatch
11.28 限定某个目录禁止解析php
11.29 限制user_agent
11.30/11.31 php相关配置
11.32 php扩展模块装安
扩展
几种限制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

预习笔记

配置Apache防盗链

1.配置虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在这里插入图片描述
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://111.com" local_ref // 定义允许访问链接的referer
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref //定义允许访问链接的referer
SetEnvIfNoCase Referer "^$" local_ref //定义空referer设为白名单,即直接访问的地址
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> //定义匹配的类型
Order Allow,Deny //白名单地址allow,其他deny
Allow from env=local_ref // 白名单为local_ref,referer定义的地址
</FilesMatch>
</Directory>

/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置

测试效果
curl -e “http://ask.apelearn.com” 自定义referer
curl -e “http://ask.apelearn.com” -x127.0.0.1:80 111.com/111.png -I
指定referer为ask.apelearn.com访问111.com/111.png被允许
在这里插入图片描述
指定referer为www.baidu.com访问111.com/111.png被拒绝
在这里插入图片描述

Apache访问控制

访问控制Directory

通过来源IP限制不正常的请求
配置虚拟主机配置文件
在这里插入图片描述
<Directory /data/wwwroot/111.com/admin>//配置限制的目录
Order deny,allow //先拒绝,再允许执行
Deny from all //拒绝所有
Allow from 127.0.0.1 //允许的ip
</Directory>

/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
通过127.0.0.1访问,成功
在这里插入图片描述
通过其他IP访问,被拒绝。
在这里插入图片描述

访问控制FilesMatch

配置虚拟主机配置文件
既要匹配文件,又要限制IP
在这里插入图片描述
<Directory /data/wwwroot/111.com>//在111.com目录下
<Filesmatch admin.php(.*)>//文件匹配admin.php后面跟任意的字符
Order deny,allow
Deny from all
Allow from 127.0.0.1 //只允许127.0.0.1访问
</Filesmatch>
</Directory>

/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
不允许的IP访问非被保护的内容,成功
在这里插入图片描述
不允许的IP访问被保护的内容,拒绝
在这里插入图片描述
被允许的IP访问被保护的内容,成功
在这里插入图片描述

限定某个目录禁止解析php

有些站点和论坛是允许上传图片到服务器,用户上传一些php或者js到服务器,然后被我们执行加载,从而对数据造成威胁。 为了避免这种事情的发生,需要限制上传类型。

修改虚拟主机配置文件
在这里插入图片描述
<Directory /data/wwwroot/abc.com/upload> //在111.com定义upload目录
php_admin_flag engine off//禁止php解析,所有访问都报403错误
<FilesMatch (.*)\.php(.*)> // .php 前后匹配任意字符
Order deny,allow//先执行禁止,后执行允许
Deny from all //禁止全部
</Filesmatch>
</Directory>

/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
访问upload下的php文件显示403
在这里插入图片描述
注释掉filematch部分
在这里插入图片描述
再次测试,虽然访问成功,但是PHP无法解析,直接显示源代码
在这里插入图片描述

限制user_agent

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

修改虚拟主机配置文件
在这里插入图片描述
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]//匹配curl,NC表示不区分大小写,OR表示或者
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>

/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
使用curl测试,提示被拒绝
在这里插入图片描述
用curl -A指定user_agent的值
使用被禁止的user_agent,访问被禁止,其他则访问成功。
在这里插入图片描述

PHP配置

php配置文件

在111.com下,编辑index.php
<?php
phpinfo();

查看index.php,显示配置文件并未加载
在这里插入图片描述

把php.ini-development文件,复制到/usr/local/php7/etc/php.ini,并重新刷新index.php
cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件
在这里插入图片描述

禁用危险函数
编辑配置文件/usr/local/php7/etc/php.ini
搜索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,phpinfo
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件
刷新index.php,此时已无法解析php,但显示了文件的具体路径
在这里插入图片描述
把配置文件中的display_errors改为OFF,此时文件路径不再显示
搜索display
在这里插入图片描述
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件
刷新index.php
在这里插入图片描述
设置php的错误日志
修改PHP配置文件,搜索log_errors
log_errors = On //需要执行,且为on
error_log = /tmp/php_errors.log //定义错误日志目录
在这里插入图片描述
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
查看错误日志
在这里插入图片描述
open_basedir配置
如果有一台服务器跑了很多个站点,其中就有一个站的程序写的很烂,漏洞百出,很容易被黑,一旦该站点被黑,整个服务器就会沦陷,其它站点同样也会被黑。为了防止这样的事情发生,我们对PHP进行配置
在php配置文件中设置open_basedir,把111.com故意写成1111.com
在这里插入图片描述
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
此时已无法访问
在这里插入图片描述
查看日志提示,根据配置的路径找不到文件
在这里插入图片描述
我们将配置文件的open_basedir改为正确的,访问正常
在这里插入图片描述
针对不同的虚拟主机限定不同的open_basedir
删除php.ini中open_basedir的配置
设置虚拟主机配置文件
设置vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在这里插入图片描述
/usr/local/apache2.4/bin/apachectl -t 检查配置
/usr/local/apache2.4/bin/apachectl graceful 重新加载配置
在这里插入图片描述

PHP扩展模块安装

下载源码包(redis为例)
进入src目录 cd /usr/local/src
wget https://codeload.github.com/phpredis/phpredis/zip/develop

改名下载下来的文件
mv develop phpredis-develop.zip

解压文件
unzip phpredis-develop.zip

进入文件目录,生成configure文件
cd phpredis-develop/
/usr/local/php7/bin/phpize //生成configure文件
提示缺少autoconf
在这里插入图片描述
安装autoconf,yum install -y autoconf
安装完成后继续生成configure文件,/usr/local/php7/bin/phpize //生成configure文件
生成成功
在这里插入图片描述
配置、编译,安装
./configure --with-php-config=/usr/local/php7/bin/php-config
在这里插入图片描述
make
在这里插入图片描述
make install
在这里插入图片描述
查看扩展模块存放目录
/usr/local/php7/bin/php -i |grep extension_dir
在这里插入图片描述
在php.ini加载一条扩展语句
vim /usr/local/php7/etc/php.ini
在这里插入图片描述
在这里插入图片描述

编译PHP自带的模块
php7的源码包中,有很多自带的源码包,直接编译即可!
ls /usr/local/src/php-7.1.6/ext在这里插入图片描述
编译 zip模块
cd ls /usr/local/src/php-7.1.6/ext/zip
生成configure文件
/usr/local/php7/bin/phpize
配置、编译,安装
./configure --with-php-config=/usr/local/php7/bin/php-config
make
make isntall
查看目录
/usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
在这里插入图片描述

课堂笔记

使用pecl安装PHP扩展模块
/usr/local/php/bin/
pecl install

猜你喜欢

转载自blog.csdn.net/weixin_43945846/article/details/90079981
今日推荐