Centos5下安装iptables以及layer7协议

系统 Linux
CentOS(Community ENTerprise Operating System)是Linux发行版之一,当我们使用CentOS时,我建议大家配置一个iptables,iptables 是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统.非常好用。本文为大家介绍Centos5下安装iptables以及layer7协议.

Centos5iptables-p2p补丁和layer7扩展。

  一、 准备工作

  根据内核版本的相关性我还是选择了linux-2.6.18.8这个内核的版本。

  1、下载相关程序

  下载 kernel源码和源码patch

  http://www.kernel.org/pub/linux/kernel/v2.6/

  下载iptables源码

  ftp://ftp.netfilter.org/pub/iptables/

  下载netfiter扩展

  ftp://ftp.netfiter.org/pub/patch-omatic-ng/snapshot

  http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/

  下载layer7扩展(第一个为layer7协议,第二个为layer7内核与iptables的补丁)

  wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2007-11-22.tar.gz

  wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.16.1.tar.gz

  2、解压相关程序

  tar zxvf linux-2.6.18.8.tar.gz -C /usr/src/

  tar jxvf iptables-1.3.8.tar.bz2 -C /usr/src/

  tar jxvf patch-o-matic-ng-20071120.tar.bz2 -C /usr/src/

  tar zxvf l7-protocols-2007-11-22.tar.gz

  tar zxvf netfilter-layer7-v2.16.1.tar.gz

  3、定义相关符号链接

  ln -s /usr/src/linux-2.6.18.8 /usr/src/linux

  ln -s /usr/src/iptables-1.3.8 /usr/src/iptables

#p#

  二、 内核打补丁

  1、修改内核源代码相关参数

  1、设置fd_set支持的最大数量

  a、修改vi /usr/include/bits/typesizes.h

  #define __FD_SETSIZE 1024 ---> 65536

  b、修改vi /usr/src/linux/include/linux/posix_types.h

  #define __FD_SETSIZE 1024 ---> 65536

  2、修改vi /usr/src/linux/include/linux/fs.h

  设置最大打开文件数量(TCP连接数量)

  #define INR_OPEN 1024 ---> 65536

  #define NR_FILE 8192 ---> 65536

  3、修改vi /usr/src/linux/include/net/tcp.h

  a、设置TIMEOUT的时间为1秒

  #define TCP_TIMEWAIT_LEN (60*HZ) 60 ---> 1*HZ

  b、设置在backlog队列里的半连接的重试次数,每次都会花相应的时间,本质上也是减少重试时间

  #define TCP_SYNACK_RETRIES 5 ---> 3

  2、读取原有的配置

  首先做一个配置上的保存

  cp /boot/config-2.6.18-8.el5 /usr/src/linux/.config

  cd /usr/src/linux/

  make menuconfig

  选择 Load an Alternate Configuration File

  选择 .config

  保存 退出

  3、内核打补丁

  cd /usr/src/linux

  gunzip ../patch-2.6.18.8.gz |patch -p1

  4、内核打layer7补丁

  cd /usr/src/linux

  patch –p1

#p#

 

  三、安装netfilter扩展

  1、安装netfilter扩展

  cd /usr/src/patch-o-matic-ng-20071120

  首先下载相关的扩展

  ./runme –download

  定义环境变量

  export KERNEL_DIR=/usr/src/linux

  export IPTABLES_DIR=/usr/src/iptables

  安装iptables netfilter的扩展项(我安装了以下项目)

  ./runme ipp2p

  ./runme time

  ./runme connlimit

  ./runme u32

  ./runme geoip

#p#

  四、配置内核选项

  cd /usr/src/linux

  make menuconfig

  networking

  networking options

  network packet filtering (replaces ipchains)

  IP:Netfilter Configuration

   Layer 7 match support (EXPERIMENTAL)

  [*] Layer 7 debugging output

   IPP2P match support

   TIME match support

   Connections/IP limit match support

   U32 match support

   geoip match support

  把 Layer 7 match 、ipp2p、time、 Connections/IP 、u32选上

  去除Selinux相关

  Security options

  NSA SELinux Support 选项 去除

  同时保存 退出

  vi /etc/sysconfig/selinux

  SELINUX=disabled

#p#

  五、开始编译并安装

  make

  make modules_install

  make install

  2.6的kernel的编译把make bzImage make modules等步骤都在make一步都搞定,以前还要cp 内核和System.map,修改Grub.conf的步骤,统统make install搞定了。

  六、设置grub.conf

  设置default=0的相关项 主要是将我们配置好的新的内核启动的设置为缺省启动

  重新启动计算机

#p#

  七、安装新版本iptables以及layer7协议

  1、cd /usr/src/iptables

  export KERNEL_DIR=/usr/src/linux

  export IPTABLES_DIR=/usr/src/iptables

  patch -p1 < ../netfilter-layer7-v2.16.1/iptables-1.3-for-kernel-pre2.6.20-layer7-2.16.1.patch

  chmod +x ./extensions/.layer7-test

  make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man

  make install BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man

  2、安装l7-filter协议文件:

  cd /usr/src/l7-protocols-2007-11-22

  make install

  同时要注意layer7屏蔽的信息会在终端画面显示,可以通过改变以下参数来关闭终端的显示:

  vi /etc/sysconfig/syslog

  KLOGD_OPTIONS="-x -c 3"

  修改好以后要重置syslogd服务

  killall -HUP syslogd

  3、以下为关于layer7如何屏蔽信息的相关知识

  l7-filter 的語法與 iptables 類似, 在使用上差不多, 其格式大致如下:

  iptables -t mangle -I POSTROUTING -m layer7 --l7proto http -j DROP

  ─┬── ───┬──── ──┬── ───┬───

  使用 mangle 表格 │ 符合 Layer 7 的封包 │

  使用 POSTROUTING 鏈 Layer 7 封包的通訊協定

  其中比較需要注意的只有 --l7proto 參數後面所使用的 Layer 7 封包通訊協定, 它就是我們所要阻擋的封包類型。至於如何知道該填哪些名稱, 可由我們所安裝的 l7-filter 樣式檔得知。請檢視 /etc/l7-protocols 目錄下的 file_types、 protocols、weakpatterns、extra 及 malware 子目錄下附檔名為 pat 的檔案, 它們就是 l7-filter 的樣式檔。裡面有簡單的說明, 告訴您這個樣式檔可以過濾哪些類型網路軟體的封包, 以及它的過濾規則。而 --l7proto 參數後面僅需填樣式檔的名稱即可 (不含附檔名)。

  過濾常見的即時通訊軟體

  常見的即時通訊軟體有 MSN Messenger、Yahoo Messenger 和 ICQ, 若要擋下這些軟體, 所需要用到的 l7-filter 樣式檔有 /etc/l7-protocols/protocols/ 目錄下的 msnmessenger.pat、yahoo.pat 與 aim.pat。其中因為 ICQ 已經賣給 AOL (American online), 所以亦叫 AIM (AOL instant messenger)。

  知道要使用哪些 l7-filter 樣式檔之後, iptables 的寫法如下:

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto msnmessenger -j DROP

  ↑阻擋 MSN Messenger

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto yahoo -j DROP

  ↑阻擋 Yahoo Messenger

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto aim -j DROP

  ↑阻擋 ICQ

  設定好後, 可如下檢視:

  # iptables -t mangle -L POSTROUTING

  ↑檢視 mangle 表格的 POSTROUTING 鏈

  Chain POSTROUTING (policy ACCEPT)

  target prot opt source destination

  DROP all -- anywhere anywhere LAYER7 l7proto aim

  DROP all -- anywhere anywhere LAYER7 l7proto yahoo

  DROP all -- anywhere anywhere LAYER7 l7proto msnmessenger

  ↑阻擋常見的即時通訊軟體

  此後,只要使用者開啟即時通訊軟體時, 就會發現無法連上網路:

  過濾常見的 P2P 軟體

  常見的 P2P 軟體有 eMule、eDonkey、Kazaa 與 Bittorrent...等, 要擋這些軟體需要用到的 l7-filter 樣式檔有 /etc/l7-protocols/protocols 目錄下的 bittorrent.pat 與 fasttrack.pat

  和 /etc/l7-protocols/weakpatterns 目錄下的 edonkey.pat 檔。

  其中 bittorrent.pat 可以阻擋所有使用 bittorrent 通訊協定的軟體, 如 ABC、Bitcomet ...等。fasttrack.pat 可以阻擋 kazaa。edonkey.pat 可以阻擋所有使用 eDonkey 通訊協定的軟體, 如 eDonkey 與 eMule... 等。

  設定方式如下:

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto bittorrent -j DROP ←阻擋 bittorrent 通訊協定

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto fasttrack -j DROP ←阻擋 kazaa

  # iptables -t mangle -I POSTROUTING -m layer7 --l7proto edonkey -j DROP ←阻擋 eDonkey

  檢視 mangle 表格的 POSTROUTING 鏈:

  # iptables -t mangle -L POSTROUTING

  Chain POSTROUTING (policy ACCEPT)

  target prot opt source destination

  DROP all -- anywhere anywhere LAYER7 l7proto edonkey

  DROP all -- anywhere anywhere LAYER7 l7proto fasttrack

  DROP all -- anywhere anywhere LAYER7 l7proto bittorrent

  DROP all -- anywhere anywhere LAYER7 l7proto aim

  DROP all -- anywhere anywhere LAYER7 l7proto yahoo

  DROP all -- anywhere anywhere LAYER7 l7proto msnmessenger

  這樣 P2P 軟體使用時會發生連線錯誤,日後也不能使用了。

  l7-filter 還可以過濾很多的封包, 比方說可以限制傳輸 jpg 或 gif 格式的圖檔。當然還有其他更多的功能, 您可以自行閱讀 /etc/l7-protocols/ 目錄下的 l7-filter 樣式檔的說明以取得相關資訊

  察看目前使用的模块

  # lsmod

  八、测试

  uname -r 显示内核版本

  iptables -V 显示iptables版本

  ulimit -a 显示最大打开文件等参数

  top 选择1 看多cpu支持情况

通过长篇文章的介绍,我们知道了Centos5下安装iptables以及layer7协议,希望对大家有所帮助!

【编辑推荐】

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-17 16:55:25

iptableslinuxhowto

2012-09-17 16:41:04

CentOS5Puppet

2011-03-29 13:25:13

Zabbix安装

2010-03-31 13:04:37

CentOS安装

2011-03-02 13:45:08

FileZilla

2021-06-29 12:10:48

CentOSMySQL工具

2011-03-16 11:39:03

2011-03-16 12:46:29

CentOSiptables防火墙

2012-07-11 17:09:34

Windows 7CentOS

2017-07-05 15:00:51

CentosLinuxMysql

2010-01-13 17:54:48

CentOS 5安装

2009-07-26 09:28:15

CentOS 5SUN JAVAJRE 1.6

2021-07-09 07:40:06

CentOS 7GitLab开源

2022-02-14 07:47:30

巡风CentOS7漏洞扫描

2023-11-09 07:44:21

2010-03-30 09:57:21

CentOS安装

2013-09-09 10:55:07

2011-03-02 09:52:03

2010-06-01 09:25:14

Centos下安装mr

2011-03-10 15:44:18

CentOSLAMP安装
点赞
收藏

51CTO技术栈公众号