Iptables的使用介绍.

网络安全的最后一道屏障:
后退前进

2. Linux平台的安全性

Linux 内核2.4 版本中整合了NetFilter框架,该框架是Linux平台新的网络安全功能框架,实现了多种网络安全功能:数据包过滤、状态保持、NAT,连同抗攻击等等。我们熟知的Iptables,仅仅是NetFilter框架在用户空间的配置工具,负责从用户命令行界面接收命令,然后转化成内核认识的结构体,调用相应的内核操作函数,将规则插入到内核中去。

Iptables的使用方法请参见本文的附件:《Iptables使用方法详解》。或在Linux命令行界面中键入"man iptables",查看手册页的情况。

要使用Iptables,必须在编译Linux内核的时候(内核的版本必须大于2.4)选择和NetFilter相关的内核模块,否则即使安装了Iptables,也不能使用。别着急,看到NetFilter和Iptables,不要认为他们是两个东西,他们一个是内核空间的实现模块,称作NetFilter,一个是用户空间的控制命令解析器,称作Iptables。两者结合才能完成整体的工作。我们按以下的叙述顺序说明Iptables和NetFilter的使用方法,连同如何使用他们增强主机的安全性。

将分如下章节讨论

  1. 内核NetFilter选项编译过程

  2. Iptables工具的安装和编译

  3. NetFilter框架和Iptables使用方式概述

  4. 使用Iptables增强主机安全性How-To

好了,开始我们的Iptables之旅吧!注意本手册说明的过程都是在RedHat7.2 内核版本2.4.7,启动程式为LILO,Shell为bash 上进行操作的。在别的版本的内核或操作环境请具体参考系统手册页man信息。

2.1. 内核NetFilter选项编译过程

2.1.1. 内核代码的位置

安装了Linux以后,内核部分的代码在系统目录 /usr/src/Linux-2.4/ 中。当然假如下载了新的内核代码包,例如名为linux-kernel-2.4.X.tag.gz(X表示次要版本号),能够在任何一个目录下解开该代码包,但是一般的规律是将代码包解压到/usr/src/目录下,使用的命令序列如下:

[test /root/]# pwd

/root

[test /root/]#  mv linux-kernel-2.4.7.tag.gz /usr/src/

[test /root/]#  cd /usr/src/

[test /usr/src/]# tar zxvf  linux-kernel-2.4.7.tar.gz

[test /usr/src/]# cd linux-kernel-2.4.7

好了,进入到了新的内核代码目录,我们现在开始对目录进行裁减和编译。注意:假如没有支持2.4版本的内核,能够从http://www.kernel.org 的网站上获得关于Linux内核的最新下载信息。

2.1.2. 内核代码选项介绍

进入内核源代码所在的目录以后,在该目录下使用如下命令进入内核配置界面:

make menuconfig

该命令会进入到一个ASCI的简单菜单界面,让用户对需要的内核选项进行选取,然后自动保存成一个内核配置文档。进入配置界面后如下图:

选中"Networking options",进入下一配置界面

本界面是专门配置Linux主机网络特性的配置选项

本界面的内容包含了专门配置Netfilter选项

里面罗列的选项一般都需要使用Space键选中。注意在高亮光标停留在某个选项上时,使用Space键能够将该选项加入内核中。但是个选项和内核有三种关系:

  • 模块化方式加入。(在选项前显示【M】)

  • 直接编译到内核中。(在选项前显示【*】)

  • 不加入内核(选项前显示为空【】)

这两种方式都没有问题,一般推荐使用直接编译到内核中。Space键能够在"模块方式"、"直接编译方式"、"忽略模块"这三种方式之间进行转换。好了,选择完您需要的选项以后,直接使用Tab键将高亮光标移动到"Exit"上,然后一路退出,到下一个界面。保存刚才对内核选项的配置,然后回车退出。

2.1.3. 内核代码的编译和安装

编译内核分为以下几步:

  1. 首先使用命令make dep命令编译内核模块之间的依赖关系。

  2. 然后使用命令make bzImage 命令编译压缩的内核。

  3. 最后连续使用make modules 和make modules_install命令将模块化的选项编译到内核中。

  4. 好了,已编译完成了内核,现在新内核的名字叫做bzImage,路径位置在(假设源代码在/usr/src/Linux-2.4中)/usr/src/Linux-2.4/arch/i386/boot/下,名称为bzImage。

  5. 现在我们要使用这个新的内核启动系统。将bzImage拷贝到/boot/目录下,然后起个新的您喜欢的名字,我们假设为bzImage.nf。

2.1.4. 系统使用新编译的内核重新启动

  1. 修改/etc/lilo.conf(假设您用LILO启动系统),添加下列行:

    文章整理:西部数码--专业提供域名注册虚拟主机服务
    http://www.west263.com
    以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!