11.29 限制user_agent

访问控制 – user_agent目录概要

  • 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

常用知识介绍

  • 有时候,网站会受到一种叫 cc 攻击,CC攻击就是黑客,通过软件,肉鸡同时去访问一个站点,超过服务器的并发,就会导致站点宕机;通过肉鸡,软件去访问站点,就是普通的访问,没有什么特殊的,只是让站点超过并发导致严重超负荷而宕机,所以没办法去进行控制;所谓CC攻击都会有一个规律的特征,就是user_agent是一致的,比如同一个IP、同一个标识、同一个地址;遇到这种规律的user_agent频繁访问的情况我们就可以判定他就是CC攻击,我们就可以通过限制他的user_agent 减轻服务器压力,只需要让他从正常访问的200,限制为403,就能减轻服务器的压力,因为403仅仅是一个请求,只会使用到很少的带宽,毕竟他没有牵扯到php 和mysql

  • cc攻击

    • 攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。
    • CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。
    • 一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的数据容量有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
    • CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面).这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。
  • 肉鸡 (受黑客远程控制的电脑)

    • 肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用”灰鸽子”等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。
    • 肉鸡通常被用作DDOS攻击。可以是各种系统,如windows、linux、unix等,更可以是一家公司、企业、学校甚至是政府军队的服务器。

访问控制 – user_agent

  1. 打开虚拟主机配置文件
    • 在两个条件中用OR做了一个连接符,理解起来就是 匹配第一条规则或者第二条规则;如果不加OR就是并且的意思,必须两个条件同时匹配以后才会执行
    • NC表示忽略大小写,因为user_agent,可能会是大写的,比如:Mozilla/5.0,他首字母就是大写的
    • RewriteRule .* - [F] 这里的F表示Forbidden
[root@hf-01 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]        //条件
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]        //条件
        RewriteRule  .*  -  [F]
    </IfModule>
  1. 然后检查是否存在语法错误,并重新加载配置文件
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@hf-01 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@hf-01 111.com]# 
  1. 去访问的时候,会显示403,这是因为限制了user_agent
[root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/upload/123.php' -I
HTTP/1.1 403 Forbidden
Date: Tue, 26 Dec 2017 20:52:15 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 111.com]# curl -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 403 Forbidden
Date: Tue, 26 Dec 2017 20:53:30 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@hf-01 111.com]# 
  1. 查看访问日志
[root@hf-01 logs]# tail -5 /usr/local/apache2.4/logs/123.com-access_20171227.log
192.168.74.1 - - [27/Dec/2017:04:32:09 +0800] "GET /123.php HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.74.1 - - [27/Dec/2017:04:32:10 +0800] "GET /123.php HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.74.1 - - [27/Dec/2017:04:32:17 +0800] "GET /upload/123.php HTTP/1.1" 403 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [27/Dec/2017:04:52:15 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:04:53:30 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
[root@hf-01 logs]# 

  1. 测试是否是因为user_agent才会被信任的
  2. 首先自定义user_agent
  • curl -A参数,去自定义
模拟user_agent,去访问会看到状态码为200 可以正常访问
[root@hf-01 111.com]# curl -A "hanfeng hanfeng" -x127.0.0.1:80 '111.com/123.php' -I
HTTP/1.1 200 OK
Date: Tue, 26 Dec 2017 21:17:47 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@hf-01 111.com]# curl -A "hanfeng hanfeng" -x127.0.0.1:80 '111.com/123.php'
123.php[root@hf-01 111.com]# 
[root@hf-01 111.com]#
  1. 查看访问日志,会看到user_agent是hanfeng hanfeng
[root@hf-01 111.com]# !tail
tail -5 /usr/local/apache2.4/logs/123.com-access_20171227.log
192.168.74.1 - - [27/Dec/2017:04:32:17 +0800] "GET /upload/123.php HTTP/1.1" 403 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [27/Dec/2017:04:52:15 +0800] "HEAD HTTP://111.com/upload/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:04:53:30 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [27/Dec/2017:05:17:47 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 - "-" "hanfeng hanfeng"
127.0.0.1 - - [27/Dec/2017:05:19:40 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "hanfeng hanfeng"
[root@hf-01 111.com]# 

curl命令

  • curl命令是一个利用URL规则在命令行下工作的文件传输工具
    • -A ,指定user-agent,设置用户代理发送给服务器
    • -e ,指定referer,就是来源网址
    • -I ,仅仅查看它的状态码
    • -x ,在指定的端口上使用HTTP代理

转载于:https://my.oschina.net/u/3707314/blog/1595067

07-13 10:08:02.266 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread: Timed out waiting for request 07-13 10:08:02.266 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread waiting for request 07-13 10:08:02.268 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.273 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.276 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread: Timed out waiting for request 07-13 10:08:02.277 403 12194 V EmulatedCamera_FakeCamera3: threadLoop: ReadoutThread waiting for request 07-13 10:08:02.278 401 12178 I modules.usbaudio.audio_hal: in_read ret 0 07-13 10:08:02.286 716 12304 E ActivityManager: ANR in com.winew.ddcsx (com.winew.ddcsx/.activity.MainActivity) 07-13 10:08:02.286 716 12304 E ActivityManager: PID: 11129 07-13 10:08:02.286 716 12304 E ActivityManager: Reason: Input dispatching timed out (1942a1b com.winew.ddcsx/com.winew.ddcsx.activity.MainActivity (server) is not responding. Waited 5002ms for MotionEvent(deviceId=11, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.5, yPrecision=15.2, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (1365.8, 1340.9)]), policyFlags=0x62000000) 07-13 10:08:02.286 716 12304 E ActivityManager: Parent: com.winew.ddcsx/.activity.MainActivity 07-13 10:08:02.286 716 12304 E ActivityManager: Load: 12.42 / 11.29 / 12.0 07-13 10:08:02.286 716 12304 E ActivityManager: ----- Output from /proc/pressure/memory ----- 07-13 10:08:02.286 716 12304 E ActivityManager: some avg10=0.00 avg60=0.00 avg300=0.00 total=249698 07-13 10:08:02.286 716 12304 E ActivityManager: full avg10=0.00 avg60=0.00 avg300=0.00 total=74789 07-13 10:08:02.286 716 12304 E ActivityManager: ----- End output from /proc/pressure/memory -----
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值