科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道用IPTables实现字符串模式匹配(3)

用IPTables实现字符串模式匹配(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

iptables防火墙引入了很多重要的改进,比如基于状态的防火墙,基于任何 TCP标记和MAC地址的包过滤,更灵活的配置和记录功能,强大而且简单的NAT功能和透明代理功能,通过速度限制实现DoS的阻止。

作者:51CTO.COM 2007年11月8日

关键字: iptables Linux 字符串 匹配

  • 评论
  • 分享微博
  • 分享邮件

  现在我们将准备应用试验部分的补丁,比如字符串模式匹配的支持。运行:

  make patch-o-matic KERNEL_DIR=/usr/src/linux-2.4.16

  在这个交互式的过程中,回答y(yes)以便应用string.patch。程序将遍历所有的可用的补丁,包括那些稳定的。

  Testing... string.patch NOT APPLIED ( 2 missing files)

  The string patch:

  Author: Emmanuel Roger

  Status: Working, not with kernel 2.4.9

  This patch adds CONFIG_IP_NF_MATCH_STRING which allows you to

  match a string in a whole packet.

  THIS PATCH DOES NOT WORK WITH KERNEL 2.4.9 !

  Do you want to apply this patch [N/y/t/f/q/?] y

  其余的补丁也许也让你非常感兴趣,不过它们与本文并不相关。如果你选择安装任何别的补丁,请注意开发者给出的警告信息,其中包括了补丁的功能(比如dropped表的补丁)确定你没有安装MAC过滤的补丁,因为最近发现这个补丁包含一个漏洞。

  现在我们开始编译用户空间程序和相关的Libraries:

  make KERNEL_DIR=/usr/src/linux-2.4.16

  然后我们安装它们(iptables在/usr/local/user/sbin,libraries在/usr/local/lib/iptables)在root身份下执行以下内容:

  make install KERNEL_DIR=/usr/src/linux-2.4.16

  紧接着我们配置和编译核心:

  Now we are ready to compile the user-space code and the libraries:

  make KERNEL_DIR=/usr/src/linux-2.4.16

  and then install them (iptables program goes in /usr/local/user/sbin and libraries go into /usr/local/lib/iptables). As root:

  cd /usr/src/linux-2.4.16

  可以使用任何的核心配置方法。有关详细的配置核心的方法,可以查阅Internet资源,Internet上有大量的这方面的文档,比如kernel HOWTO等。以下简要介绍一下:

  make xconfig

  在GUI界面下,选择Netfilter配置选项,然后在Strings match support前选择m(模块支持)

  然后执行通常的操作:

  make dep;make bzImage;make modules;make modules_install

  现在按照你喜欢的方式安装核心,并重新启动。重新启动系统以后,测试一下iptables是否支持模式匹配功能,在root身份下执行:

  /usr/local/sbin/iptables -m string -help

  该命令将显示如下标准的iptables帮助信息:

  STRING match v1.2.4 options:

  --string [!] string Match a string in a packet

  该功能允许你对匹配数据包的内容,我们可以通过netcat或者telnet来测试这一功能,从而确定我们确实可以获得数据包的内容。

  运行:

  iptables -A INPUT -m string --string "test" -j LOG --log-level

  info --log-prefix "TEST"

  然后启动一个netcat的服务器:

  nc -l -p 3456

  然后连接该netcat服务器:

  telnet localhost 3456

  然后输入:

  test

  whatevertestdoes

  这样将引起iptables产生一个简单的记录,我们在记录文件中将会看到如下的信息(当然你需要设置了记录信息的级别为info)

  Nov 27 23:16:53 pua kernel:

  TEST IN=lo OUT=MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00

  SRC=127.0.0.1 DST=127.0.0.1 LEN=2154 TOS=0x00 PREC=0x00 TTL=64

  ID=42880 DF PROTO=TCP SPT=3128 DPT=33018 WINDOW=32767 RES=0x00 ACK PSH URGP=0

  Nov 27 23:16:53 pua kernel:

  TEST IN=lo OUT=MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00

  SRC=127.0.0.1 DST=127.0.0.1LEN=1830 TOS=0x00 PREC=0x00 TTL=64

  ID=17451 DF PROTO=TCP SPT=8000 DPT=33017 WINDOW=32767 RES=0x00 ACK PSH URGP=0

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章