Linux9.11访问控制

访问控制Directory

  需求案例:可以让公司内网可以访问到网站某文件夹。不需要其他模块支持,在站点的文件的语句外最前面设置。

Order deny, allow
deny from all
allow from 127.0.0.1

#1.看Order后面,deny 和allow哪个在前先执行哪个。
#2.不管deny和allow哪个在前,所有语句都会执行。


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

<Directory /data/wwwroot/www.123.com/>
        ... ...

</Directory>

#该案例,仅仅支持主机访问

可以通过win浏览器访问,或者curl -x源IP    访问admin文件夹发现为403

访问控制FilesMatch

  首先定义一个Directory,在该语句内设置FilesMatch,限制某些文件

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

禁止PHP解析

  在可上传文件的目录下禁止解析PHP,为了避免上传的PHP文件有木马,所以禁止该目录下面的访问解析PHP。一般可写目录、静态文件存放的目录内是不允许存放PHP。

<Directory /data/wwwroot/www.123.com/upload>
    php_admin_flag engine off    #本来加这一行就可以禁止upload下解析php
    <FilesMatch (.*).php(.*)>       #加上该模块是为了放置直接访问下载该文件夹下PHP源码
    Order allow,deny
    Deny from all
    </FilesMatch>
</Directory>

限制user_agent

  user_agent可以理解为浏览器标识。防止CC攻击,使大量肉机同时访问某站点,造成拥堵。CC攻击的规律为所有的user_agent都是一致的,且访问频率快,访问地址相同。

       使用rewrite模块

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
    RewriteRule  .*  -  [F]
</IfModule>


NC不分大小写   OR或    不加OR为并且

  curl   -A  指定user_agent    -e源IP    -x指定host   -I仅仅查看状态码

原文地址:https://www.cnblogs.com/chyuanliu/p/8516068.html