DOS、DDOS、CC等完整解決方案

2020-08-15 13:11:19

看看你的服務的存取日誌,在防火牆中加過濾,或者在web伺服器中加過濾吧。方法有以下幾種。


1.對於特定的IP存取的情況,限制IP存取
2.限制同一IP在單位時間內的存取次數


另一種方法是利用Iptables預防DOS指令碼

#!/bin/bash

netstat -an|grep SYN_RECV|awk '{print$5}'|awk -F: '{print$1}'|sort|uniq -c|sort -rn|awk '{if ($1 >1) print $2}'

for i in $(cat /tmp/dropip)

do

/sbin/iptables -A INPUT -s $i -j DROP

echo 「$i kill at `date`」 >>/var/log/ddos

done

該指令碼會對處於SYN_RECV並且數量達到5個的IP做統計,並且把寫到Iptables的INPUT鏈設定爲拒絕。


SYN洪水**是DDOS中最常見的型別之一。是一種利用TCP 協定缺陷,者向被的主機發送大量僞造的TCP連線請求,從而使得被方主機伺服器的資源耗盡(CPU 滿負荷或記憶體不足) 的方式。SYN的目標不止於伺服器,任何網路裝置,都可能會受到這種,針對網路裝置的SYN往往會導致整個網路癱瘓。企業遭到SYN該如何防禦呢?今天墨者安全就來分享一下如何利用iptables來緩解SYN。**

1、修改等待數
sysctl -w net.ipv4.tcp_max_syn_backlog=2048


2、啓用syncookies
sysctl -w net.ipv4.tcp_syncookies=1


3、修改重試次數
sysctl -w net.ipv4.tcp_syn_retries = 0

重傳次數設定爲0,只要收不到用戶端的響應,立即丟棄該連線,預設設定爲5次


4、限制單IP併發數
使用iptables限制單個地址的併發連線數量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT


5、限制C類子網併發數
使用iptables限制單個c類子網的併發鏈接數量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT


6、限制單位時間內連線數
設定如下:

iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP


7、修改modprobe.conf
爲了取得更好的效果,需要修改/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60

作用:記錄10000個地址,每個地址60個包,ip_list_tot最大爲8100,超過這個數值會導致iptables錯誤


8、限制單個地址最大連線數
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j D

通過上述這些設定,可以緩解SYN**帶來的影響,但如果遭到幾百幾千G的T級流量洪水,那隻能選擇像墨者安全那樣的商業級的防DDOS服務了。墨者盾高防可以隱藏伺服器真實IP,利用新的WAF演算法過濾技術,清除DDOS異常流量,保障伺服器正常執行**。


CC**原理者控制某些主機不停地發大量數據包給對方伺服器造成伺服器資源耗盡,一直到宕機崩潰。CC主要是用來頁面的,每個人都有這樣的體驗:當一個網頁存取的人數特別多的時候,開啓網頁就慢了,CC就是模擬多個使用者(多少執行緒就是多少使用者)不停地進行存取那些需要大量數據操作(就是需要大量CPU時間)的頁面,造成伺服器資源的浪費,CPU長時間處於100%,永遠都有處理不完的連線直至就網路擁塞,正常的存取被中止。CC防禦策略**

1.取消域名系結取消域名系結後Web伺服器的CPU能夠馬上恢復正常狀態,通過IP進行存取連線一切正常。但是不足之處也很明顯,取消或者更改域名對於別人的存取帶來了不變,另外,對於針對IP的CC它是無效的,就算更換域名者發現之後,者也會對新域名實施


2.更改Web埠一般情況下Web伺服器通過80埠對外提供服務,因此者實施就以預設的80埠進行,所以,可以修改Web埠達到防CC的目的。


3.IIS遮蔽IP我們通過命令或在檢視日誌發現了CC的源IP,就可以在IIS中設定遮蔽該IP對Web站點的存取,從而達到防範IIS的目的。


**CC*的防範手段

1.優化程式碼儘可能使用快取來儲存重複的查詢內容,減少重複的數據查詢資源開銷。減少複雜框架的呼叫,減少不必要的數據請求和處理邏輯。程式執行中,及時釋放資源,比如及時關閉mysql連線,及時關閉memcache連線等,減少空連線消耗。

2.限制手段對一些負載較高的程式增加前置條件判斷,可行的判斷方法如下:必須具有網站簽發的session資訊纔可以使用(可簡單阻止程式發起的集中請求);必須具有正確的referer(可有效防止嵌入式程式碼的***);禁止一些用戶端型別的請求(比如一些典型的不良蜘蛛特徵);同一session多少秒內只能執行一次。

3.完善日誌儘可能完整保留存取日誌。日誌分析程式,能夠儘快判斷出異常存取,比如單一ip密集存取;比如特定url同比請求激增。


**一、Dos*(Denial of Service attack)

是一種針對伺服器的能夠讓伺服器呈現靜止狀態的**方式。有時候也叫服務停止或拒絕服務。其原理就是發送大量的合法請求到伺服器,伺服器無法分辨這些請求是正常請求還是請求,所以都會照單全收。海量的請求會造成伺服器停止工作或拒絕服務的狀態。這就是Dos*


**二、DDOS*****

概念
分佈式拒絕服務**(Distributed Denial of Service),簡單說就是發送大量請求是使伺服器癱瘓。DDos
是在DOS基礎上的,可以通俗理解,dos是單挑,而ddos是羣毆,因爲現代技術的發展,dos的殺傷力降低,所以出現了DDOS,者藉助公共網路,將大數量的計算機裝置聯合起來,向一個或多個目標進行。**

案例

SYN Flood ,簡單說一下tcp三次握手,用戶端伺服器發出請求,請求建立連線,然後伺服器返回一個報文,表明請求以被接受,然後用戶端也會返回一個報文,最後建立連線。那麼如果有這麼一種情況,者僞造ip地址,發出報文給伺服器請求連線,這個時候伺服器接受到了,根據tcp三次握手的規則,伺服器也要迴應一個報文,可是這個ip是僞造的,報文迴應給誰呢,第二次握手出現錯誤,第三次自然也就不能順利進行了,這個時候伺服器收不到第三次握手時用戶端發出的報文,又再重複第二次握手的操作。如果者僞造了大量的ip地址併發出請求,這個時候伺服器將維護一個非常大的半連線等待列表,佔用了大量的資源,最後伺服器癱瘓。
CC,在應用層http協定上發起,模擬正常使用者發送大量請求直到該網站拒絕服務爲止。

**被*的原因

伺服器頻寬不足,不能擋住者的流量

預防
最直接的方法增加頻寬。但是者用各地的電腦進行,他的頻寬不會耗費很多錢,但對於伺服器來說,頻寬非常昂貴。
雲服務提供商有自己的一套完整DDoS解決方案,並且能提供豐富的頻寬資源。------如果是阿裡雲推薦使用高防。

1、採用高效能的網路裝置
首先要保證網路裝置不能成爲瓶頸,因此選擇路由器、交換機、硬體防火牆等裝置的時候要儘量選用知名度高、口碑好的產品。再就是假如和網路提供商有特殊關係或協定的話就更好了,當大量發生的時候請他們在網路接點處做一下流量限制來對抗某些種類的DDOS是非常有效的。


2、儘量避免NAT的使用
無論是路由器還是硬體防護牆裝置要儘量避免採用網路地址轉換NAT的使用,因爲採用此技術會較大降低網路通訊能力,其實原因很簡單,因爲NAT需要對地址來回轉換,轉換過程中需要對網路包的校驗和進行計算,因此浪費了很多CPU的時間,但有些時候必須使用NAT,那就沒有好辦法了。


3、充足的網路頻寬保證
網路頻寬直接決定了能抗受的能力,假若僅僅有10M頻寬的話,無論採取什麼措施都很難對抗現在的SYNFlood,當前至少要選擇100M的共用頻寬,最好的當然是掛在1000M的主幹上了。但需要注意的是,主機上的網絡卡是1000M的並不意味着它的網路頻寬就是千兆的,若把它接在100M的交換機上,它的實際頻寬不會超過100M,再就是接在100M的頻寬上也不等於就有了百兆的頻寬,因爲網路服務商很可能會在交換機上限制實際頻寬爲10M,這點一定要搞清楚。


4、把網站做成靜態頁面
大量事實證明,把網站儘可能做成靜態頁面,不僅能大大提高抗*能力,而且還給**帶來不少麻煩,至少到現在爲止關於HTML的溢位還沒出現,看看吧!新浪、搜狐、網易等入口網站主要都是靜態頁面,若你非需要動態指令碼呼叫,那就把它弄到另外一臺單獨主機去,免的遭受*時連累主伺服器,當然,適當放一些不做數據庫呼叫指令碼還是可以的,此外,最好在需要呼叫數據庫的指令碼中拒絕使用代理的存取,因爲經驗表明使用代理存取你網站的80%屬於惡意行爲。


常見web安全及防護原理

sql注入原理
就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令
總的來說有以下幾點:


1.永遠不要信任使用者的輸入,要對使用者的輸入進行校驗,可以通過正則表達式,或限制長度,對單引號和雙」-「進行轉換等


2.永遠不要使用動態拼裝SQL,可以使用參數化的SQL或者直接使用儲存過程進行數據查詢存取


3.永遠不要使用管理員許可權的數據庫連線,爲每個應用使用單獨的許可權有限的數據庫連線


4.不要把機密資訊明文存放,請加密或者hash掉密碼和敏感的資訊
XSS原理及防範


Xss(cross-site scripting)**指的是者往Web頁面裡插入惡意html標籤或者javascript程式碼。比如:者在論壇中放一個看似安全的鏈接,騙取使用者點選後,竊取cookie中的使用者私密資訊;或者者在論壇中加一個惡意表單,當使用者提交表單的時候,卻把資訊傳送到*者的伺服器中,而不是使用者原本以爲的信任站點


XSS防範方法

首先程式碼裡對使用者輸入的地方和變數都需要仔細檢查長度和對」<」,」>」,」;」,」’」等字元做過濾;其次任何內容寫到頁面之前都必須加以encode,避免不小心把html tag 弄出來。這一個層面做好,至少可以堵住超過一半的XSS ***
XSS與CSRF有什麼區別嗎?

XSS是獲取資訊,不需要提前知道其他使用者頁面的程式碼和數據包。CSRF是代替使用者完成指定的動作,需要知道其他使用者頁面的程式碼和數據包。要完成一次CSRF***,受害者必須依次完成兩個步驟

登錄受信任網站A,並在本地生成Cookie

在不登出A的情況下,存取危險網站B
CSRF的防禦

伺服器端的CSRF方式方法很多樣,但總的思想都是一致的,就是在用戶端頁面增加僞亂數
通過驗證碼的方法
是否瞭解 Web 注入***(最常見 XSS 和 CSRF)?


SQL隱碼攻擊

把SQL命令插入到表單或輸入URL查詢字串提交,欺騙伺服器達到執行惡意的SQL目的
XSS(Cross Site Script),跨站指令碼***

者在頁面裡插入惡意代碼,當使用者瀏覽該頁之時,執行嵌入的惡意代碼達到目的
CSRF(Cross Site Request Forgery),跨站點僞造請求

僞造合法請求,讓使用者在不知情的情況下以登錄的身份存取,利用使用者信任達到***目的


**如何防範 Web 前端*

不要信任任何外部傳入的數據

針對使用者輸入作相關的格式檢查、過濾等操作
不要信任在任何傳入的第三方數據

使用 CORS,設定 Access-Control-Allow-Origin
更安全地使用 Cookie

設定Cookie爲HttpOnly,禁止了JavaScript操作Cookie
防止網頁被其他網站內嵌爲iframe

伺服器端設定 X-Frame-Options 響應頭,防止頁面被內嵌


**APR*發現

首先診斷是否爲ARP病毒***

1、當發現上網明顯變慢,或者突然掉線時,我們可以用arp -a命令來檢查ARP表:(點選「開始」按鈕-選擇「執行」-輸入「cmd」點選"確定"按鈕,在視窗中輸入「arp -a」命令)如果發現閘道器的MAC地址發生了改變,或者發現有很多IP指向同一個實體地址,那麼肯定就是ARP欺騙所致。這時可以通過」arp -d「清除arp列表,重新存取。

2、利用ARP防火牆類軟體(如:360ARP防火牆、AntiARPSniffer等)。


**如何判斷交換機是否受到ARP*以及處理方式

**一、如果網路受到了ARP*,可能會出現如下現象:

1、使用者掉線、頻繁斷網、上網慢、業務中斷或無法上網。

2、裝置CPU佔用率較高、裝置託管、下掛裝置掉線、裝置主備狀態震盪、裝置埠指示燈紅色快閃。

3、Ping有時延、丟包或不通。


區域網內的機器遭到ARP病毒欺騙**,如果找到源頭的機器,將其病毒或殺掉,區域網內機器就會恢復正常,那麼如何才能 纔能快速定位到*的源頭機器呢?


1、用arp -a命令。當發現上網明顯變慢,或者突然掉線時,我們可以用arp -a命令來檢查ARP表。如果發現閘道器的MAC地址發生了改變,或者發現有很多IP地址指向同一個MAC地址,那麼肯定就是ARP***所致。


2、利用彩影ARP防火牆軟體檢視。如果網絡卡是處於混雜模式或者ARP請求包發送的速度大或者ARP請求包總量非常大,判斷這臺機器有可能就是「元兇」。定位好機器後,再做病毒資訊收集工作。


3、通過路由器的「系統歷史記錄」檢視。由於ARP程式發作的時候會發出大量的數據包導致區域網通訊阻塞以及其自身處理能力的限制,使用者會感覺上網速度越來越慢。當ARP程式停止執行時,使用者會恢復從路由器上網,切換過程中使用者會再斷一次線。這個訊息代表了使用者的MAC地址發生了變化,在ARP**開始執行的時候,區域網所有主機的MAC地址更新爲病毒主機的MAC地址(即所有資訊的MAC New地址都一致爲病毒主機的MAC地址),同時在路由器的「使用者統計」中看到所有使用者的MAC地址資訊都一樣。

如果是在路由器的「系統歷史記錄」中看到大量MAC Old地址都一致,則說明區域網內曾經出現過ARP(ARP的***程式停止執行時,主機在路由器上恢復其真實的MAC地址)。


***方式:

**1. 簡單的詐騙*****

這是對比多見的,經過發送僞造的ARP包來詐騙路由和方針主機,讓方針主機認爲這是一個合法的主機,便完成了詐騙,這種詐騙多發生在同一網段內,因爲路由不會把本網段的包向外轉發,當然完成不一樣網段的也有辦法,便要經過ICMP協定來告訴路由器從頭挑選路由。

2. 根據ARP的DOS

這是新呈現的一種辦法,D.O.S又稱拒絕服務,當大量的銜接請求被髮送到一臺主機時,因爲主機的處理才能 纔能有限,不能爲正常使用者提供服務,便呈現拒絕服務。這個過程中假如運用ARP來躲藏自己,在被主機的日誌上就不會呈現真實的IP,也不會影響到本機。

3. MAC Flooding

這是一個對比風險的***,能夠溢位交流機的ARP表,使全部網路不能正常通訊。

4. 交流環境的嗅探

在開始的小型區域網中咱們運用HUB來進行互連,這是一種廣播的辦法,每個包都會經過網內的每台主機,經過運用軟體,就能夠嗅談到全部區域網的數據。現在的網路多是交流環境,網路內數據的傳輸被鎖定的特定方針。既已斷定的方針通訊主機,在ARP詐騙的根底之上,能夠把自己的主機僞形成一箇中心轉發站來監聽兩臺主機之間的通訊。

**arp*的防護

1. ARP 快取記憶體超時設定

在ARP快取記憶體中的表項一般都要設定超時值,縮短這個這個超時值能夠有用的避免ARP表的溢位。

2. IP+MAC存取操控   -----推薦使用

單純依託IP或MAC來樹立信賴聯繫是不安全,抱負的安全聯繫樹立在IP+MAC的根底上,這也是咱們校園網上網有必要系結IP和MAC的因素之一。

3. 靜態ARP快取表

每台主機都有一個暫時寄存IP-MAC的對應表ARP***就經過更改這個快取來到達詐騙的意圖,運用靜態的ARP來系結正確的MAC是一個有用的辦法,在命令列下運用arp -a能夠檢查當時的ARP快取表。

4. 自動查詢

在某個正常的時間,做一個IP和MAC對應的數據庫,以後定時檢查當時的IP和MAC對應聯繫是否正常,定時檢查交流機的流量列表,檢查丟包率。

ARP本省不能形成多大的損害,一旦被聯繫使用,其風險性就不可估量,因爲ARP自身的疑問,使得防備ARP的***很棘手,經常檢查當時的網路狀況,監控流量對一個站長來說是個很好的風氣