LAMP架构 (Ⅲ )

1.配置防盗链

refere概念

如果你通过A网站的一个页面http://a.com/a.html里面的链接,去访问B网站的一个页面http://b.com/b.html,那么这个B网站页面的referer就是http://a.com/a.html,也就是说一个referer就是一个网址

配置防盗链先打开虚拟主机配置文件

(reverse-i-search)`vi': 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
        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对应的地址
        </FilesMatch>
     </Directory>

改完配置,还是需要检测语法 重新加载

4c98a96da704a960a64a05198ed090a51a8.jpg

检测防盗链能否正常运行

8a333eb054900653a3a2f52abeb057e7e40.jpg63c8c179f43d515a980fd979e7bddf7cf4c.jpg

总结:

1.当需要访问111.com/1.jpg这个图片的时候:直接访问访问图片;

因为已经定义为空refer: **SetEnvIfNoCase Referer "^$" local_ref **

2.通过制定的refer来访问;

已经定义111.com引用者: SetEnvIfNoCase Referer "http://111.com" local_ref
已经定义ask.apelearn.com引用者: SetEnvIfNoCase Referer "
http://ask.apelearn.com" local_ref

2.访问控制

对于一些比较重要的网站内容,除了可以使用用户认证限制访问之外,还可以通过其他一些方法做到限制,比如限制IP,也可以限制user_agent。限制IP指的是限制访问网址的来源IP,而限制user_agent,通常用来限制恶意或者不正常的请求

在虚拟主机配置文件里面,按下面内容配置

<Directory /data/wwwroot/111.com/admin>                    //增加admin目录
          Order deny,allow                                     //按先拒绝,再允许执行
          Deny from all                                        //拒绝所有       
          Allow from 127.0.0.1                                 //允许ip
    </Directory>

测试前的准备工作

d051b4a8d10ba7b83c288210fbcc9c27e1d.jpg

开始测试

e7fe93ff60e400fe8d8437e999923fa4cd1.jpgff0d26a07f8d90b8877ccb164fe26d3d376.jpg

访问控制FilesMatch

编辑虚拟主机的配置文件

<Directory /data/wwwroot/111.com>
<FilesMatch admin.php(.*)>
          Order deny,allow
          Deny from all
          Allow from 127.0.0.1
        </FilesMatch>
    </Directory>

测试配置

98085defe1f1cce51e0001948deea81676e.jpg

3.限定某个目录禁止解析PHP

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

编辑虚拟主机配置文件,进行以下配置

 <Directory /data/wwwroot/111.com/upload>         //在111.com定义upload目录
       php_admin_flag engine off                     //禁止php解析,所有访问都报403错误
       <FilesMatch (.*)\.php(.*)>                    // .php 前后匹配任意字符
          Order deny,allow                           //按禁止,允许执行
          Deny from all                              //禁止全部
       </Filesmatch>

创建目录,并把123.php复制到upload,做好测试准备工作

c51275847b0a7a9127f0a1d18ef96b9b1ea.jpg

进行测试

980fb2341f39b61c3d6e9555bfa9dc59992.jpg6aef3cb09d9916efe16ce9c854f11b18eab.jpg

总结:因此为了安全,我们必须让其根本不能访问php(匹配.php),不给其解析机会,一个程序员让PHP解析出来是个不合格的程序员

4.限定user_agent

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

更改一下配置文件

 <IfModule mod_rewrite.c>
        RewriteEngine on                                      //
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]      //匹配curl,不区分大小写,或者
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F]
   </IfModule>

直接用curl访问111.com目录下的123.php

c58a1a4ea808e3e294befd65c4bea866c38.jpg

用curl -A指定user_agent的值

4e827f87128676c4ad62c5048818938318e.jpg68807b43a57c775c3d63c0ddcc6e882e9ed.jpg

5.PHP相关配置

在111.com下,编辑index.php内容

6a66f7849978ae154cd96f677df8c643444.jpg

此时浏览器上能够显示111.com/index.php

94d5b2e64678226386d58698d16b44e7f57.jpg

此时把php.ini-development文件,复制到/usr/local/php7/etc/php.ini

eaaec195e74dd9fd8fe45d41faa8d3c94d0.jpg

再重新刷新一下浏览器

99664ff489a6eea19deb5fbdb3557e3c478.jpg

危险函数禁用

编辑/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

再次刷新浏览器发现被禁用了

0cbf03a6c55042ad1bc119b9369986b9525.jpg

为了不让显示页面上的错误信息   vim /usr/local/php7/etc/php.ini

 

display_errors = off     //把on改为off

57949242fafa8d07c7868e0db3f8dcf8b6f.jpg

data.timezone

5e309ce2d6658c15c485ecf8f8ce4c4df3f.jpg

设置php的错误日志

虽然免除了危险,但是对于我们管理员来说,这个页面,不友好,无法判断此页面;此时需要设置错误日志

打开php.ini配置文件

640bb1381b48cb54a26d2197ca8863c7504.jpg

550c61edca7e02161899767836aaf7a67e2.jpg

定义错误级别error_reporting

error_reporting = E_ALL

检测配置重新加载

3b97c2787d214c895a805d1f9e8c1722769.jpg

查看看这个错误日志的权限,发现为daemon;说明跟httpd配置文件相关

d288b521c51b34a2b6748914363bae98491.jpg

查看错误日志

0dc311f4996e825eb3d850b0b8bae7fe824.jpg

open_basedir配置

在php配置文件中设置open_basedi

e2943256dfebc5b9f053628a5febab9738d.jpg269359a96612d7b8dc004495660cf3c1099.jpg

在php配置文件中,把错误的目录1111.com改为111.com

0471f7b924c5db4c7c01e0340b8e4c7baee.jpg

针对不同的虚拟主机限定不同的open_basedir

[root@localhost php-7.1.6]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.con

061fec3ff1107f38dc9b7b683018c15bc20.jpg

6.PHP扩展模块

编译httpd时,有涉及动态和静态模块,PHP也一样有静态与动态之分,之前所涉及到的PHP安装都全部为静态,并没有任何动态的模块,所谓动态,就是一个独立存在的.so文件,在httpd中PHP就是以动态模块的形式被加载的。PHP一旦编译完成后,要想再增加一个功能的话,要么重新编译PHP,要么直接编译一个扩展模块(生成一个.so文件),然后在php.ini中配置一下,就可以被加载使用了

下载源码包

[root@localhost src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop

2e07f4e42ee18dd690327c3f398a378bfcb.jpg

改名并解压

mv develop phpredis-develop.zip
 unzip phpredis-develop.zip

进行编译

因为没有./configure 先用PHP7先生成./configure

[root@localhost phpredis-develop]# /usr/local/php7/bin/phpize

5f76d29e57e38c4e960199196ea70b4fb3b.jpg

 yum install -y autoconf

0def924923c98816c1f2a680537d15f3d23.jpg52089a652149a27994c0b9c76155e09ee43.jpg

下面进行编译

c3f00f696770cf7ded225fc6e1abc574a96.jpg

[root@localhost phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so

此时已经生成了.so文件但是加载模块并没有显示redis.so模块所以我们需要配置一下文件

[root@localhost phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir
查看扩展模块目录

编辑配置文件把redis模块给加载进去

963e8494959417b8d9c535d77d82f730846.jpg

/usr/local/php/bin/php -m | grep redis    //查看是否加载了redis
redis

 

转载于:https://my.oschina.net/u/4000361/blog/2980289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值