某公司的伺服器發生故障,首先是**的頻寬跑滿,其次是cpu一直上不去。伺服器架構只有簡單的1個nginx負載和2臺web。web上面是2台有幾個tomcat專案包
首先檢視阿里雲監控的流量圖,我們可以看到正常流量。然後突然流量增加:
這裡cpu使用率一直特別高,使用top命令來檢視程序,發現不是這裡的問題。
但是,看到web上面的tomcat專案並沒有占用多少資源。開始進行日誌檢視。
首先檢視的是系統錯誤日誌 :
發現好像是洪水攻擊,且伺服器已經影響到業務。導致無法ssh連線進行管理,當時已設定tcp的連線數,發現設定完成之後好了。但是幾分鐘之後還是出現問題。
當時把所有的伺服器全停了,然後等了半個小時,在次開啟,發現一開起幾分鐘就會出現這種問題:
後來發現一停掉,負載就下去,最後通過nginx負載均衡發現問題 。
在這期間,我檢視了阿里雲監控的態勢感知 :
檢視web訪問日誌,終於發現了問題:
[root@vm-69-6cc2 logs]# grep 07/sep/2016 mallview_access.log |awk 'end'
114.111.167.89 60
111.205.180.168 60
60.205.125.164 407876
netstat -an|grep "established"|awk -f "[ :]+" ''|sort|uniq -c|sort -rn -k1
設定防火牆拒絕這個ip位址 :
重新啟動發現負載正常。
防止syn攻擊(輕量級預防)
iptables -n syn-flood
iptables -a input -p tcp --syn -j syn-flood
iptables -i syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j return
iptables -a syn-flood -j reject
防止dos太多連線進來,可以允許外網網絡卡每個ip最多15個初始連線,超過的丟棄iptables -a input -i eth0 -p tcp --syn -m connlimit --connlimit-above 15 -j drop
iptables -a input -p tcp -m state --state established,related -j accept
用iptables抵禦ddos (引數與上相同)iptables -a input -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j accept
iptables -a forward -p tcp --syn -m limit --limit 1/s -j accept
當apache站點受到嚴重的cc攻擊,可以用iptables來防止web伺服器被cc攻擊,實現自動遮蔽ip的功能。
1.系統要求
(1)linux 核心版本:2.6.9-42elsmp或2.6.9-55elsmp(其它核心版本需要重新編譯核心,比較麻煩,但是也是可以實現的)。
(2)iptables版本:1.3.7
2.安裝
安裝iptables1.3.7和系統核心版本對應的核心模組kernel-smp-modules-connlimit
3.配置相應的iptables規則
示例如下:
(1)控制單個ip的最大併發連線數
iptables -i input -p tcp --dport 80 -m connlimit --connlimit-above 50 -j reject #允許單個ip的最大連線數為 30
(2)控制單個ip在一定的時間(比如60秒)內允許新建立的連線數
iptables -a input -p tcp --dport 80 -m recent --name bad_http_access --update --seconds 60 --hitcount 30 -j reject iptables -a input -p tcp --dport 80 -m recent --name bad_http_access --set -j accept
4.驗證(1)工具:flood_connect.c(用來模擬攻擊)
(2)檢視效果:
使用:
watch 'netstat -an | grep:21 | grep《模擬攻擊客戶機的ip>| wc -l'
實時檢視模擬攻擊客戶機建立起來的連線數,使用:
watch 'iptables -l -n -v | \grep《模擬攻擊客戶機的ip>'
檢視模擬攻擊客戶機被 drop 的資料報數。
5.注意
為了增強iptables防止cc攻擊的能力,最好調整一下ipt_recent的引數如下:
cat/etc/modprobe.conf options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
記錄1000個ip位址,每個位址記錄60個資料報 #modprobe ipt_recen 使用雲伺服器的幾個安全防護技巧
1.隨時檢查系統安全漏洞,安裝系統補丁。不管是windows還是linux,作業系統都會有漏洞,及時裝上補丁,避免被不法分子惡意利用攻擊.2.安裝並公升級防毒軟體。目前網路上的病毒越加猖獗,隨時會影響到 伺服器的安全,因此,系統要安裝上防毒軟體來提前預防病毒的傳播,並定期檢查公升級防毒軟體,自動更新...
Linux運維之路 安全防護OpenResty
openresty是乙個基於 nginx 與 lua 的高效能 web 平台,其內部整合了大量精良的 lua 庫 第三方模組以及大多數的依賴項。用於方便地搭建能夠處理超高併發 擴充套件性極高的動態 web 應用 web 服務和動態閘道器。系統環境說明 root jranson cat etc red...
rndc和TSIG安全防護DNS伺服器
bind9提供的rndc remote name daemon control 功能,其實是bind 8的rnc的延伸,方便了系統管理者遠端或本地來管理dns伺服器。rndc 1 本地管理dns 生成rndc.key檔案 輸入命令 生成 etc rndc.key檔案,類似這樣的金鑰 生成rndc.c...