压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables 作為一個典型的包過濾防火墻體系,對于網絡層,傳輸層的數據包過濾具有非常優秀的性能和效率,然而,對于一些面向局域網上網用戶的Linux網關服務器,有時候還需要使用QQ,MSN等聊天,使用BT下載工具等現象進行封鎖。下面將介紹如何為Netfilter/Iptables 增加應用層過濾。

  QQ,MSN等聊天,使用BT下載工具均使用了相對固定的應用層協議。使用L7-filter項目的補丁文件包可以為linux內核增加相應的應用層過濾功能,結合其提供的l7-protocols第7層協議定義包,能夠識別不同應用層的數據特征

  L7-filter項目站點:http://l7-filter.sourceforge.net/  下載最新的補丁包及協議包

  內核站點:http://www.kernel.org    下載內核,iptables的源碼包

  注意:L7-filter補丁包內的數據,要與內核及iptables源碼版本相匹配

  將netfilter-layer7 源碼包中的對應補丁文件添加到內核源碼中,對內核進行重新編譯,安裝,安裝后使用新內核啟動Linux操作系統。

  注意:源碼目錄所在分區至少保持有2.5G的剩余磁盤空間。

  1  wget http://jaist.dl.sourceforge.net/project/l7-filter/l7-filter%20kernel%20version/2.22/netfilter-layer7-v2.22.tar.gz

  2  wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.8.tar.xz

  3  wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2

  4  wget http://jaist.dl.sourceforge.net/project/l7-filter/Protocol%20definitions/2009-05-28/l7-protocols-2009-05-28.tar.gz

  幫助文件:http://l7-filter.sf.net/HOWTO-kernel

  netfilter-layer7:netfilter-layer7-v2.22.tar.gz

  Linux內核源碼包:linux-2.6.28.8.tar.xz

  l7-protocols協議包:l7-protocols-2009-05-28.tar.gz

  iptables源碼包:iptables-1.4.2.tar.bz2

  內核編譯步驟:

  解包

  配置make menuconfig

  編譯

  安裝

  1.解壓釋放netfilter-layer7 和內核源碼包,使用patch工具合并補丁文件

  1 yum -y install xz

  2 xz -d linux-2.6.28.8.tar.xz

  3 tar xf linux-2.6.28.8.tar -C /usr/src/

  4 tar xf netfilter-layer7-v2.22.tar.gz -C /usr/src/

  5 cd /usr/src/linux-2.6.28.8/

  6 patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch

  ——————————————————————————

  7 patching file net/netfilter/Kconfig

  8 Hunk #1 succeeded at 757 with fuzz 1 (offset -38 lines).

  9 patching file net/netfilter/Makefile

  10 Hunk #1 succeeded at 78 with fuzz 2 (offset -6 lines).

  11 patching file net/netfilter/xt_layer7.c

  12 patching file net/netfilter/regexp/regexp.c

  13 patching file net/netfilter/regexp/regexp.h

  14 patching file net/netfilter/regexp/regmagic.h

  15 patching file net/netfilter/regexp/regsub.c

  16 patching file net/netfilter/nf_conntrack_core.c

  17 Hunk #1 succeeded at 206 (offset 5 lines).

  18 patching file net/netfilter/nf_conntrack_standalone.c

  19 Hunk #1 succeeded at 162 (offset -3 lines).

  20 patching file include/net/netfilter/nf_conntrack.h

  21 patching file include/linux/netfilter/xt_layer7.h

  2.重新配置內核編譯參數,添加state機制及layer7支持

  使用當前RHEL5系統的內核配置文件作為參考,在此基礎上添加新的功能

  1 cp /boot/config-2.6.18-194.el5 .config

  2 make menuconfig

  在配置界面中,方向鍵用于定位需要配置的項目

  select進入子配置菜單

  exit返回上一層

  help查看幫助信息

  空格切換所選項目的編譯類型

  三種狀態:

  []表示不需要該功能

  [M]將功能編譯成模塊

  [*]將功能直接編入內核

  Networking support —> Networking options —> Network packet filtering framework (Netfilter) —> Core Netfilter Configuration —>

  <M> Netfilter connection tracking support

  <M>   "layer7" match support

  <M>   "string" match support

  <M>   "time" match support

  <M>   "iprange" address range match support

  <M>   "connlimit" match support"

  <M>   "state" match support

  <M>   "conntrack" connection match support

  <M>   "mac" address match support

  <M>   "multiport" Multiple port match support

  Networking support —> Networking options —> Network packet filtering framework (Netfilter) —> IP: Netfilter Configuration —>

  <M> IPv4 connection tracking support (required for NAT)

  <M>   Full NAT

  <M>     MASQUERADE target support

  <M>     NETMAP target support

  <M>     REDIRECT target support

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

 Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  Netfilter/Iptables Layer7 應用層過濾策略

  使用Exit返回 最后當提示保存時,使用Yes確認保存,修改將保存到源碼目錄中的.config文件中。

  /usr/src/linux-2.6.28.8/.config

  3.編譯新內核,并安裝新內核文件

  1  make && make modules_install && make install

  新內核編譯安裝過程將花費較長時間,數十分鐘到數小時不等

  新內核文件被安裝到/boot目錄,模塊文件將復制到/lib/modules/2.6.28

  1 [root@www iptables-1.4.2]# ls -l /boot/*2.6.28*

  2 -rw——- 1 root root 2604581 12-08 10:16 /boot/initrd-2.6.28.8.img

  3 -rw-r–r– 1 root root 1129804 12-08 10:15 /boot/System.map-2.6.28.8

  4 -rw-r–r– 1 root root 2102800 12-08 10:15 /boot/vmlinuz-2.6.28.8

  5 [root@www iptables-1.4.2]# du -sh /lib/modules/2.6.28.8/

  6 318M/lib/modules/2.6.28.8/

  如果編譯內核,途中斷過,想重新編譯,那么先使用

  make mrproper    刪除不必要的文件和目錄,初次編譯內核不需要

  make clean       刪除不必要的模塊和文件

  4.調整GRUB引導菜單,使系統以新內核啟動,然后重啟linux服務器

  1 vi /boot/grub/grub.conf

  2 default=0

  3 timeout=5

  4 splashimage=(hd0,0)/grub/splash.xpm.gz

  5 hiddenmenu

  6 title Red Hat Enterprise Linux Server (2.6.28.8)

  7 root (hd0,0)

  8 kernel /vmlinuz-2.6.28.8 ro root=LABEL=/ rhgb quiet

  9 initrd /initrd-2.6.28.8.img

  10 title Red Hat Enterprise Linux Server (2.6.18-194.el5)

  11 root (hd0,0)

  12 kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet

  13 initrd /initrd-2.6.18-194.el5.img

  14 reboot

  重新編譯安裝iptables及安裝l7-protocols協議包

  除了要對linux內核應用layer7補丁以外,對iptables同樣需要應用layer7補丁,才能完整實現應用層過濾功能,在解包后的/usr/src/netfilter-layer7-v2.22/目錄中也包括針對iptables源碼包的補丁文件。l7-protocols協議包用于為iptables提供判斷別應用層數據的特征依據。

  1.卸載原有系統中的iptables

  1 cp /etc/rc.d/init.d/iptables /tmp/          備份iptables啟動腳本

  2 cp /etc/sysconfig/iptables.config /tmp      備份iptables配置文件

  3 rpm -e iptables-ipv6 iptables iptstate –nodeps

  2.解壓釋放iptables,并應用補丁文件(復制extensions子目錄即可)

  1 tar xf iptables-1.4.2.tar.bz2 -C /usr/src/

  2 cd /usr/src/iptables-1.4.2/

  3 cp /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*   extensions/

  3.配置,編譯并安裝iptables,需要使用–with-ksource 參數指定內核源碼路徑

  1 ./configure –prefix=/ –with-ksource=/usr/src/linux-2.6.28.8

  2 make && make install

  4.安裝l7-protocols協議包

  1 tar xf l7-protocols-2009-05-28.tar.gz

  2 cd l7-protocols-2009-05-28

  3 make install

  5.恢復iptables啟動腳本及配置文件

  1 cp /tmp/iptables /etc/init.d/iptables

  2 cp /tmp/iptables.config /etc/sysconfig/iptables.config

  3 vim /etc/rc.d/init.d/iptables 編輯iptables啟動腳本

  把$iptables的路徑改成/sbin/$iptables

  1 service iptables start

  2 chkconfig iptables on

  如果在防火墻啟動的時候報錯

  Loading additional iptables modules: ip_conntrack_netbios_n[FAILED]

  vi /etc/sysconfig/iptables-config

  注釋掉

  #IPTABLES_MODULES="ip_conntrack_netbios_ns"

  使用iptables 設置應用層過濾規則

  使用layer7顯示匹配策略過濾使用QQ,MSN Edonkey等應用層協議的數據訪問

  1 iptables -A FORWARD -m layer7 –l7proto qq -j DROP

  2 iptables -A FORWARD -m layer7 –l7proto msn-filetransfer -j DROP

  3 iptables -A FORWARD -m layer7 –l7proto msnmessenger -j DROP

  4 iptables -A FORWARD -m layer7 –l7proto bittorrenr -j DROP

  5 iptables -A FORWARD -m layer7 –l7proto xunlei -j DROP

  6 iptables -A FORWARD -m layer7 –l7proto edonkey -j DROP

  使用–connlimit 顯示匹配進行數據并發連接控制,超過100個并發連接將拒絕

  1 iptables -A FORWARD -p tcp –syn -m connlimit –connlimit-above 100 -j DROP

  使用–time顯示匹配根據時間范圍設置訪問策略,允許周一到周五 8:00-18:00之間的數據訪問

  1 iptables -A FORWARD -p tcp –dport 80 -m time –timestart 8:00 –timestop 18:00 –weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT

  星期一 MON

  星期二 TUE

  星期三 WED

  星期四 THU

  星期五 FRI

  星期六 SAT

  星期天 SUN

  使用string顯示匹配策略過濾包含tencent,verycd,***,***的網絡訪問

  1 iptables -A FORWARD -p udp –dport 53 -m string –string "qq" –algo bm -j DROP

  2 iptables -A FORWARD -p udp –dport 53 -m string –string "tencent" –algo bm -j DROP

  3 iptables -A FORWARD -p udp –dport 53 -m string –string "verycd" –algo bm -j DROP

  4 iptables -A FORWARD -p udp –dport 53 -m string –string "***" –algo bm -j DROP

  5 iptables -A FORWARD -p udp –dport 53 -m string –string "***" –algo bm -j DROP

  其中–algo參數用于指定字符串識別算法,bm 或 kmp

  備注1:

  XZ壓縮最新壓縮率之王

  xz是絕大數linux默認就帶的一個壓縮工具。壓縮的比例大,但是時間慢

  xz -z 要壓縮的文件

  如果要保留被壓縮的文件加上參數 -k ,如果要設置壓縮率加入參數 -0 到 -9調節壓縮率。如果不設置,默認壓縮等級是6.

  xz -d 要解壓的文件

  同樣使用 -k 參數來保留被解壓縮的文件。

  創建或解壓tar.xz文件的方法

  習慣了tar czvf或tar xzvf的人可能碰到tar.xz也會想用單一命令搞定解壓或壓縮。其實不行

  tar里面沒有征對xz格式的參數比如:

  z是針對gzip

  j是針對 bzip2

  創建tar.xz文件:只要先tar cvf Crushlinux.tar Crushlinux/這樣創建Crushlinux.tar文件先,然后使用xz -z Crushlinux.tar來將Crushlinux.tar壓縮成為Crushlinux.tar.xz

  解壓tar.xz文件:先xz -d Crushlinux.tar.xz將Crushlinux.tar.xz解壓成Crushlinux.tar 然后,再用tar xvf Crushlinux.tar來解包
   
    文章來源:http://crushlinux.blog.51cto.com/2663646/1588574

 

上一篇:安卓防火墻 PS DroidWall

下一篇:虛擬化技術打造安全政務云數據中心