LAMP 特性2

防盗链 访问控制


Ctrl+F5 删缓存刷新


HTTP请求中会包含来自哪个url的点击来源,通过这个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>

image

[root@localhost ~]# curl -e"http://www.xxoo.com" shuxue.com/3g.jpg -I
HTTP/1.1 200 OK
Date: Fri, 28 Dec 2018 02:25:16 GMT
Server: Apache/2.4.37 (Unix) PHP/5.5.38
Last-Modified: Fri, 21 Sep 2018 00:38:34 GMT
ETag: "10d53-57656dc02f680"
Accept-Ranges: bytes
Content-Length: 68947
Cache-Control: max-age=86400
Expires: Sat, 29 Dec 2018 02:25:16 GMT
Content-Type: image/jpeg

[root@localhost ~]# curl -e"http://www.111xxoo.com" shuxue.com/3g.jpg -I
HTTP/1.1 403 Forbidden
Date: Fri, 28 Dec 2018 02:25:27 GMT
Server: Apache/2.4.37 (Unix) PHP/5.5.38
Content-Type: text/html; charset=iso-8859-1

管理页面虽然有认证功能,但是防不住有人知道密码,所以要再加个访问控制列表!curl出来的网页状态码为403

配置案例如下:

  <Directory /data/wwwroot/www.123.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

image

像上图一样,防盗链里定义的规则。order定义的顺序是先allow然后deny。然后allow动作是有的,deny动作没有。所以整个规则就是只allow tag10。但是如果你在deny加了动作那就不一样了。

测试现象

[root@localhost ~]# !curl
curl -e"http://www.111xxoo.com" shuxue.com/3g.jpg -I
HTTP/1.1 403 Forbidden
Date: Fri, 28 Dec 2018 02:45:28 GMT
Server: Apache/2.4.37 (Unix) PHP/5.5.38
Content-Type: text/html; charset=iso-8859-1

[root@localhost ~]# curl -e"http://www.xxoo.com" shuxue.com/3g.jpg -I
HTTP/1.1 403 Forbidden
Date: Fri, 28 Dec 2018 02:45:41 GMT
Server: Apache/2.4.37 (Unix) PHP/5.5.38
Content-Type: text/html; charset=iso-8859-1

连先前allow的都被deny了。所以现在的规则是deny all。

访问控制 FileMatch 匹配关键字

功能和Directory一样,目录形式比较固定,但是有些url里面包含很多特殊符号 比如:admin*/&^?等等。所以可以使用filematch。

配置案例如下:

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

curl -x127.0.0.1:80 www.123.com/admin.phpdfdfeijfsefg

禁止php解析

如果有一个目录,开放上传文件权限,允许上传图片,有些人上传了php的文件。然后系统就会执行该php脚本,最后会运行一些恶意程序!一般静态文件存储目录下不允许存放php。

配置案例如下:

    <Directory /data/wwwroot/www.123.com/upload>
        php_admin_flag engine off
    </Directory>

image

测试现象

[root@localhost httpd]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@localhost httpd]# /usr/local/httpd/bin/apachectl graceful
[root@localhost httpd]# curl -x127.0.0.1:80 shuxue.com/111.php 
<?php
phpinfo();

访问控制 – user_agent 浏览器标识

有时候网站受到ddos攻击一样,超过并发连接数。有些最多只支持100个并发连接。所以就挂了!还有一些蜘蛛在爬。

配置案例如下:

   <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]  //or或者的意思,表示既匹配curl又匹配baidu。NC表示忽略大小写
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F]     //forbidden的意思 403
    </IfModule>
 curl -A "123123" -x127.0.0.1:80 'http://111.com/123.php'  // -A 指定user_agent

image

测试现象:

[root@localhost httpd]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@localhost httpd]# curl -x127.0.0.1:80 yuwen.com/111.php
homepage
[root@localhost httpd]# /usr/local/httpd/bin/apachectl graceful
[root@localhost httpd]# curl -x127.0.0.1:80 yuwen.com/111.php
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /111.php
on this server.<br />
</p>
</body></html>
[root@localhost httpd]# curl -A"huawei" -x127.0.0.1:80 yuwen.com/111.php
homepage

PHP相关配置

上面这些内容都是关于httpd apache的配置。接下来是php的相关配置!php是负责解析的,但是有些危险函数要禁掉,不然会威胁系统安全的!

==查看php配置文件位置==

 /usr/local/php/bin/php -i|grep -i "loaded configuration file"  //不一定正确!phpinfo最准确
 如果没有配置文件,cp /usr/local/src/php-5.1.6/php.ini-production /usr/local/php5/etc/php.ini

image

date.timezone  //时区要改过来,不然会出现乱码!

image

禁止危险函数:

禁止掉之后,禁止解析php的engine也就没什么用了!

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 

image

 display_errors,log_errors,error_log, error_reporting, 

错误信息要关掉,不然会显示到浏览器上!

image

关闭显示错误信息后要打开错误日志功能,配置错误日志存放目录,错误日志级别

image

image

php7默认是E_ALL,实际生产中E_ALL & ~E_NOTICE 即可!

image

open_basedir   //假如A网站被黑,不能再让黑客通过A跳板到其他网站!php.ini只能在全局做精准度不高,所以可以在httpd的虚拟主机里进行限制!
php_admin_value open_basedir "/data/dota.com:/tmp/"

限定该php,tmp为临时文件存放区

image


php发现少了一个模块,需要增加模块!

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

==/usr/local/http/bin/pecl install redis==可以轻松得添加扩展模块!

转载于:https://my.oschina.net/u/3997678/blog/2994898

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值