最近有一個(gè)不成熟的想法济舆,經(jīng)過(guò)簡(jiǎn)單的測(cè)試應(yīng)該可以實(shí)現(xiàn),但是實(shí)現(xiàn)的效果并不好莺债,感覺(jué)還需要提高一些內(nèi)在的能力
端口復(fù)用
在使用 Socket 編程時(shí)有一個(gè)很不錯(cuò)的功能就是端口復(fù)用滋觉,最早了解端口復(fù)用是在接觸木馬的時(shí)候?qū)W習(xí)到的,它可以通過(guò)端口復(fù)用來(lái)隱藏木馬的端口齐邦,在隱藏端口的同時(shí)可以嗅探椎侠、截獲、甚至篡改和截?cái)喟l(fā)往原本端口上的數(shù)據(jù)措拇。不過(guò)端口復(fù)用不單單是用在惡意程序的開(kāi)發(fā)上我纪,后來(lái)了解到端口復(fù)用不但可以用在惡意程序的開(kāi)發(fā)上,還可以用在服務(wù)器開(kāi)發(fā)的優(yōu)化上丐吓,真的很強(qiáng)大浅悉。
Web 防火墻
既然端口復(fù)用可以綁定到同一個(gè)端口上,那么自己寫(xiě)一個(gè)端口復(fù)用的程序綁定到 Nginx 或 Apache 等服務(wù)器上券犁,那么是不是就可以在 Nginx 或 Apache 之前拿到 HTTP 的請(qǐng)求頭呢术健?為了驗(yàn)證這個(gè)想法,我寫(xiě)了一個(gè) Demo 進(jìn)行測(cè)試粘衬,也驗(yàn)證了自己的想法的確是可以的荞估。Web 防火墻的大致示意圖如下:
瀏覽器直接訪問(wèn)端口復(fù)用的 Nginx 的代理咳促,然后由端口復(fù)用的 Nginx 的代理去和 Nginx 服務(wù)器建立連接,這樣在整個(gè)代理的部分就可以設(shè)置很多規(guī)則來(lái)過(guò)濾有惡意的 HTTP 請(qǐng)求了勘伺。
補(bǔ)充
其實(shí)思來(lái)想去跪腹,這種實(shí)現(xiàn)也許效率不高,還可以使用其他的方式進(jìn)行實(shí)現(xiàn)飞醉,比如還可以使用 HOOK冲茸、底層的過(guò)濾驅(qū)動(dòng),或者一些入侵檢測(cè)或防火墻的庫(kù)進(jìn)行開(kāi)發(fā)缅帘。其實(shí)有了想法我應(yīng)該先去網(wǎng)上找找是否有相應(yīng)的實(shí)現(xiàn)噪裕,或者是否有人已經(jīng)否定了這種想法。而且我覺(jué)得 Nginx 本身應(yīng)該是具備相應(yīng)的功能的股毫,畢竟我對(duì) Nginx 并不熟悉,具體行不行也不清楚召衔。