第一代各種Web應(yīng)用防火墻的缺陷匯總
0x01 部署
a.偽透明模式:第一代的WAF大多只能支持200個Web以下,或者同一個D類子網(wǎng)內(nèi)的透明。無法做到網(wǎng)線級別的透明。第一代多數(shù)為偽透明部署(需要設(shè)置IP地址、端口、域名等信息),無法做到自適應(yīng)(接入即可防護(hù))。
b.極少有支持路由模式的:第一代的WAF多數(shù)沒有這個功能。路由模式可以只將HTTP流量給WAF檢測。比如出口是1000Mbps的,而Web帶寬只有100Mbps,如果不支持路由模式,就只能浪費的去使用1000Mbps的設(shè)備。
c.雞肋的代理模式:這個幾乎都有的功能,性能之差可想而知,一次請求要建2次連接。并發(fā)數(shù)降低一半,帶寬消耗增加一倍,非常不好。
0x02 檢測手段
a.IPS修改而來:基本依賴字符串匹配與正則表達(dá)式,修改國外SNORT的引擎而來,解碼不完善、效率極低。Unicode編碼的幾乎很少有支持的。數(shù)據(jù)包碎片很容易繞過檢測引擎。
b.基于策略:國外廠商比較喜愛,但配置及其復(fù)雜,網(wǎng)頁個數(shù)多的情況下,性能呈幾何方式下降。在一個超過30個網(wǎng)站的網(wǎng)絡(luò)里,幾乎不可用。利用一些CMS的漏洞,很容易繞過國外廠商此種WAF的檢測。
0x03規(guī)則
a.簡單的字符串過濾規(guī)則:比如把select、insert等加為過濾關(guān)鍵字,一旦遇到此種字符串就視為攻擊,誤報極為嚴(yán)重。繞過方法也很簡單,稍微大小寫變化即可,比如寫成:sEleCt,INsErT。有的甚至把一個短語寫好多種寫法,比如and,規(guī)則寫6條AND/aND/AnD/And/anD/aNd。如果一個短語很長,這種規(guī)則如何匹配呢?
b.規(guī)則過多:無用規(guī)則占多數(shù),檢測速度極為緩慢。如有的廠商采用美國開源的“SNORT”或者“MOD_SECURITY”規(guī)則,規(guī)則數(shù)量很多,但誤報嚴(yán)重,有的甚至為雞肋。國內(nèi)CMS的漏洞無法防御。
0x04 性能。
a.每秒處理HTTP請求數(shù):熟話說“外行看熱鬧,內(nèi)行看門道”。很多人都認(rèn)為吞吐量的大小是評價WAF性能的指標(biāo),比如是200Mbps還是1000Mbps。在請求量低的情況下,一個偽千兆口的“百兆WAF”一般都可以吞吐700Mbps的數(shù)據(jù)量。實際上“每秒處理HTTP請求數(shù)”才是衡量WAF的關(guān)鍵指標(biāo)。有的廠商,甚至把每秒請求數(shù)在1萬的WAF當(dāng)千兆的產(chǎn)品來慢,實際其真正能力只在兩百兆左右。一個千兆的WAF,每秒處理HTTP請求數(shù)量至少得在5萬以上,才可能真正可以處理大量的請求。
b.客戶并發(fā)數(shù)低:很多WAF都是采用反向代理或者透明反向代理的工作方式。這些方式下,并發(fā)數(shù)都很難高于2萬,國外(俄羅斯)性能最好的反向代理服務(wù)器也只能達(dá)到2.5萬并發(fā),所以采用反向代理的WAF并發(fā)數(shù)低就不足為奇了。一旦并發(fā)超過2萬,網(wǎng)絡(luò)立即拒絕服務(wù)。