記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

【本文轉(zhuǎn)自爪哇筆記  作者:小柒2012 原文鏈接:http://tech.it168.com/a2018/0629/3212/000003212205.shtml】
前言

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比仁和網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式仁和網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋仁和地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。

距離上次被DDOS攻擊已經(jīng)有10天左右的時(shí)間,距離上上次已經(jīng)記不起具體那一天了,每一次都這么不了了之。然而近期一次相對(duì)持久的攻擊,我覺(jué)得有必要靜下心來(lái),分享一下被黑的那段經(jīng)歷。

在敘述經(jīng)歷之前,先簡(jiǎn)單的介紹一下服務(wù)器配置情況:

·ECS 1核2G內(nèi)存1MB帶寬,Linux系統(tǒng)

·RDS 2核240MB內(nèi)存,最大連接數(shù)60

·redis 256MB共享實(shí)例,搬家之后沒(méi)用到

·cdn 按量付費(fèi),緩存小文件

以上配置,對(duì)于一個(gè)日訪問(wèn)量幾千的網(wǎng)站來(lái)說(shuō)應(yīng)該綽綽有余了,并發(fā)撐死十幾個(gè)左右,以下是簡(jiǎn)單的網(wǎng)站部署情況:

記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

好吧,故事開(kāi)始,2018年6月14日,凌晨?jī)牲c(diǎn)三十收到了阿里云系統(tǒng)告警通知,告知網(wǎng)站無(wú)法訪問(wèn),然而那會(huì)我還在睡夢(mèng)中。

跟往常一樣,差不多六點(diǎn)左右醒來(lái),習(xí)慣性的翻看手機(jī),恰好此時(shí)又發(fā)來(lái)了短信告警。要在平時(shí)的話(huà)是可以再睡兩個(gè)小時(shí)的,然而此時(shí)一個(gè)激靈,瞬間困意全無(wú),怎么說(shuō)我也是有幾千訪問(wèn)量的博主了。

于是,趕緊爬起來(lái)打開(kāi)電腦,嘗試訪問(wèn)下博客和論壇,果不其然瀏覽器在一直打轉(zhuǎn)轉(zhuǎn)。

問(wèn)題排查

嘗試遠(yuǎn)程登錄服務(wù)器:

·查看Nginx 和 PHP-FPM,ps -ef|grep xxxx

·查看系統(tǒng)剩余內(nèi)存 free -m

·查看CPU使用情況 top

·查看Nginx錯(cuò)誤日志 tail -f error.log

·查看日志容量 ll -h

·查看并發(fā)連接數(shù) netstat -nat|grep ESTABLISHED|wc -l

一頓騷操作之后,并沒(méi)有什么異常,內(nèi)存和CPU平穩(wěn),Nginx和PHP 進(jìn)程沒(méi)問(wèn)題。然后分別重啟了一下 PHP 和 Nginx,開(kāi)始網(wǎng)站還可以訪問(wèn),進(jìn)入社區(qū)首頁(yè)就被卡死。

查看錯(cuò)誤日志,后臺(tái)使勁的刷日志,隨便查看了幾個(gè)IP,有印度的,美國(guó)的,菲律賓的等等,當(dāng)然大多數(shù)還是國(guó)內(nèi)的IP。一晚上的時(shí)間居然刷了上百兆日志(上次被D我清理過(guò)一次),反正我覺(jué)得是不少了,對(duì)比網(wǎng)站平時(shí)的訪問(wèn)量來(lái)說(shuō)。

之前有過(guò)幾次攻擊,但都是三三倆倆的過(guò)來(lái),使用Nginx禁掉IP就是了。然而此次,顯然不是禁掉IP可以解決問(wèn)題的了,這么多IP收集是個(gè)問(wèn)題(當(dāng)然可以通過(guò)正則匹配獲取),還有可能造成誤傷。

上班途中

然而上班才是正事,心思著一時(shí)半會(huì)解決不了問(wèn)題,瞄了一眼錯(cuò)誤日志,還在使勁的刷著,然后順手發(fā)了個(gè)朋友圈然后去洗漱:

記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

路上一路嘟念,心想是不是到了9點(diǎn),他們準(zhǔn)時(shí)下夜班然后就可以正常訪問(wèn)了,自我開(kāi)解一下。

上班中

到了公司,第一件事當(dāng)然是遠(yuǎn)程登錄下服務(wù)器,看了一下,錯(cuò)誤日志還在使勁刷。正常來(lái)說(shuō)這個(gè)是時(shí)間點(diǎn)是不會(huì)有用戶(hù)來(lái)訪問(wèn)的。

重啟了服務(wù)多次,訪問(wèn)一下首頁(yè)就被卡死,然后瞬間癱瘓,整個(gè)網(wǎng)站(社區(qū)+博客)都不能訪問(wèn)了。既然這樣,還是老實(shí)上班,坐等攻擊停止吧。

期間群里的小伙伴們問(wèn)網(wǎng)站怎么了,打不開(kāi)了椰?將近中午的時(shí)候,查看了一下錯(cuò)誤日志,還有那么幾個(gè)IP再?lài)L試請(qǐng)求不同的地址,一瞅就不是什么好東西,果斷deny了一下。話(huà)說(shuō),現(xiàn)在請(qǐng)求沒(méi)那么多了,重啟了一些Nginx 和 PHP 進(jìn)程,訪問(wèn)首頁(yè)還是卡死?真是怪了個(gè)蛋。

心想是不是RDS數(shù)據(jù)庫(kù)的問(wèn)題,查看了監(jiān)控報(bào)警面板,CPU和內(nèi)存利用率和當(dāng)前總連接數(shù)都正常,沒(méi)有什么異常,凌晨?jī)牲c(diǎn)-六點(diǎn)左右的確有波動(dòng),但是不至于被D死。既然都登錄了,要不順便把 ECS 和 RDS 都重啟了吧。

果然,重啟一下居然神奇的好了,吃午飯的時(shí)候還用手機(jī)訪問(wèn)了一下,正常,可以安心吃飯了。

問(wèn)題解決

其實(shí),最終問(wèn)題怎么解決的,我并不清楚,說(shuō)幾個(gè)比較疑惑的點(diǎn):

·ECS 服務(wù)器 CPU 和內(nèi)存也在正常閾值

·Nginx 和 PHP-FPM 進(jìn)程都分別重啟過(guò)

·RDS 數(shù)據(jù)庫(kù)連接數(shù)盡管有所波動(dòng),但是并沒(méi)有占滿(mǎn)未釋放

·看錯(cuò)誤日志請(qǐng)求都是來(lái)自上百個(gè)不同的IP,并且大多都是訪問(wèn)的社區(qū)URL

·還有這些肉雞為什么都是晚上?晚上便宜?還是說(shuō)在西半球組織攻擊

·此次是有針對(duì)性的,還是隨機(jī)的?但愿是隨機(jī)的

·中間停止過(guò)一次社區(qū),博客是可以一直正常訪問(wèn)的,懷疑是首頁(yè)數(shù)據(jù)庫(kù)查詢(xún)的問(wèn)題,基于連接數(shù)應(yīng)該不是這個(gè)問(wèn)題,難道是Discuz的Bug?但是后來(lái)重啟數(shù)據(jù)庫(kù)后的確可以正常訪問(wèn)了。

記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

其實(shí)阿里云有基礎(chǔ)的DDOS防護(hù),清洗觸發(fā)值:

·每秒請(qǐng)求流量:300M

·每秒報(bào)文數(shù)量:70000

對(duì)于一般小站來(lái)說(shuō),是萬(wàn)萬(wàn)不可能達(dá)到300M的流量閾值的,博客的CDN峰值才3M而已。

所以說(shuō),這些小波流的攻擊只能自身去默默承受,而機(jī)器配置不高,買(mǎi)不起帶寬只能任攻擊自由的撒歡,還不如直接關(guān)站,扔給他一個(gè)Nginx + 靜態(tài)頁(yè)面讓它D去吧。

記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

攻防策略

如果有人真D你的站點(diǎn),你還真沒(méi)有辦法,當(dāng)然我所說(shuō)的群體是針對(duì)中小站長(zhǎng)而言,你連DDOS基礎(chǔ)防護(hù)的清洗閾值都達(dá)不到。

如果你只是一個(gè)默默無(wú)聞的小站,根本不需要想那么多。盡管現(xiàn)在DDOS成本很低,但誰(shuí)不是無(wú)利不起早,除非你得罪了什么人。

當(dāng)然對(duì)于一般的攻擊我們也不能坐以待斃,這里總結(jié)了幾個(gè)小技巧,分享給大家,反向代理使用的是openresty。

Nginx優(yōu)化

Nginx號(hào)稱(chēng)最大并發(fā)5W,實(shí)際上對(duì)于中小站點(diǎn)來(lái)說(shuō)幾十或者上百個(gè)并發(fā)就不錯(cuò)了,最基本的參數(shù)就可以滿(mǎn)足需求。但是為了安全期間,我們最好隱藏其版本號(hào)。

# 隱藏版本,防止已知漏洞被利用server_tokens off; #在http 模塊當(dāng)中配置

PHP優(yōu)化

在php渲染的網(wǎng)頁(yè)header信息中,會(huì)包含php的版本號(hào)信息,比如: X-Powered-by: php/5.6.30,這有些不安全,有些黑客可能采用掃描的方式,批量尋找低版本的php服務(wù)器,利用php漏洞(比如hash沖突)來(lái)攻擊服務(wù)器。

# 隱藏版本,防止已知漏洞被利用php_admin_flag[expose_php] = off

IP黑名單

對(duì)付那種最low的攻擊,加入黑名單的確是一個(gè)不錯(cuò)的選擇,不然別人AB就能把你壓死:

# 在Nginx的http模塊添加以下配置即可deny 61.136.197.xxx;# 禁封IP段deny 61.136.197.0/24;

IP日訪問(wèn)次數(shù)

限制單個(gè)IP的日訪問(wèn)次數(shù),正常來(lái)說(shuō)一個(gè)用戶(hù)的訪問(wèn)深度很少超過(guò)10個(gè),跳出率一般在50%-70%之間。其實(shí)我們要做的把單個(gè)IP的日訪問(wèn)量控制在100甚至50以?xún)?nèi)即可。

限制并發(fā)數(shù)

光限制訪問(wèn)次數(shù)還是不夠的,攻擊者可能瞬間涌入成百上千的請(qǐng)求,如果這些請(qǐng)求到后端服務(wù),會(huì)打垮數(shù)據(jù)庫(kù)服務(wù)的,所以我們還要基于我們自身網(wǎng)站訪問(wèn)情況設(shè)置并發(fā)數(shù)。

·限制單個(gè)IP的并發(fā)數(shù)

·限制總并發(fā)數(shù)

這里建議大家使用漏桶算法限流,來(lái)整形流量請(qǐng)求。

配置CDN

基于帶寬以及正常用戶(hù)訪問(wèn)速度的考量,建議配置CDN,以下是博客的流量使用情況,峰值3MB,對(duì)于我這1MB帶寬的服務(wù)器肯定是抗不住啊,況且還有社區(qū)的訪問(wèn)。

記一次真實(shí)的網(wǎng)站被黑經(jīng)歷

配置緩存

數(shù)據(jù)庫(kù)資源是寶貴的,所以盡量不要讓請(qǐng)求直達(dá)后端。其實(shí)搬家之前,博客和社區(qū)都是配置過(guò)redis緩存的。由于之前購(gòu)買(mǎi)的Redis服務(wù)是專(zhuān)有網(wǎng)絡(luò),新賬號(hào)無(wú)法連接,然后就作罷了。

看來(lái)這次,需要在空閑服務(wù)器上配置一把了,反正閑著也是閑著,能起一丟丟作用也是好的。

·阿里云Redis加速Discuz論壇訪問(wèn)

·阿里云Redis加速Typecho博客訪問(wèn)

總結(jié)

前面也說(shuō)了,對(duì)于攻擊,小站真的無(wú)解,能做好基礎(chǔ)的防護(hù)就可以了。但是對(duì)于那些肉雞們或者即將成為肉雞的人來(lái)說(shuō):

·軟件漏洞一定要及時(shí)打補(bǔ)丁,時(shí)刻關(guān)注互聯(lián)網(wǎng)相關(guān)動(dòng)態(tài)。

·黑客利用被入侵的路由器獲取網(wǎng)絡(luò)流量,從而控制大連肉雞。

·大多數(shù)肉雞是沒(méi)有安全意識(shí)的,并且被長(zhǎng)期利用,經(jīng)發(fā)現(xiàn),不少是云服務(wù)商主機(jī)、托管服務(wù)器主機(jī),被黑客利用漏洞控制。

·DDoS黑客攻擊正在向產(chǎn)業(yè)化、平臺(tái)服務(wù)化轉(zhuǎn)變,如果有人想害你,一個(gè)按鈕、幾百塊錢(qián),就可以實(shí)現(xiàn)一整月的攻擊,然后一首《涼涼》送給自己。

本文名稱(chēng):記一次真實(shí)的網(wǎng)站被黑經(jīng)歷
當(dāng)前網(wǎng)址:http://bm7419.com/article20/iihoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站收錄、定制網(wǎng)站商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作