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仅仅查看状态码