2018.9.8日,预习笔记,LAMP架构(三)

  1. 配置防盗链
  2. 访问控制Directory
  3. 访问控制FilesMatch
  4. 限定某个目录禁止解析php
  5. 限制user_agent
  6. PHP相关配置
  7. PHP扩展模块安装
  8. 扩展
    几种限制ip的方法 http://ask.apelearn.com/question/6519
    apache 自定义header http://ask.apelearn.com/question/830
    apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556
    apache开启压缩 http://ask.apelearn.com/question/5528
    apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
    apache options参数 http://www.365mini.com/page/apache-options-directive.htm
    apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
    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
    php开启短标签 http://ask.apelearn.com/question/120
    php.ini详解 http://legolas.blog.51cto.com/2682485/493917

 

一.配置防盗链

f334161a24139500cdbca1d8c4e446489eb.jpg

  • 通过限制referer来实现防盗链的功能  
  • 配置文件增加如下内容  
  • <Directory /data/wwwroot/www.123.com>        
  • SetEnvIfNoCase Referer "http://www.123.com" local_ref        
  • SetEnvIfNoCase Referer "http://123.com" local_ref        
  • SetEnvIfNoCase Referer "^$" local_ref        
  • <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">  
  • Order Allow,Deny            
  • Allow from env=local_ref        
  • </filesmatch>    
  • </Directory>  
  • curl -e "http://www.aminglinux.com/123.html" 自定义referer 测试

示例一:

  • 如下配置一下

ddfb16a27b7e2231c2ce7176cb2c2ded11d.jpg

  • 重新加载一下配置文件

f21295986f2c6e15c8b56828609c37f5de3.jpg

  • 测试

8f08a8fe6c914be37dbad3464c92f2ad708.jpg

  • -e 用来指定referer,

 

 

二.访问控制Directory

 

1628a6633dc8e44c3b81ecf5b7f7fb21b16.jpg

  • 核心配置文件内容  
  • <Directory /data/wwwroot/www.123.com/admin/>        
  • Order deny,allow        
  • Deny from all        
  • Allow from 127.0.0.1    
  • </Directory>  
  • curl测试状态码为403则被限制访问了
  • 这个是以目录的形式来设置的

示例一:

  • 编辑

63b3ad25b3eee23fea8df4399b22f9651c9.jpg

  • 如下配置一下

f740382274ecd2cf1f35465793d3f63c936.jpg

  • 重新加载

5bd15d678d63dade31d1c1555fdc19a5ad6.jpg

  • 测试
  • ok

a0709f40004514abf5cf6a4584dc9ab951d.jpg

  • no

5d77a413ebf9c0f51edbd6b47e301c4a1bd.jpg

  • 查看一下日志

d3958ec74821502ca5377721f5cb204720d.jpg

  • 目录的访问路径要写绝对路径

 

三.访问控制FilesMatch

1125344c4244ba24fc0a018882ca06eb5bc.jpg

  • 核心配置文件内容
  • <Directory /data/wwwroot/www.123.com>     <FilesMatch  "admin.php(.*)">        
  • Order deny,allow        
  • Deny from all        
  • Allow from 127.0.0.1    
  • </FilesMatch>
  • </Directory>
  • 这个是以文件的形式设置的

示例一:

  • 如下配置一下

2ce9ad1554da0c8b7031a2497a3e1bec4ee.jpg

  • 重新加载一下配置文件

5388fac0af74d95cdf2adef9b87e886481c.jpg

  • 测试

dbd616008c40bfe5c3944c8c12d77e27573.jpg

  • 404表示已经允许访问

 

四.限定某个目录禁止解析php

270670e87b5ce9da967f6a7c3f6010c8203.jpg

  • 核心配置文件内容    
  • <Directory /data/wwwroot/www.123.com/upload>         php_admin_flag engine off    
  • </Directory>  
  • curl测试时直接返回了php源代码,并未解析

示例一:

  • 如下配置一下

f516eef1246625ca7dea856f3ed96bfd4ee.jpg

  • mkdir /data/wwwroot/www.123.com/upload 创建一个图片上传目录/upload/
  • 重新加载一下

a21b6443a1df8c6379c5fdf1f67ff2513aa.jpg

  • 测试

d80f28cae4d8ab0f83e7e4d610a5f8e363c.jpg

 

五.限制user_agent

32f5a09ce0ccb40f62c38cbe2a7179a4b19.jpg

  • user_agent可以理解为浏览器标识  
  • 核心配置文件内容    
  • <IfModule mod_rewrite.c>        
  • RewriteEngine on        
  • RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]       
  • RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]  
  • RewriteRule  .*  -  [F]    
  • </IfModule>  
  • curl -A "123123" 指定user_agent

示例一:

  • 如下配置一下

1068138c32212fe12ae194893a56ccff7ef.jpg

  • 重新加载一下配置文件

22ce134eb4459d803440cc217c77d5297ca.jpg

  • 测试

271612f4d393a3e203ffcfcbaf80cd0c6a5.jpg

  • curl -A "123123" 指定user_agent

21d0df6e8bb4a2c8a807ee9d51ad1c37334.jpg

 

 

六.PHP相关配置

aa96310dbed5e704afcf53d42494127d29e.jpg

  • 查看php配置文件位置  
  • /usr/local/php/bin/php -i|grep -i "loaded configuration file"  
  • date.timezone  定义它的时区
  • 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
  • error_log,log_errors,display_errors,error_reporting  日志相关
  • open_basedir  安全相关
  • php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

示例一:

  • 创建一个PHP文件

b26882d6da0f5e49bc5807ecd8e9b9d349d.jpg

e64057591d416f255c60879c03abaf1d4f5.jpg

  • 在浏览器打开

0c2788ef69c31b7b90d990d7f2c67ddf241.jpg

  • 未加载,则去源码包拷贝一份

a837407d1723847ec5f1dcd46ed3cecf6c7.jpg

  • 重新加载一下配置文件

e84b46829ea0e6bedda23f60a0c966f7b8d.jpg

  • 编辑一下

abff1aa18c695b4f5e8e6cc6b4f50ffa48d.jpg

  • 添加内容,限制安全函数

6c53605ed5424043fb085d69c2532291f43.jpg

  • 再加上phpinfo
  • 重新加载一下配置文件
  • 测试,再次访问就打不开了

b48b604cd1a26bcedba5c6f4cdde756340f.jpg

示例二:

  • 定义它的时区

6b38c92fa2c9bbf5d13b0c17badc933d7b3.jpg

示例三:日志相关

  • 定义错误信息是否要显示在浏览

0c7b11bdec8e7449d74173c17668b68876e.jpg

  • 配置错误日志

621ad9427ece2e8ed7f38a23c9cbcacf1c8.jpg

  • 定义日志记录的严谨度(级别)

3b9a28ef8ec540c3f39f305e4306910f43d.jpg

  • 重新加载一下配置文件

36540beaece144bc75fdf5410285fcfc7f6.jpg

  • 查看是否有生成这个文件

597246d9340d6d831d558fe92cabb79ac46.jpg

  • 查看属组

75b05a59c38a1fa89cc96ff5b202f717395.jpg

  • 查看定义所在目录属组和写权限是否是Apache(httpd)的

486edc05a29dbaf30ae29a3579b36876cfd.jpg

  • 也可以定义之前,先设定文件的权限

ffc57945eecfa87f45a59fd328bca66f91a.jpg

 

示例四:安全相关,限定分别隔离网站

  • 定义php.ini 这是针对所有网站的
  • 编辑该文件

59892d0a375b1eb373cc672508bd8fd1525.jpg

  • 做如下配置

8ae32b277f3077df05fcba04e40d0e2ff03.jpg

  • 重新加载配置文件,并测试一下

9cd1676823f66b72fac3a8768a7096c641d.jpg

示例五:    

  • 编辑虚拟主机配置文件

e610869d833b369fd7b4861a8bff3b5f8e3.jpg

  • 写如下配置

6332cd3c95e844c7b1fcdd0d513c299c0b9.jpg

  • 重新加载配置文件,并测试

997d0befc34c39aff1441e416e7e5d4ce68.jpg

 

 

七.PHP扩展模块安装

0fe48e1c6425d751c80da1f5042e5b2a689.jpg

示例一:编译安装一个扩展模块

  • /usr/local/php/bin/php -m //查看模块  
  • 下面安装一个redis的模块  
  • cd /usr/local/src/  进入该目录下
  • wget https://codeload.github.com/phpredis/phpredis/zip/develop  下载包
  • mv develop phpredis-develop.zip  包改名
  • unzip phpredis-develop.zip  解压包
  • cd phpredis-develop  进入该目录下
  • /usr/local/php/bin/phpize //生成configure文件  
  • ./configure --with-php-config=/usr/local/php/bin/php-config  编译一下

02a633f938b4c3fde4326de1ca0827e0dec.jpg

  • make && make install  
  • /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录
  • 我们可以在php.ini中去自定义该路径  
  • vim /usr/local/php/etc/php.ini  //增加一行配置(可以放到文件最后一行)

ec91700a87df5553fb01ad7c48f936148ff.jpg

  • extension = redis.so  
  • 查看一下是否加载

7f370e97ee4e0292a6a37a5b784d382232a.jpg

 

示例二:源码包有的情况下编译安装模块

  •  cd /usr/local/src/php-7.1.6/ 进入到PHP源码包里
  • cd ext/ 进入该目录下
  • ls 查看有哪些可以编译安装的模块
  • PHP源码包ext目录下有的话,可以直接去编译

5cbfeba726f58ccef052667f3d9d146715a.jpg

  • /usr/local/php7/bin/php -m |grep zip 查看你想要的模块是否安装
  • 没有安装的话,cd zip/ 进入你想要安装的扩展模块,编译
  • /usr/local/php7/bin/phpize 执行命令,获取一个configure
  • ./configure --with-php-config=/usr/local/php7/bin/php-config 执行命令,编译文件
  • echo $?
  • make
  • echo $?
  • make insatll 
  • /usr/local/php7/bin/php -i |grep -i extension_dir 查看扩展模块存放目录

1af066343987c4476b41bd528f85456b22f.jpg

  • ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303 查看一下

5f4e8a601db0a13f90e7970e9495e125d4c.jpg

  • vi /usr/local/php7/etc/php.ini 我们可以在php.ini中去自定义该路径,//增加一行配置(可以放到文件最后一行)

fdfcf7b6b5798ab49b2e3c3dd3e5a52c94a.jpg

  • /usr/local/php7/bin/php -m |grep zip 查看一下模块是否加载

50878efcce838857ece7abdbf64d0c75694.jpg

 

八.扩展

 

  1. 几种限制ip的方法 http://ask.apelearn.com/question/6519
  2. apache 自定义header http://ask.apelearn.com/question/830
  3. apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556
  4. apache开启压缩 http://ask.apelearn.com/question/5528
  5. apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
  6. apache options参数 http://www.365mini.com/page/apache-options-directive.htm
  7. apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
  8. apache 配置https 支持ssl http://ask.apelearn.com/question/1029
  9. apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
  10. apache rewrite 出现死循环 http://ask.apelearn.com/question/1043
  11. php错误日志级别参考 http://ask.apelearn.com/question/6973
  12. php开启短标签 http://ask.apelearn.com/question/120
  13. php.ini详解 http://legolas.blog.51cto.com/2682485/493917

 

转载于:https://my.oschina.net/u/3912766/blog/2050128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值