程序员VS黑客
互聯(lián)網(wǎng)行業(yè)里,但凡沒(méi)被黑客練過(guò)的系統(tǒng),都不夠成熟。
?
每年都有受黑客攻擊的互聯(lián)網(wǎng)行業(yè),尤其是互聯(lián)網(wǎng)金融行業(yè)更是深受其害。部分互金公司選擇了出錢消災(zāi),讓黑客們嘗到了甜頭,吸引了更多的人來(lái)躍躍欲試。說(shuō)到底,這是個(gè)技術(shù)安全的意識(shí)問(wèn)題。
?
我們也未能幸免,什么?DDOS 攻擊、SQL 注入、尋找系統(tǒng)漏洞等幾乎都經(jīng)歷過(guò),有的黑客想炫耀技術(shù),將漏洞放到烏云上面或者漏洞盒子里面讓廠商來(lái)修復(fù)。但更多的黑客完全就是威脅、敲詐撈錢。以下介紹幾種常見(jiàn)的黑客攻擊方式即防范辦法:
?
1
DDOS 攻擊
?
應(yīng)對(duì) DDOS 攻擊沒(méi)有比較好的辦法,只能盡量的避免,講講我的經(jīng)歷:之前遇到過(guò)官網(wǎng)打不開(kāi),后臺(tái)也登錄不了的狀況,登錄VPN查看服務(wù)器各項(xiàng)指標(biāo),也登錄不上去,運(yùn)維經(jīng)理也登錄不上。
?
這時(shí),機(jī)房來(lái)電話了,說(shuō)我們的一個(gè) IP 正經(jīng)歷著1G多的流量訪問(wèn),問(wèn)我們是否正在做什么活動(dòng),話還沒(méi)說(shuō)完流量已經(jīng)達(dá)到5G,不到一分鐘流量達(dá)18G之多。因?yàn)闄C(jī)房和集團(tuán)共用了一個(gè)寬帶入口,結(jié)果陸續(xù)集團(tuán)的網(wǎng)站、服務(wù)也都出現(xiàn)了問(wèn)題,機(jī)房服務(wù)商害怕引起更大的沖擊,直接把官網(wǎng)對(duì)外的IP 封掉,集團(tuán)的其它業(yè)務(wù)才慢慢恢復(fù)過(guò)來(lái),我們也緊急更換了外網(wǎng) IP,重新切換了域名解析才恢復(fù)。
?
事后我們根據(jù) apache 分析了日志,流量來(lái)自 N 多個(gè)不同的 IP 地址根本無(wú)法應(yīng)對(duì),這次攻擊也讓高層們重視了起來(lái),解決辦法是將公司機(jī)房的網(wǎng)絡(luò)和公司集團(tuán)徹底分離,這樣不管哪方受到大流量攻擊都不會(huì)相互影響。
?
也用了一些笨辦法,我們發(fā)現(xiàn)更換了外網(wǎng)IP之后攻擊也隨即停止,那么肯定是針對(duì)外網(wǎng)來(lái)攻擊的,所有多準(zhǔn)備了6個(gè)外網(wǎng) IP,當(dāng)監(jiān)控到對(duì)某一個(gè)外網(wǎng)進(jìn)行攻擊的時(shí)候馬上切換到另一個(gè)外網(wǎng)地址,盡管只能起到非常有限的作用。
?
為什么 DDOS 總是喜歡攻擊外網(wǎng) IP 呢,后來(lái)理解了。如果針對(duì)域名來(lái)攻擊的話,那不就是攻擊到域名商的服務(wù)器,域名商都比較強(qiáng)大,一般黑客搞不定。
?
2
如何正確的防止 DDOS 攻擊
?
第一種方案:
隱藏服務(wù)器外網(wǎng)地址,服務(wù)器前端加 CDN 中轉(zhuǎn),免費(fèi)的有百度云加速、360網(wǎng)站衛(wèi)士、加速樂(lè)、安全寶等,如果資金充裕的話,可以購(gòu)買高防的盾機(jī),用于隱藏服務(wù)器真實(shí) IP,域名解析使用 CDN 的 IP,所有解析的子域名都使用 CDN 的 IP 地址。此外,服務(wù)器上部署的其他域名也不能使用真實(shí) IP 解析,全部都使用 CDN 來(lái)解析。
?
第二種方案:
買一些安全產(chǎn)品來(lái)進(jìn)行流量清洗,主要是阿里云、騰訊云這種大廠商提供的一種服務(wù)。
?
第三種方案:
有很多的防火墻產(chǎn)品聲稱可以防止 DDOS 攻擊,但是我個(gè)人使用感覺(jué)效果非常有限。
?
3
SQL注入
?
如果官網(wǎng)使用的是 PHP 開(kāi)發(fā),由于框架比較老舊,存在著一些 SQL 注入的點(diǎn),被一些黑客找到了突破點(diǎn),有趣的是,一些黑客在漏洞盒子上面提交了 bug(如下圖),最后我們根據(jù)提示進(jìn)行了緊急修復(fù),也在 WAF 防火墻配置了一些攔截 SQL 注入的策略,起到雙保險(xiǎn)的作用。
?
?
為什么 PHP 一般比 Java 更容易暴露出 SQL 漏洞的情況?可能有兩方面的原因:
PHP 前端使用較多,受攻擊的機(jī)會(huì)更多一些,Java 一般做為后端服務(wù)攻擊的可能性會(huì)比較少;
?
PHP 框架較多而且很雜,很多早期的框架并沒(méi)有特別考慮 SQL 注入的情況,Java 大量普及了 mybaits\hibernate 這種 orm 框架,框架本身對(duì)常見(jiàn)的 SQL 注入有防范的功能,但不是說(shuō)mybaits/hibernate 框架就沒(méi)有被 SQL 注入的可能,大部分場(chǎng)景下可以。另外參數(shù)化查詢可以有效的避免 SQL 注入。
?
4
短信攻擊
?
現(xiàn)在的網(wǎng)站幾乎都有發(fā)送短信或者短信驗(yàn)證碼的功能,如果前端不做校驗(yàn),黑客會(huì)寫一個(gè) for 循環(huán)來(lái)發(fā)短信,一般系統(tǒng)的短信會(huì)進(jìn)行全方位的防控,比如:
前端加驗(yàn)證(字符驗(yàn)證碼,有的是拖拽的動(dòng)畫);
?
后端根據(jù)用戶或者 IP 加限制,比如用戶一分鐘只可以發(fā)送一條短信,忘記密碼的短信一天只能發(fā)送10條、一個(gè) IP 地址限制每天只能發(fā)送100條短信等。
?
5
如何防范
?
黑客攻擊未必完全是壞事,一方面說(shuō)明公司已經(jīng)吸引了很多人的關(guān)注,另一方對(duì)技術(shù)團(tuán)隊(duì)也是一次檢驗(yàn),黑客有時(shí)候會(huì)帶給你完全不同的思路想法。但是被黑客攻擊而影響了業(yè)務(wù),對(duì)內(nèi)對(duì)外造成大的影響,那就很嚴(yán)重了。安全防范是一個(gè)全面且持久的工程,在硬件和軟件上都要投入。
?
硬件方面
需要做好網(wǎng)絡(luò)安全規(guī)劃,機(jī)房常用的安全設(shè)備有:VPN 服務(wù)器、防火墻、WAF 防火墻。
-  VPN 服務(wù)器:主要用于運(yùn)維人員通過(guò)口令可以登錄到機(jī)房?jī)?nèi)網(wǎng)中進(jìn)行日常運(yùn)維工作,也可以用做不同機(jī)房網(wǎng)絡(luò)互通,保證在特定的網(wǎng)絡(luò)下信息傳輸安全。 ? 
-  防火墻 :外網(wǎng)訪問(wèn)進(jìn)入機(jī)房的第一道大門,負(fù)責(zé)三層網(wǎng)絡(luò)的安全檢測(cè),隔離內(nèi)網(wǎng)和外網(wǎng)環(huán)境,外網(wǎng)為非信任區(qū),內(nèi)網(wǎng)為信任區(qū)。 ? 
-  WAF 防火墻:最重要的安全設(shè)備之一,WAF 防火墻主要是對(duì) Web 特有入侵方式的加強(qiáng)防護(hù),如 DDOS 防護(hù)、SQL 注入、XML 注入、XSS 等。屬于應(yīng)用層的安全防護(hù),我們經(jīng)常遇到的黑客攻擊行為,主要就靠它的防護(hù)能力。 
?
軟件方面
軟件方面的防護(hù)主要有兩方面,一方面使用證書保證傳輸層的數(shù)據(jù)安全,另一方面所有對(duì)外的接口都需要做好安全規(guī)劃。
-  HTTPS 證書:在 web 服務(wù)器部署 HTTPS 證書,保證用戶在交互的過(guò)程中數(shù)據(jù)沒(méi)有被篡改。 ? 
-  網(wǎng)絡(luò)規(guī)劃:所有非必須的服務(wù)都不要開(kāi)放外網(wǎng)訪問(wèn),需要開(kāi)放外網(wǎng)訪問(wèn)的服務(wù)器僅開(kāi)放需要的端口,比如常用的 80。和合作公司有數(shù)據(jù)交互或者接口調(diào)用的需求,需要綁定固定的外網(wǎng)訪問(wèn)地址。 ? 
-  技術(shù)選擇:選擇成熟的框架可以避免很多安全問(wèn)題,早期的很多 PHP 框架根本就沒(méi)有考慮SQL 注入的相關(guān)問(wèn)題,當(dāng)初 strust2 的安全漏洞多少企業(yè)被坑。選擇成熟穩(wěn)定的技術(shù)體系可以避免很多低級(jí)的問(wèn)題。 
總結(jié)
 
                            
                        - 上一篇: 学习创业计划的意义
- 下一篇: Java集合基础练习题
