资源描述
摘 要Linux2.4 内核中Netfilter/Iptables的出现,为构建Linux 下防火墙提供了很好的平台。Iptables 是在Linux 操作系统下基于2.4之上内核版本的集成网络安全工具包。该工具通过编程可以实现多种网络安全功能,如:数据包过滤、状态保持、NAT(Network Address Translation,网络地址转换)以及抵抗攻击等等。本文主要是针对Linux下iptables的的应用进行学习与研究,结构上可以分为三个部分:Linux防火墙的概述,iptables的的简介以及如何使用iptables来为我们的日常工作所服务。例如在我们的日常工作中的应用到的过滤网址、IP,禁用端口、协议等等。利用iptables这个工具在Linux服务器上实现安全稳定、功能强大的防火墙。目前这也是被企业和高校广泛采用的一种比较成熟的技术。本次毕设课题研究的实验环境均在虚拟机上实现,使用RHEL 4 AS系统和CentOS 4系统。关键词:Linux,防火墙,iptables,规则,过滤目 录第一章 Linux防火墙概述11.1防火墙简介11.2 Linux包过滤防火墙的架构41.3 Linux防火墙的安装、启动和关闭5第二章 iptables简介92.1 iptables的基本概念92.2 iptables数据包的传输过程102.3 激活IP包转发功能11第三章 iptables的使用133.1 iptables的命令格式133.2 iptables命令的使用15第四章 iptables实现NAT服务214.1 NAT服务概述214.2 利用iptables实现NAT服务23第五章 iptables技巧实例295.1 禁止访问不健康的网站295.2 禁止某些客户上网295.3 禁止客户使用某些服务305.4 禁止使用ICMP协议305.5 利用字符串匹配过滤视频网站325.6 利用iptables的定时功能345.7 利用iplimit参数设置最大连接数35第六章 致谢37参考文献38第一章 Linux防火墙概述1.1防火墙简介1. 防火墙的功能防火墙是位于不同网络(如可信的企业内部网和不可信的公共网)或网络安全域之间,对网络进行隔离并实现有条件通信的一系列软件/硬件设备的集合。它通过访问控制机制确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务。其基本功能是分析出入防火墙的数据包,根据IP包头结合防火墙的规则,来决定是否接收或允许数据包通过。防火墙系统可以由一台路由器,也可以由一台或一组主机组成。它通常被放置在网络入口处,所有内外部网络通信数据包都必须经过防火墙,接受防火墙的检查,只有符合安全规则的数据才允许通过。通过使用防火墙可以实现以下功能:Ø 保护内部网络中易受攻击的服务。Ø 控制内外网之间网络系统的访问。Ø 隐藏内部网络的IP地址及结构的细节,提高网络的保密性。Ø 对网络存取和访问进行监控和审计。Ø 集中管理内网的安全性,降低管理成本。2. 防火墙的发展史第一代防火墙第一代防火墙技术几乎与路由器同时出现,采用了包过滤(Packet filter)技术。下图(1-1)表示了防火墙技术的简单发展历史。图1-1第二、三代防火墙1989年,贝尔实验室的Dave Presotto和Howard Trickey推出了第二代防火墙,即电路层防火墙,同时提出了第三代防火墙应用层防火墙(代理防火墙)的初步结构。第四代防火墙1992年,USC信息科学院的BobBraden开发出了基于动态包过滤(Dynamic packet filter)技术的第四代防火墙,后来演变为目前所说的状态监视(Stateful inspection)技术。1994年,以色列的CheckPoint公司开发出了第一个采用这种技术的商业化的产品。第五代防火墙1998年,NAI公司推出了一种自适应代理(Adaptive proxy)技术,并在其产品Gauntlet Firewall for NT中得以实现,给代理类型的防火墙赋予了全新的意义,可以称之为第五代防火墙。3.防火墙的分类根据动作方式的不同,通常把防火墙分为包过滤型和应用级网关两大类。(1)包过滤防火墙(Packet Filter) 包过滤防火墙通常安装在路由器或者安装了网络操作系统的主机上。它在网络层根据配置好的包过滤规则对数据包进行过滤,其工作方式为:包过滤规则存储对应的包过滤设备端口,检查出入该防火墙端口的每一个IP数据包头和TCP头或UDP头来决定是否允许数据包通过。包过滤防火墙的优点是它对于用户来说是透明的,处理速度快,而且由于工作在网络层和传输层,与应用层无关,因此不用改动客户机和主机上的应用程序,易于安装和维护。缺点是非法访问一旦突破防火墙,即可对主机上的软件和配置漏洞进行攻击。(2)应用级网关(Application-level Gateway) 应用级网关又称代理服务器。它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数据包进行必要的分析、登记和统计,形成报告,当发现被攻击迹象时会向网络管理员发出警报,并保留攻击痕迹。应用级网关比单一的包过滤更为可靠,而且会详细地记录所有的访问状态信息。其不足之处是访问速度慢,因为它不允许用户直接访问网络,其次应用级网关需要对每一个特定的因特网服务安装相应的代理服务软件,另外也不是所有的因特网应用软件都可以使用代理服务器。 1.2 Linux包过滤防火墙的架构iptables是一个免费的包过滤防火墙,它伴随着内核的发展而逐渐演变,大致经历了下面4个阶段: Ø 在1.1内核中,采用ipfw来操作内核包过滤规则。Ø 在2.0内核中,采用ipfwadm来操作内核包过滤规则。Ø 在2.2内核中,采用ipchains来控制内核包过滤规则。Ø 在2.4内核中(如Red Hat 9.0、RHEL),采用一个全新的内核包过滤管理工具iptables。 iptables只是防火墙与用户之间的接口,真正起到防火墙作用的是Linux内核中运行的netfilter。Linux平台下的包过滤防火墙由netfilter组件和iptables组件组成,其中netfilter运行在内核态,而iptables运行在用户态,用户通过iptables命令来调用netfilter来实现防火墙的功能。(1)netfilter组件netfilter是Linux内核中的一个用于扩展各种网络服务的结构化底层框架。该框架定义了包过滤子系统功能的实现,提供了filter、nat和mangle3个表,默认使用的是filter表。每个表中包含有若干条内建的链(chains),用户可在表中创建自定义的链。在每条链中,可定义一条或多条过滤规则(rules)。每条规则应指定所要检查的包的特征以及如何处理与这对应的包,这被称为目标(target)。目标值可以是用户自定义的一个链名,也可以是ACCEPT、DROP、REJECT、RETURN等值。(2)iptables组件iptables组件是一个用来指定netfilter规则和管理内核包过滤的工具,用户通过它来创建、删除或插入链,并可以在链中插入、删除和修改过滤规则。iptables仅仅是一个包过滤工具,对过滤规则的执行则是通过netfilter和相关的支持模块来实现的。1.3 Linux防火墙的安装、启动和关闭iptables防火墙内置于RedHat系统内核中,所以它是随系统的安装而自动安装的。可使用如下命令检查是否已安装(如下图):图1-2 检查iptables是否安装安装RHEL 4 AS时系统会提示是否开启防火墙,默认情况下将开启防火墙。由于系统的防火墙功能是使用iptables实现的,因此系统会根据用户的设置在iptables中添加相应的规则。如果在安装时选择禁用防火墙,则在安装完成后可在终端命令窗口中执行“setup”命令将弹出“配置应用程序” 窗口(如下图1-3)。图1-3 “配置应用程序”窗口选择Firewall configuration选项,则会进入防火墙配置窗口如图1-4。图1-4 “防火墙配置”窗口图1-5 “防火墙配置定制”窗口 完成以上配置后,可在终端命令窗口中执行如下命令启动iptables防火墙如图1-6:图1-6 启动iptables防火墙第二章 iptables简介2.1 iptables的基本概念在使用iptables之前我们先要理解规则、链、表这3个概念以及iptables传输数据包的过程。Ø 规则 规则(rules)就是网络管理员预先定义的条件,每条规则的定义方式一般是“如果封包符合这样的条件就这样处理该数包”。Ø 链 链(chains)是数据包传输的路径,每一条链中可以有一条或数条规则。Ø 表 iptables内置了filter表、nat表和mangle表用于实现包过滤、网络地址转换和包重构的功能。(1)filter表filter表是iptables默认的表,如果没有指定使用哪个表,iptables默认使用filter表来执行所有的命令。filter表根据系统管理员预定义的一组规则过滤符合条件的数据包。在filter表中只允许对数据包进行接收、丢弃的操作,而无法对数据包进行更改。(2)nat表nat表主要是用于网络地址转换NAT,该表可以实现一对一、一对多、多对多等NAT工作。NAT表包含了PREROUTING链、OUTPUT链和POSTROUTING链。其中PREROUTING链用于处理刚刚进入网络层未进行路由判断的数据包,OUTPUT链用于处理在路由之前本地生成的数据包,POSTROUTING链处理在路由判断之后即将通过网卡发送出去的数据包。(3)mangle表某些特殊应用可能需要改写数据包的一些传输特性,例如更改数据包的TTL和TOS等,mangle表主要用于对指定包的传输特性进行修改。2.2 iptables数据包的传输过程数据包通过iptables的具体流程如图2-1所示。图2-1iptables数据包传输的过程由图可知,当一个数据包进入计算机的网络接口时,数据首先进入POSTROUTING链,然后内核根据路由表决定数据包的目标。若数据包的目的地址是本机,则将数据包送往INPUT链进行规则检查,当数据包进入INPUT链后,系统的任何进程都会收到它,本机上运行的程序可以发送该数据包,这些数据包会经过OUTPUT链,再POSTROUTING链发出;若数据包的目的地址不是本机,则检查内核是否允许转发,若允许,则将数据包送FORWARD链进行规则检查,若不允许,则丢弃该数据包。若是防火墙主机本地进程产生并准备发出的包,则数据包被送往OUTPUT链进行规则检查。2.3 激活IP包转发功能如果要把Linux配置成网关防火墙,内核必须打开IP包转发功能(即路由功能),这样一个数据包才能被送到FORWARD链进行规则检查,否则与防火墙相连的两边的网络是完全隔离的。打开Linux内核包转发功能,可使用以下命令来实现 rootlocal # echo “1” > /proc/sys/net/ipv4/ip_forward 上述命令只是一次性有效,为了让主机每次开机后都自动激活IP数据包转发功能,可以采用编辑配置文件/etc/sysctl.conf的方法,将其中的语句:net.ipv4.ip_forward=0 更改为net.ipv4.ip_forward=1执行如下命令: rootlocal # sysctl -p即可让系统启动后自动打开内核的包转发功能。上述操作也可以通过执行下列命令来实现相应功能:rootlocal # sysctl -w net.ipv4.ip_forward=”1”rootlocal # sysctl -p还可以/etc/sysconfig/network配置文件中,通过以下配置项来开启内核的包转发功能:FORWARD_IPV4true第三章 iptables的使用3.1 iptables的命令格式iptables用于创建、维护和检查Linux内核的IP包过滤规则,利用该命令可创建、删除或更名链,在链中创建或删除规则,设置链的策略等,功能很强大,用法也比较多,其命令基本格式为:iptables -t 表名 命令选项 链 匹配选项 操作选项1. 表名选项“-t表名”用来选择要操作的表,表名可以是 filter,nat,mangle三者之一,如该参数缺省则默认为filter表。2. 命令选项命令选项用来指定对链或规则的操作,包括插入、删除、添加规则等。 iptables的主要命令选项如表3-1所示。表3-1 iptables的主要命令选项3. 链名选项“链”指定要操作的链名,除使用系统定义的链名外,用户也可自定义链名。4. 匹配选项匹配选项指定数据包与规则匹配所应具有的特征,包括源地址、目的地址、传输协议和端口号等。主要的匹配选项如表3-2所示。表3-2 iptables的主要匹配选项5. 操作选项操作选项用于指定对匹配过滤规则的数据包所进行的处理。其形式为“-j target/jump”,其中“target”是对包的处理动作,“jump”代表一个用户自定义的链名,用于跳转到该链进行规则检查。对数据常用的处理动作如表3-3所示。表3-3 iptables的主要目标动作选项3.2 iptables命令的使用1. 对链的操作(1)查看链命令用法:iptables -L 链命令功能:列出指定表的全部链及其规则例:列出filter表的全部规则链。rootlocal # iptables -L 若要列出nat表的全部规则链,则操作命令为:rootlocal # iptables -t nat -L(2)创建新链命令用法:iptables -N 链名命令功能:以指定的名称创建一个新链例:创建一个名为mychain的新链。rootlocal # iptables -Nmychain(3)删除链命令用法:iptables -X 链名命令功能:删除指定的用户自定义链例:删除新建的mychain链。rootlocal # iptables -Xmychain2. 对规则的操作(1)添加规则 命令用法:iptables-t 表名 -A 链名匹配选项-j动作 命令功能:向指定链的添加一条规则,该规则将会增加到规则列表的最后一行。 例:向filter表的INPUT链添加一条规则,将来自IP地址为192.168.1.1这台主机的数据包都丢弃。 rootlocal # iptables -t filter -A INPUT -s 192.168.1.1 -j DROProotlocal # iptables -t filter -L INPUT(2)插入规则命令用法:iptables-t 表名 -I 链名规则号匹配选项-j动作 命令功能:在指定的规则号的前面插入一条规则,原规则将自动后移。若未指定规则号,则默认为1,即插入在所有规则的前面。 例:在第3条规则前插入一条规则,其内容是禁止192.168.2.0子网段的所有用户访问本机TCP协议的80端口。rootlocal # iptables -I INPUT 3 -s 192.168.2.0/24 -p tcp -dport 80 j DROProotlocal # iptables -L INPUT例:在第4条规则前插入一条规则,拒绝所有主机PING本机。rootlocal # iptables I INPUT 4 s 0/0p icmp -icmp-type echo-request j DROProotlocal # iptables -L INPUTChain INPUT (policy ACCEPT)target prot opt source destinationRH-Firewall-1-INPUT all - anywhere anywhereDROP all - 192.168.1.1 anywhereDROP tcp - 192.168.2.0/24 anywhere tcp dpt:httpDROP icmp - anywhere anywhere icmp echo-requestACCEPT all - 192.168.1.1 anywhere 在该命令中,“-s 0/0”用于指定源地址为所有主机,“-icmp-type”用于指定icmp包的类型,“echo-request”代表ping包。(3)替换规则 命令用法:iptables-t 表名 -R 链名规则号匹配选项-j动作 命令功能:将指定编号的规则替换为新的规则。 例:将上例中的第3条规则替换为允许192.168.2.0子网段的所有用户访问本机TCP协议的80端口。rootlocal # iptables -I INPUT 3 -s 192.168.2.0/24 -p tcp -dport 80 j ACCEPTrootlocal # iptables -L INPUT(4)删除规则 命令用法:iptables-t 表名 -D 链名匹配选项-j动作 或:iptables-t 表名 -D 链名规则号 命令功能:删除指定的规则或指定编号的规则 例:删除上例中被替换的第3条规则。rootlocal # iptables -D INPUT -s 192.168.2.0/24 -p tcp -dport 80 -jACCEPT或:rootlocal # iptables -D INPUT 3(5)设置链的默认策略 命令用法:iptables -t 表名 -P 链名 目标动作 命令功能:定义指定链的默认策略,即设置所有过滤规则都不满足的数据包的默认处理方式。 例:将INPUT、FORWARD和OUTPUT链的默认策略设置为ACCEPT。rootlocal # iptables -P INPUT ACCEPTrootlocal # iptables -P FORWARD ACCEPTrootlocal # iptables -P OUTPUT ACCEPT(6)清除规则链中的所有规则 在新建规则时往往需要清除原有的规则,以免它们影响新设定的规则。如果规则比较多,一条条删除就会十分麻烦这时可以使用iptables提供的清除规则选项达到快速删除所有规则的目的。 命令用法:iptables -t 表名 -F 链名 命令功能:删除指定链中的全部规则,若未指定链,则删除表中所有链中的规则。 例:清除filter表中INPUT链中的全部规则。rootlocal # iptables -F INPUT(7)归零包计数器 命令用法:iptables -t 表名 -Z 命令功能:将指定表中的包计数器和流量计数器清零,如不指定表,则默认为filter表。 例:将filter表中的所有包计数器清零。rootlocal # iptables -Z 若要将nat表中的所有包计数器清零,则实现命令为:rootlocal # iptables -t nat -Z3. 保存与恢复过滤规则用上述方法所建立的规则会被保存到内核中,在重启系统时,会丢失这些规则。所以如果用户将没有错误且有效的规则集添加到数据包过滤表,则时希望在重启系统之后再次使用这些规则,必须将该规则集保存在文件中。其命令为: rootlocal # iptables-save >/etc/sysconfig/iptables将数据包过滤表中的所有规则保存到/etc/sysconfig/iptables脚本文件中以后,无论何时重启系统,都可以使用iptables-restore命令将规则集从该脚本文件恢复到数据包过滤表。其命令为:rootlal # iptables-restore </etc/sysconfig/iptables如果用户希望在每次启动系统时自动恢复该规则集,可以将上面指定的这条命令放到任何一个初始化shell脚本中,或如下的命令来保存规则:rootlocal # service iptables save第四章 iptables实现NAT服务4.1 NAT服务概述1. 什么是NATNAT(Network Address Translation,网络地址转换)是一个根据RFC1631开发的IETF标准。NAT就是用来将IP报文头中的目的或源私有地址修改成公有地址的一种设备,利用NAT可实现私有地址与公网地址的相互转换。它还可以和防火墙技术结合使用,将特定的IP地址隐藏起来使外部网络无法直接访问内部网络的特定主机。2. NAT的工作原理图4-1 NAT工作原理NAT的工作原理如图4-1所示。当客户机(192.168.1.2)访问公网上的Web服务器(202.205.11.70)时,客户端会随机选择一个大于1024的端口来与服务器的80端口建立连接,分设客户端使用的端口是1029,则从客户端发出的数据源socket(IP加端口)192.168.1.2:1029,目的socket为202.205.11.70:80。当数据包从eth0进入NAT设备后,NAT对数据包的源socket进行修改,将源IP地址替换为eth1的IP地址,源端口保持不变。若该端口已被占用,则替换使用另一个端口,并将该替换的对应关系保存在NAT表中。经过NAT替换修改后的数据包,其源socket谈为210.29.160.120:1029,目的socket保持不变,此时的数据包具有了公网IP地址,就可以访问Internet中的Web服务器了。同时,Web服务器的响应数据源socket为202.205.11.70:80,目的socket为210.29.160.120:1029,NAT收到该响应包后,利用NAT表中保存的对应关系,交响应包的目的socket替换修改为192.168.1.2:1029,源socket保持不变,这样Web服务器的响应包就顺利进入内网,送达192.168.1.2的客户机了。3. NAT的类型NAT可分为以下3种类型Ø 静态SNAT:SNAT使用一个静态的IP地址映射表来替换修改数据包的源地址或源端口。在NAT网关中维护一个静态的地址映射表,用来把私有的IP地址映射到公有的IP地址上去。Ø 反向NAT(DNAT):即把外部访问IP地址转换成内部IP地址,把内部网络提供的服务映射到一个公有的IP地址和端口上供外部网络访问。Ø 动态地址NAT(Pooled NAT):使用动态的IP地址映射表来改变数据的源地址或端口。4.2 利用iptables实现NAT服务1. 利用iptables实现SNAT服务网络拓扑图如图4-2所示。利用RedHat linux提供的iptables配置NAT网关,外网网卡为eth1(218.28.21.100),内网网卡为eth0(192.168.1.1),所有内部网络中的机器全部配置为私有地址192.168.1.0/24段内。由于实验环境,我们用ping命令来验证我们的配置是否成功。配置前保证如下:内部机器(pc1)RedHat Linux(server)公网机器(pc2)192.168.1.2eth0:218.28.21.100eth1:192.168.1.1218.28.21.200pc1 ping server能通,pc2 ping server能通,但pc1不能ping通pc2。我们的目的就是利用iptables来配置SNAT,使内部转化为处部IP从而可以访问公网的机器。步骤如下:分别为pc1、pc2、server配置IP。图4-2 pc1的网卡配置图4-3 pc2的网卡配置图4-4 server的双网卡配置编写脚本snat.sh,其内容如下;#!/bin/shmodprobe ip_nat_ftpiptables Fiptables t nat Fiptables P PORWARD ACCEPTiptables A FORWORD i eth1 d 192.168.1.0/24 p tcp syn j DROPiptables t nat A POSTROUTING s 192.168.1.0/24 o eth1 j SNAT -to-source 218.28.21.100设置脚本snat.sh具有可执行权限,使配置生效。rootlocal #chmod 755 snat.shrootlocal #./snat.sh测试SNAT的功能。我们用ping命令来测试结果如图。图4-5 用内部机器ping公网机器2. 利用iptables实现DNAT服务DNAT就是改变数据包的目的地址或端口的网络地址转换,它经常用在开放内网中特定服务的情况。使外部网来访问内部网络的资源。配置内网、公网和server的IP同SNAT实验。目的是让公网机器pc2通过80端口来访问内部机器pc1。编写脚本dnat.sh,其内容如下;#!/bin/shmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpiptables Fiptables t nat Fiptables t nat A PREROUTING i eth1 d 192.168.1.0/24 p tcp syn j DROPiptables t nat A PREROUTING i eth1 p tcp dport 80 j DNAT to 192.168.1.2:80设置脚本dnat.sh具有可执行权限,使配置生效。rootlocal #chmod 755 dnat.shrootlocal #./dnat.sh测试DNAT的功能。我们在pc2上通过浏览器来访问pc1,如图4-6所示。第五章 iptables技巧实例5.1 禁止访问不健康的网站为了保证本地机器和内部网络的安全,可以禁止访问某些不健康的网站,例:我们禁止用户访问“”这个站点,或禁止“218.28.21.200”这个IP地址,则可以在filter表中的FORWARD链中加入如下规则如图5-1所示。图5-1 禁止访问网站的站点或IP地址5.2 禁止某些客户上网当要禁止部分用户上网时,我们也可以使用iptables实现。如我们要禁止218.28.21.100这个用户和192.168.1.0/24这个段内的所有用户上网可以在filter表中的FORWARD链中加入如下规则如图5-2所示。图5-2 禁止用户上网5.3 禁止客户使用某些服务在实际应用中,经常要禁止用户访问Internet上的某些服务,如web、ftp、ssh等。这个用iptables也是非常容易实现的。例如,我们要禁192.168.1.0子网里的所有使用ftp服务,则可以在filter表中的FORWARD链中加入如下规则如图5-3所示。图5-3 禁止子网内的所有用户使用21端口5.4 禁止使用ICMP协议ICMP协议经常被用于发动DOS攻击,所以为了安全起见有是我们要禁用ICMP协议。同样这个用iptables很容易实现。例如,我们要禁止server去ping192.168.1.2这台机器,同时也让这台机器不能去ping server机,则可以在filter表中的INPUT链中加入如下规则如图5-4所示。图5-4 禁止使用ICMP协议图5-5 配置iptables之前图5-6 配置iptables之后5.5 利用字符串匹配过滤视频网站在日常工作中,有时员工会在上班时间打开视频网站,这样会大大影响工作带宽。作为网络的管理人员我们就可以利iptables来做一些安全策略来禁止访问这些视频网站,在这里我们用字符串匹配来达到这种过滤视频网站的效果。命令如下:rootlocal # iptables -A FORWARD -m string string “” algo bm -j DROProotlocal # iptables -A FORWARD -m string string “” algo bm -j DROProotlocal # iptables -A FORWARD -m string string “” algo bm -j DROP其中各项参数的意义如下:-m string使用string功能,string是iptables的一个module,也就是做字符串匹配的。string “xxxx”定义字符串内容,可以是URL里任意字符,如果是需要block下载某些类型的文件或请求,这个有很大的发挥空间,可自由想象喔。algo bm设置字符匹配的查询算法,一般默认使用bm算法效果就可以了,另外还可以设置kmp算法,那是一种更复杂的算法,详细内容可自行参见高等数学里的资料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)-j DROP设置符合此条件的包的处理方式,DROP即是丢弃,也是reject的意思。其它:我没有设置-p的参数,那么默认就包括所有协议的package处理。如果需要的话,也可以针对性对设置-p tcp或-p udp等等指定协议种类。如果有必要,我想也可以针对这个应用放到对im软件、p2p软件的一些目标的过滤。5.6 利用iptables的定时功能当公司需要在特定的时间允许上网时,我们同样可以使用iptables来达到这个目的。例:我们只允许在周一到周五的早上八点到下午六点开放网络,则命令如下:rootlocl# iptables -A INPUT -m time -timestart 8:00 -timestop 18:00 -days Mon,Tue,Wed,Thu,Fri -j ACCEPT rootlocal# iptables -list Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all - anywhere anywhere TIME from 8:0 to 18:0 on Mon,Tue,Wed,Thu,Fri Supported options for the time match are : -timestart value -> minimum HH:MM -timestop value -> maximum HH:MM -days listofdays -> a list of days to apply, from (case sensitive) Mon Tue Wed Thu Fri Sat Sun 首先需要说明的是,这里所需要的time参数,在发行版的iptables里是没有的,只有在extensions里才有,而这些extensions由不同的开发者提供,可以从网上下载安装。5.7 利用iplimit参数设置最大连接数 1. 下载并安装最新的内核源码 kenrel-source-2.4.20-13.7-i386.rpm。 rpm -Uvh kenrel-source-2.4.20-13.7-i386.rpm 2. 进入/usr/include目录,执行以下操作: root# mv asm asm_old root# mv linux linux_old root# mv scsi scsi_old root# ln -s /usr/src/linux-2.4/include/asm ./asm root# ln -s /usr/src/linux-2.4/include/linux ./linux root# ln -s /usr/src/linux-2.4/include/scsi ./scsi 3.下载patch-o-matic-20030107.tar.tar并执行以下操作: root#export KERNEL_DIR="/usr/src/linux-2.4" root#./runme extra 按提示只需要安装自己想要的那些扩展功能补丁,这里只选择了iplimit。 4. 执行make mrproper用make menuconfig设置内核选项,依次进入"Networking options"->"IP: Netfilter Configuration",选择刚才加入的扩展功能,在这里只要把iplimit选定成M模式就可以了。然后: root#make dep root#make bzImage root#make install root#make modules root#make modules_install 安装完成,iplimit就可以使用了,例:我们让同一个IP到服务器的SSH的连接数不能超过3个。则命令如下: root#iptables -A INPUT -p tcp -dport 22 -syn -m iplimit -iplimit-above 3 -j REJECT 这样,从同一个IP到服务器的SSH的连接就只不能超过3个了。 这个功能如果应用在网站上限制某些人下载网站内容是很有帮助的,比apache加载连接数限制模块的方法要有效得多。 第六章 致谢转眼大学三年的时光即将结束了,在这两年多的学习过程中自己收获了成长过程中的宝贵财富。无论是学习上还是做人上自己都学到了许多,大学的生活是很自由的,这种自由的生活让我们的个性与爱好都得以很好的发展。当然也有人会不适应大学的这种学习生活,因为如果一个人缺乏自制能力的话,那么这种自由的生活如果不能得到合理的规划,就会让自己的大学生活如同一张白纸没有了色彩。本次毕业设计最终得以完成,很感谢我的同学给我的帮助,一个人的知识是有限的,但两个人的智慧加起来就是无限的。当我遇到不会的地方,我的同学总能和我一起来讨论,在网上找解决的办法,没有你们的帮助,我的毕业设计不能这么顺利的完成,谢谢你们!在本次毕业设计的过程中自己也对以前的知识进行了一次重新的梳理,对之前掌握不牢固的知识点又进行了强化练习。同时自己也养成了在网上搜索解决问题方法的习惯,我们本是计算机人就应当要利用好网络来为我们服务。在这里我还要非常感谢我的指导老师邱老师,您的Linux教学是让我学好Linux的一个最主要原因,谢谢您!最后,我祝愿我们所有的同学都能有一个自己喜欢的工作,从而去热爱自己的工作,热爱生活!参考文献1 姜大庆.Linux系统与网络管理.北京:中国铁道出版,2009.2 曹江华.Linux服务器安全策略详解.北京:电子工业出版社,2009.3 陆昌辉,文龙.网络服务器组建、配置和管理Linux篇. 北京:电子工业出版社,2008.4 Mark G.Sobell.Red Hat Linux指南基础与系统管理篇. 北京:人民邮电出版社,2008.5 鸟哥.鸟哥的Linux私房菜服务器架设篇. 北京:人民邮电出版社,2008.6 刘晓辉,陈洪彬.Red Hat Linux服务器管理及配置实战详解. 北京:化学工业出版社,2010.7 Linux时代:8 Linux伊甸园:
展开阅读全文