国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

遇到CC攻擊你會怎么做?

阿銘linux ? 來源:阿銘linux ? 作者:阿銘linux ? 2022-12-05 11:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在我的運維生涯里,出現最普遍的問題就是網站訪問慢甚至訪問不到,到服務器上查看后得出的結論是,這個網站被CC攻擊了。有的朋友可能不知道什么叫CC攻擊,在這里我簡單介紹一下。CC攻擊屬于DDos攻擊的一種,攻擊者會利用大量“肉雞”對攻擊目標網站發起請求,并且頻率很快,這樣會導致目標網站的服務器承受不住而癱瘓。
CC攻擊雖然看起來跟正常的訪問幾乎沒有什么區別,但如果我們仔細分析訪問日志還是可以找到一些線索,比如某個IP訪問頻次很高,或者某幾個IP的user_agent是固定的等等特性,有的甚至會去模仿正規的搜索引擎,比如,把自己偽裝為百度的“蜘蛛爬蟲”。當遇到CC攻擊時,只要你肯花費一些精力來分析訪問日志,終究是可以找出發起CC攻擊的真兇,然后我們只要封掉它們的IP就萬事大吉了。本案例的需求是這樣的:
1)每分鐘分析一次訪問日志/data/logs/access_log,日志片段如下:
180.98.113.151 - [19/Sep/201830:07 +0800]  "/uc_server/avatar.php?uid=1145811&size=middle" 301 "GET  HTTP/1.1" "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D15 MAGAPPX|4.1.2-4.1.0-41|iPhone OS 9.2.1 iPhone 6|wenyou|C6C25422-279C-4337-8E10-F588D577B9D7|da97ede5be797f79b96d6761bf858632|426ef86c3fc2359dc90468f7bdd0f5e9|c64f2225ec641231cd612bbe08f2b40d" 
61.227.224.229 - [19/Sep/201830:07 +0800]  "/misc.php?mod=ranklist&type=member&view=post" 200 "GET  HTTP/1.1" "http://www.wenyou.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" 
183.207.95.145  [19/Sep/201830:07 +0800]  "/uc_server/avatar.php?uid=1323875&size=middle" 301 "GET  HTTP/1.1" "http://app.yikaidai.com/mag/circle/v1/forum/threadViewPage?tid=3446714&circle_id=&themecolor=1aadfa" "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0_3 like Mac OS X) AppleWebKit/604.1.38 "
114.230.251.50 - [19/Sep/201830:07 +0800]  "/core/attachment/attachment/img?url=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg" 302 "GET HTTP/1.1" "https://app.yikai.com/mag/info/v1/info/infoView?id=55855&themecolor=1aadfa" "Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) "
61.227.224.229 - [19/Sep/201830:07 +0800]  "/misc.php?mod=ranklist&type=member&view=onlinetime" 200 "GET HTTP/1.1" "http://www.wenyou.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" 
2)把訪問量高于100的IP給封掉3)封過的IP都要記錄到一個日志中4)每隔30分鐘檢查一次被封的IP,把沒有訪問量或者訪問量很少的IP解封5)解封的IP記錄到另外一個日志中知識點一:awk用法在shell腳本中,awk出現概率是極高的,因為它在處理字符串上有很強的能力。先來看一個小例子:
# awk -F ':' '$3>500 {print $1,$3}' /etc/passwd
systemd-bus-proxy 999
polkitd 998
chrony 997
user1 1000
說明:awk最核心的功能是分段,可以用-F選項指定一個分隔符,然后針對某一段字符進行處理,本例中用':'作為分隔符,去找第3段大于500的行,然后把第1段和第3段打印出來。在awk中可以使用>, <, >=, <=, ==, !=等邏輯判斷的符號,這和shell是有差異的。本例中>后面的500一定不要加雙引號,否則它就不以數字作為比較對象了,而是把500當成是字符串,結果自然就不一樣了。如下:
# awk -F ':' '$3>"500" {print $1,$3}' /etc/passwd
shutdown 6
halt 7
mail 8
nobody 99
systemd-bus-proxy 999
dbus 81
polkitd 998
tss 59
postfix 89
sshd 74
chrony 997
awk的功能不止于此,它實際上跟shell一樣屬于一門腳本語言,可以寫腳本。它的作者設計它的初衷是為了去格式化輸出文本,它可以滿足各種復雜的格式需求,不過我們平時寫shell腳本時,僅僅把它作為一個命令來處理字符串,下面我列幾個常見的用法(以下所有演示文件都使用1.txt)。1)截取指定段
# awk -F ':|#' '{print $2}' 1.txt
說明:分隔符可以是一個正則表達式,本例中的分隔符可以是':'也可以是'#'。2)匹配字符后字符串
# awk -F ':' '$1 ~ "abc"' 1.txt
說明:過濾出第一段包含abc的行,其中這里的abc可以是一個正則表達式,例如:
# awk -F ':' '$1 ~ "^ro+"' 1.txt
說明:^表示開頭,+表示+前面的字符至少有1個,所以"^ro+"可以匹配的字符串有:ro, roo, rooo...3)多個語句同時使用
# awk -F ':' '$1 ~ "root" {print $1,$3}; $3>100 {print $1,$2}' 1.txt
4)多個條件
# awk '$3<100 && $7 ~ "bash" {print $0}'  1.txt
說明:如果不指定分隔符,則以空白字符作為分割符,在awk中可以用&&表示并且,用||表示或者。$0會輸出整行。5)內置變量
# awk -F ':' '{print NF,NR}' 1.txt
說明:NF為段數,NR為行數6)數學運算
# awk -F ':' '$7=$3+$4 {print $0}' 1.txt
因為$7的值被重新定義了,所以打印$0時,并不會包含分隔符,當然也可以定義分隔符:
# awk -F ':' -v OFS='#' '$7=$3+$4 {print $0}' 1.txt
說明:用-v定義變量,這個OFS也是一個內置變量,它表示輸出的結果的分隔符。計算某一段的總和,這種用法也比較常見,例如:
# awk -F ':' '{(tot=tot+$3)}; END {print tot}' 1.txt
知識點二:sort排序語法:sort [-t 分隔符] [-kn1,n2] [-nru] 這里的n1 < n2-t 分隔符 :作用跟cut的-d一個意思-n :使用純數字排序-r :反向排序-u :去重復-kn1,n2 :由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序如果sort不加任何選項,則從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出,如下:
# head -n5 /etc/passwd |sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
-t 后面跟分隔符,-k后面跟數字,表示對第幾個區域的字符串排序,-n 則表示使用純數字排序,示例如下:
# head -n5 /etc/passwd |sort -t: -k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-k3,5 表示從第3到第5區域間的字符串排序,-r表示反向排序,示例如下:
# head -n5 /etc/passwd |sort -t: -k3,5 -r
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
知識點三:uniq去重復這個命令我經常用的選項只有一個,-c :統計重復的行數,并把行數寫在前面請把下面的內容寫入testb.txt, 保存。
111
222
111
333
使用uniq 的前提是需要先給文件排序,否則不管用,如下所示:
# uniq testb.txt
111
222
111
333
# sort testb.txt |uniq
111
222
333
以下是-c選項的作用:
# sort testb.txt |uniq -c
      2 111
      1 222
      1 333
知識點四:用iptables工具封/解封IP在CentOS系統中有一個叫做netfilter的防火墻,它可以對進入或者即將離開網卡的數據包進行處理。最常見的用法就封IP,即限制某些IP或者某些IP的某個port的數據包進入Linux系統。很多人把iptables叫做防火墻,其實不然,iptables是CentOS6系統里的一個服務,當然它也是一個命令,而在CentOS7系統里也有iptables命令,服務名不再是iptables,而是firewalld。1)查看filter表的iptables規則
# iptables -nvL -t filter
說明:在CentOS7上netfilter有5個表,分別是:filter、nat、mangle、raw、secuirty。而我們用的比較多的是前兩個,本案例中的封ip用的就是filter表。該命令中的-t filter可以省略,默認就是filter表。2)增加規則
# iptables -A INPUT -p tcp --dport 80 -s 1.1.1.1 -j DROP
說明:-A表示增加規則,INPUT為filter表里的一個鏈,除此之外,filter表還有OUTPUT鏈和FORWARD鏈。這里我引用網上的一張圖片幫助大家理解netfilter的表和鏈。87db1bce-7431-11ed-8abf-dac502259ad0.png數據包的流向是這樣的:a. 當一個數據進入網卡時,他首先進入PREOUTING鏈(數據包進入路由之前),然后判斷目標IP是否本機。b. 如果數據包是進入本機的,他會到達INPUT鏈(通過路由表后目的地為本機),數據包到達INPUT鏈后進入本機內核,然后內核進行處理,處理完到OUTPUT鏈(由本機產生,向外轉變),最后到POSTROUTING(發送到網卡接口之前)。c. 如果不是進入本機的,他會到FORWARDING鏈(通過路由表后,目的地不為本機)最后POSTROUTING鏈(發送到網卡接口之前)。搞清楚了數據包流向就很容易理解INPUT、OUTPUT鏈的作用了,其實我們更關心的是INPUT和OUTPUT鏈,而其他幾個鏈可以先不用理會。用INPUT控制進入本機的數據包,而用OUTPUT控制出去的數據包,這兩個幾乎可以滿足我們絕大多數的運維場景了。-A選項是增加一條規則,更準確地說是追加一條規則,因為iptables的規則是分前后的,用iptables -nvL查看規則時,越靠上的規則就越先生效,也就是說優先級越高。所以,使用-A追加的規則只能排在最后面,但如果想增加一條優先級最高的規則怎么辦?用-I選項(插入規則的意思)即可,示例命令如下:
# iptables -I INPUT -p tcp --dport 80 -s 2.2.2.2 -j DROP
也可以不針對端口,只寫IP,同時也可以指定目標IP地址,如下:
# iptables -I INPUT -s 3.3.3.3 -d 4.4.4.4 -j DROP
刪除規則有兩個方法,一是全部清空,另外一個就是刪除一條:
# iptables -t filter -F
刪除一條規則,比較麻煩,因為你需要記得當時創建這條規則的命令,把-I或者-A換成-D即可,如下:
# iptables -D INPUT -s 3.3.3.3 -d 4.4.4.4 -j DROP
當然,也有比較簡單的做法,首先要列出規則的序號,如下:
# iptables -nvL --line-numbers
最左邊第一列的"num"就是規則的序號了,每個鏈的規則都是從1開始,假如要刪除INPUT鏈的第2條規則,只需要執行:
# iptables -D INPUT 2
這樣就會把INPUT鏈下的第2條規則刪除掉。刪除規則后,重新列出規則序號,會發現序號依然是從1開始。當我們執行iptables -nvL時,列出的結果中第一列'pkts'表示被iptables規則作用的數據包個數,而第二列'bytes'表示被iptables規則作用的數據量大小。這個數字會不斷變化,如果重啟iptables或者firewalld服務這兩列數字會清零,當然也有一個選項可以讓它清零,如下:
# iptables -Z
也可以指定某個鏈,比如:
# iptables -Z INPUT
以上我介紹的知識點主要是針對本案例的,其實iptables的用法還挺多,限于篇幅暫時先講這么多吧,后續案例中有涉及到咱們再近一步學習。知識點五:shell腳本中的函數在shell腳本中如果某一段代碼出現1次以上,應該把這段代碼封裝到一個函數里,這樣后續調用它會很方便,而且代碼看起來也非常美觀。下面我用一個實際的例子來說明函數的好處。需求是,檢查系統中是否安裝vim-enhanced、expect、wget包,如果沒有安裝則安裝一下,傳統的shell代碼是這樣寫的:
if ! rpm -q vim-enhanced &>/dev/null  //說明,在shell中可以把一條命令作為if的判斷條件,命令前面加!表示取反
then 
    yum install -y vim-enhanced
fi
if ! rpm -q expect &>/dev/null
then
    yum install -y expect
fi
if ! rpm -q wget &>/dev/null
then
    yum install -y wget
fi
試問,如果讓你去檢查100個包,難道你要寫100遍這段代碼嗎?用函數就簡潔多了,如下:
## 定義if_install函數
if_install() {
  if ! rpm -q $1 &>/dev/null
    then
        yum install -y $1
    fi
}
## 用for循環把所有rpm包逐一檢查一遍
for pkg in vim-enhanced expect wget
do
    if_install $pkg
done
知識點六:sed用法sed和grep、awk一樣頻繁地出現在shell腳本中,它們三個經常被叫做“正則三劍客”,可見這三個工具和正則表達式之間的關系非同一般。對于sed工具的用法,我列幾個常見的。1)打印指定行
sed -n '10p' 1.txt
說明:10指的是行號,p表示print(打印),加上-n后只顯示第10行,否則會把1.txt所有行都顯示出來,這里的單引號是我的習慣,你可以不加也可以加雙引號。另外,可以指定多行,示例命令如下:
sed -n '1,5p' 1.txt  
說明:打印1到5行,如果是不連續的行,可以這樣:
sed -n '1p;5p' 1.txt
sed也有和grep類似的過濾指定行的功能,如下:
sed -n '/abc/p' 1.txt
說明://為一個固定寫法,里面就是要匹配的字符串,可以是正則,例如:
sed -n '/[a-z0-9]/p' 1.txt
在正則表達式中,有幾個特殊符號屬于擴展正則范疇,它們是+, ?, |, (), {}。在grep中要使用它們需要加上-E選項,而在sed中要使用它們,需要加上-r選項,比如:
sed -nr '/abc|123/p' 1.txt
2)刪除指定行
sed '10d' 1.txt
說明:會刪除第10行,但并不會真正操作1.txt內容,而是屏幕上顯示的內容少了第10行,要想直接在文件內生效,可以加上-i選項,如下:
sed -i '10d' 1.txt
刪除包含'abc'或者'linux'字符串的行
sed -ir '/abc|linux/d' 1.txt
3)查找替換把1.txt中的出現的全部'aming'替換為'linux'
sed 's/aming/linux/g' 1.txt
說明:這里的s表示替換,g表示全局替換,如果不加g則只替換每行中出現的第一個'aming'。本案例參考腳本如下是我寫的參考腳本,請過目:
#! /bin/bash
## 把訪問量比較大的IP封掉,如果30分鐘內被封的IP沒有請求或者請求很少,需要解封
## 作者:阿銘
## 日期:2022-07-20
## 版本:v1.1
#定義1分鐘以前的時間,用于過濾1分鐘以前的日志
t1=`date -d "-1 min" +%Y:%H:%M`
log=/data/logs/access_log
block_ip()
{
    egrep "$t1:[0-5]+" $log > /tmp/tmp_last_min.log
    #把1分鐘內訪問量高于100的ip記錄到一個臨時文件中
    awk '{print $1}' /tmp/tmp_last_min.log |sort -n |uniq -c|sort -n |awk '$1>100 {print $2}' > /tmp/bad_ip.list
    #計算ip的數量
    n=`wc -l /tmp/bad_ip.list|awk '{print $1}'`
    #當ip數大于0時,才會用iptables封掉它
    if [ $n -ne 0 ]
    then
        for ip in `cat /tmp/bad_ip.list`
        do
            iptables -I INPUT -s $ip -j REJECT
        done
        #將這些被封的IP記錄到日志里
        echo "`date` 封掉的IP有:" >> /tmp/block_ip.log
        cat /tmp/bad_ip.list >> /tmp/block_ip.log
    fi
}
unblock_ip()
{
    #首先將包個數小于5的ip記錄到一個臨時文件里,把它們標記為白名單IP
    iptables -nvL INPUT|sed '1d' |awk '$1<5 {print $8}' > /tmp/good_ip.list
    n=`wc -l /tmp/good_ip.list|awk '{print $1}'`
    if [ $n -ne 0 ]
    then
        for ip in `cat /tmp/good_ip.list`
        do
            iptables -D INPUT -s $ip -j REJECT
        done
        echo "`date` 解封的IP有:" >> /tmp/unblock_ip.log
        cat /tmp/good_ip.list >> /tmp/unblock_ip.log
    fi
    #當解封完白名單IP后,將計數器清零,進入下一個計數周期
    iptables -Z
}
#取當前時間的分鐘數
t=`date +%M`
#當分鐘數為00或者30時(即每隔30分鐘),執行解封IP的函數,其他時間只執行封IP的函數
if [ $t == "00" ] || [ $t == "30" ]
then
   unblock_ip
   block_ip
else
   block_ip
fi

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 日志
    +關注

    關注

    0

    文章

    146

    瀏覽量

    11063
  • Shell
    +關注

    關注

    1

    文章

    375

    瀏覽量

    25374
  • 腳本
    +關注

    關注

    1

    文章

    409

    瀏覽量

    29192

原文標題:遇到CC攻擊你會怎么做?

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    解鎖CC3235MODx與CC3235MODAx模塊的無限潛力

    解鎖CC3235MODx與CC3235MODAx模塊的無限潛力 在當今物聯網飛速發展的時代,無線連接模塊的性能和功能對于各類智能設備的成功至關重要。德州儀器(TI)的CC
    的頭像 發表于 12-22 11:25 ?2003次閱讀

    攻擊逃逸測試:深度驗證網絡安全設備的真實防護能力

    攻擊逃逸測試通過主動模擬協議混淆、流量分割、時間延遲等高級規避技術,能夠深度驗證網絡安全設備的真實防護能力。這種測試方法不僅能精準暴露檢測引擎的解析盲區和策略缺陷,還能有效評估防御體系在面對隱蔽攻擊
    發表于 11-17 16:17

    STM32L476低功耗怎么做

    STM32L476低功耗怎么做
    發表于 11-11 16:48

    快問快答:氣密性檢測到底是怎么做的?如何定義氣密性測試標準

    :氣密性檢測是怎么做的?氣密性測試標準如何定義?并結合國產代表品牌精誠工科(JCGK)的實際應用,為您建立一份系統化理解。Ⅰ.什么是氣密性檢測?氣密性檢測(Lea
    的頭像 發表于 11-11 11:56 ?898次閱讀
    快問快答:氣密性檢測到底是<b class='flag-5'>怎么做</b>的?如何定義氣密性測試標準

    5G DL 3CC CA下行速率不達預期的原因分析

    CA(2.6G160M+4.9G100M)下行理論峰值速率能到4Gbps+,外場DL 3CC CA測試遇到下行速率不及預期的問題,本文從無線空口環境、終端能力、FTP服務器等多個維度排查DL 3
    的頭像 發表于 10-22 09:15 ?1190次閱讀
    5G DL 3<b class='flag-5'>CC</b> CA下行速率不達預期的原因分析

    高防服務器對CC攻擊的防御原理是什么?

    CC攻擊本質上是一種“慢刀子割肉”的應用層DDoS攻擊。它不像傳統DDoS那樣用海量流量直接沖垮帶寬,而是模擬大量真實用戶,持續向服務器發送“看似合法”的請求,目的是耗盡服務器的CPU、內存、數據庫
    的頭像 發表于 10-16 09:29 ?612次閱讀

    當系統和用戶交換機沒有連接 HXT(高速晶體振蕩器)時,應該怎么做

    當系統和用戶交換機沒有連接 HXT(高速晶體振蕩器)時,用戶應該怎么做
    發表于 08-28 07:41

    TCP攻擊是什么?有什么防護方式?

    隨著網絡的高速發展,越來越多的企業都將業務部署在線下機房或者云上。隨之而來的就是各種各樣的網絡攻擊,如DDoS攻擊CC攻擊、TCP攻擊等,
    的頭像 發表于 06-12 17:33 ?1005次閱讀

    CYPD5235的CC Pin功能異常,還可能跟什么有關?

    /VSYS/VDDD/V5V_P1的電都是正常的。 請教問題: 1。CYPD5235的CC Pin功能異常,還可能跟什么有關? 2。去掉的MP8859,影響CYPD5235的軟件代碼執行嗎?如果
    發表于 05-30 07:04

    在使用PTR5415藍牙模塊中有遇到哪些測試問題?歡迎分享實測案例

    有在使用藍牙模塊PTR5415的小伙伴們嗎?在應用中遇到過哪些測試問題?歡迎分享實測案例
    發表于 05-09 14:32

    在使用WI-FI6模塊PTR7002時遇到過哪些通信問題?歡迎分享解決方案!

    在使用WI-FI6模塊PTR7002時遇到過哪些通信問題?歡迎分享解決方案!
    發表于 05-09 14:25

    SynFlood是如何抓住漏洞進行攻擊

    我們在上網時可能遇到無法訪問網站、網站加載緩慢、游戲卡頓等現象,我們通常認為這是網速問題。
    的頭像 發表于 04-28 14:12 ?897次閱讀
    SynFlood是如何抓住漏洞進行<b class='flag-5'>攻擊</b>的

    LTC5588-1的基帶輸入可以用單端的方式輸入嗎?具體該怎么做

    LTC5588-1的基帶輸入可以用單端的方式輸入嗎?具體該怎么做
    發表于 04-15 06:10

    華納云如何為電商大促場景扛住Tb級攻擊不宕機?

    容量的SCDN服務:確保SCDN服務具有足夠的帶寬容量來吸收和處理大規模的DDoS攻擊,從而保護源站不受影響。 啟用高級安全防護功能:如DDoS攻擊防護、CC攻擊防護、WAF(Web應
    的頭像 發表于 03-25 15:14 ?822次閱讀

    0基礎小白請教這個有關二極管的題目怎么做?謝謝!

    0基礎小白請教這個有關二極管的題目怎么做?謝謝!
    發表于 03-13 11:42