L7 filter的安裝可參考官網, 步驟為:
1. Patch kernel, 並打開kernel選項
2. 把l7 match加到iptables的extensions裡
3. 下載protocol pattern files
使用的指令:
iptables [-t table -A chain] -m layer7 --l7proto [protocol name] -j [action]舉例來說, 若要擋yahoo即時通:
iptables -t mangle -A PREROUTING -m layer7 --l7proto yahoo -j DROP從net/netfilter/xt_layer7.c中可看出 (雖然不是很懂), 基本上他的作法就是抓TCP/UDP header後的payload跟protocol pattern file (*.pat) 內的regular expression利用regexec做比對.
在"L7-filter Pattern Writing HOWTO"中, 介紹如何透過regular expression去增加自己的filter. (題外話, 文中也講到regex API在kernel space與user space是有點差異的)
拿HTTP的一個封包來看
可以用下列的regex來辨識
http http/(0\.9|1\.0|1\.1) [1-5][0-9][0-9]但真的要自己寫出個堪用的pattern還是照L7-filter Pattern Writing HOWTO上的準則去做比較可行.
參考資料:
[1] Application Layer Packet Classifier for Linux
[2] 在 C 程式中,使用 Regex (Regular Expression) library
沒有留言:
張貼留言