您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > linux环境下的防火墙设计和配置
第1页Linux环境下的netfilter/iptables防火墙设计和配置(防火墙课程设计-linux篇)1问题和解答引言1)问:采用iptables如何限定QQ。答:QQ的source-port为4000,destination-port为8000只需要在FORWARD里加入一条规则就可以:iptables-AFORWARD-ieth0-pudp--dport8000-jDROP2)问:我不想开放我的端口,但我要在我的电脑上启用http服务,并对外服务。答:想开放除了80以外的端口你可以这样iptables-PINPUT–jDROP,用-P(大写字母)来拦截全部的通信,然后再来允许哪些端口可以被使用,结果可以这样写:iptables–AINPUT–ptcp–dport80–jACCEPT3)问:由于我采用了linux的iptables作为内外网络之间的隔离墙,想在内网的计算机系统上架设ftp服务可以供外部访问,我该怎么做?答:要用到iptables的一个强大的功能为端口映射了。举例如下:iptables-tnat-APREROUTING-ptcp-mtcp--dport25-jDNAT--to-destination192.168.0.6:25iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.6-ptcp-mtcp--dport25-jSNAT--to-source192.168.0.14)问:如何屏蔽对内部ping,其中eth0为与外部网络相连接。答:简单的iptables-AINPUT-picmp--icmp-typeecho-request-ieth0-jDROP5)问:设有一台计算机作为linux防火墙,有两块网卡,eth0与校园网相连接,ip为222.18.134.129;eth1与内部网络相连接,ip为192.168.0.1。现在需要把发往地址222.18.134.129的80端口的ip包转发到内网ip地址192.168.0.2的80端口,如何设置?答:iptables-tnat-APREROUTING-d222.18.134.129-ptcp-mtcp--dport80-jDNAT--to-destination192.168.0.2:80iptables-tnat-APOSTROUTING-s192.168.0.0/24-d192.168.0.2-ptcp-mtcp--dport80-jSNAT--to-source192.168.0.1是否忘了打开FORWARD链的相关端口。6)如何在Linux路由器下采用iptables防火墙构建DMZ(解答规则的实现中存在不完整的地方,请指出)?答:要构建一个带DMZ的防火墙,首先要对从连接外部网络的网卡(eth0)上流入的数据进行判断,这是在INPUT链上完成。如果数据的目标地址属于DMZ网段,就要将数据转发到连接DMZ网络的网卡(eth1)上;如果是内部网络的地址,就要将数据转发到连接第2页内部网络的网卡(eth2)上,如图1所示。各个网络之间的访问关系如下描述(6条访问控制策略):(1)内网可以访问外网内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。(2)内网可以访问DMZ此策略是为了方便内网用户使用和管理DMZ中的服务器。(3)外网不能访问内网很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。(4)外网可以访问DMZDMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。(5)DMZ不能访问内网很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。(6)DMZ不能访问外网此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。DMZ实现:根据以上访问控制策略可以设定Linux防火墙的过滤规则。用户在实际应用时可根据具体的情况进行设置,设定虚拟环境的网络拓扑如图1。如图1所示,作为防火墙的Linux服务器使用三块网卡:网卡eth0与外部网络连接(或者通过路由器连接),网卡eth1与DMZ区的Hub或交换机相连接,网卡eth2与内网Hub或交换机相连接。对于防火墙,原则之一就是默认禁止所有数据通信,然后再打开必要的通信。所以在防火墙脚本的最初,需要清空系统原有的规则,然后将INPUT、OUTPUT、FORWARD的默认规则设置为丢弃所有数据包,对应的防火墙脚本片段如下:#清空系统原有的所有规则/sbin/iptables-F/sbin/iptables-X/sbin/iptables-tnat-F外部网内部网DMZ区Linux防火墙Eth0Eth1Eth2图1DMZ结构第3页/sbin/iptables-tnat-X#默认丢弃所有数据包/sbin/iptables-PINPUTDROP/sbin/iptables-POUTPUTDROP/sbin/iptables-PFORWARDDROP完成6种策略的实现:(1)内网可以访问外网,对应的防火墙脚本片段如下:……/sbin/iptables-tnat-APOSTROUTING-s[内网地址]-d[外网地址]-oeth0-jSNAT--to[NAT的真实IP]当数据从连接外网的eth0流出时,要将来自内网的数据包的源地址改成Internet上的真实IP,这样才能和外网的主机进行通信。“[NAT的真实IP]”表示分配给NAT用户的真实IP,有几个就写几个,以空格分开,但至少要写一个。(2)内网可以访问DMZ,对应的防火墙脚本片段如下:/sbin/iptables-AFORWARD-s[内网地址]-d[DMZ地址]-ieth2-jACCEPT以上命令允许所有来自内网、目的地为DMZ的数据包通过。(3)外网不能访问内网,对应的防火墙脚本片段如下:/sbin/iptables-tnat-APREROUTING-s[外网地址]-d[内网地址]-ieth0-jDROP以上命令将来自外网、去往内网的数据包全部丢弃。(4)外网可以访问DMZ为了保护DMZ中的服务器,外网对DMZ的访问也要加以限制。通常的思路是,只允许外网访问DMZ中服务器所提供的特定服务,比如HTTP。对应的防火墙脚本片段如下:/sbin/iptables-tnat-APREROUTING-ptcp--dport80-d[分配给HTTP服务器的Internet上的真实IP]-s[外网地址]-ieth0-jDNAT--to[HTTP服务器的实际IP]……/sbin/iptables-AFORWARD-ptcp-s[外网地址]-d[HTTP服务器的实际IP]-ieth0--dport80-jACCEPT/sbin/iptables-AFORWARD-ptcp-d[外网地址]-s[HTTP服务器的实际IP]-ieth1--sport80!--syn-jACCEPT/sbin/iptables-tnat-APREROUTING-s[外网地址]-d[DMZ地址]-ieth0-jDROP该防火墙脚本片段将开放HTTP服务,使得只有访问DMZ中HTTP服务的数据包才能通过防火墙。(5)DMZ不能访问内网,对应的防火墙脚本片段如下:/sbin/iptables-AFORWARD-s[DMZ地址]-d[内网地址]-ieth1-jDROP以上命令将丢弃所有从DMZ到内网的数据包。(是否有问题,不完整的解答,可以采用状态检测吗)(6)DMZ不能访问外网,对应的防火墙脚本片段如下:第4页/sbin/iptables-tnat-APOSTROUTING-ptcp--dport25-d[外网地址]-s[邮件服务器的IP]-oeth0-jSNAT--to[分配给SMTP服务器的Internet上的真实IP]/sbin/iptables-AFORWARD-ptcp-s[邮件服务器的IP]-d[外网地址]-ieth1--dport25-jACCEPT/sbin/iptables-AFORWARD-ptcp-d[邮件服务器的IP]-s[外网地址]-ieth0--sport25!--syn-jACCEPT以上命令先允许DMZ中邮件服务器连接外网的SMTP服务端口(25),然后禁止其它从DMZ发往外网的数据包。2准备netfilter/iptablesIP信息包过滤系统是一种功能强大的工具,可用于添加、编辑和删除规则,这些规则存储在专用的信息包过滤表中,而这些表集成在Linux内核中,又对他们进行处理。netfilter组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables组件是一种工具,也称为用户空间(userspace),它使插入、修改和删除信息包过滤表中的规则变得容易。如果在你的linux系统没有安装这两组件,需要从(或ftp.netfiler.org/iptables)下载最新工具并安装使用它,还需要从下载最新的内核版本(注意软件包签名认证)。通过使用iptables用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。Iptables工具的操作介绍根据后面部分和按照课程设计要求完成。(1)安装netfilter/iptables系统因为netfilter/iptables的netfilter组件是与内核2.4及以上集成在一起的,通常只需要下载并安装iptables用户空间工具。下面是安装netfilter/iptables系统的需求:硬件:要使用netfilter/iptables,需要有一个运行LinuxOS并连接到因特网、LAN或WAN的系统。软件:带有内核2.4或更高版本的任何版本的LinuxOS。可以从下载最新版本的内核。还需要从这个用户空间工具,因为这个工具不是内核的一部分。(2)安装前的准备在开始安装iptables用户空间工具之前,需要对系统做某些修改。首先,需要使用makeconfig命令来配置内核的选项。在配置期间,必须通过将CONFIG_NETFILTER和CONFIG_IP_NF_IPTABLES选项设置为Y来打开它们,因为这是使netfilter/iptables工作所必需的。下面是可能要打开的其它选项:CONFIG_PACKET:如果要使应用程序和程序直接使用某些网络设备,那么这个选第5页项是有用的。CONFIG_IP_NF_MATCH_STATE:如果要配置有状态的防火墙,那么这个选项非常重要而且很有用。这类防火墙会记得先前关于信息包过滤所做的决定,并根据它们做出新的决定。CONFIG_IP_NF_FILTER:这个选项提供一个基本的信息包过滤框架。如果打开这个选项,则会将一个基本过滤表(带有内置的INPUT、FORWARD和OUTPUT链)添加到内核空间。CONFIG_IP_NF_TARGET_REJECT:这个选项允许指定:应该发送ICMP错误消息来响应已被DROP丢弃的入站信息包,而不是简单地杀死它们。(3)安装用户空间工具在下载iptables用户空间工具的源代码(它类似于iptables-1.2.6a.tar.bz2)之后,可以开始安装。您需要以root身份登录来执行安装。清单1给出了一个示例,它指出了安装该工具所需的命令,其必要的次序及其说明。清单1用户空间工具安装的示例首先,解压工具包到一个指定的目录,命令操作如下:#bzip2-diptables-1.3.5.tar.bz2#tar-xvfiptables-1.3.5.tar现在进入解压后的目录iptables-1.3.5中,在该目录中,有一个INS
本文标题:linux环境下的防火墙设计和配置
链接地址:https://www.777doc.com/doc-904780 .html