防火墙技术Iptables防火墙防火墙基本概念Internet防火墙技术防火墙有两种:一种是硬件的,一种软件的。代理技术可以采用软件方式保护内部网络不受外来用户的攻击。在Web主机上或单独一台计算机上运行一类软件,监测、侦听来自网络上的信息,对访问内部网的数据起到过滤作用,从而保护内部网免受破坏。这类软件中,最常用的是代理服务器软件。在代理方式下,私有网络的数据包从来不能直接进入互联网,而是需要经过代理的处理。同样,外部网的数据也不能直接进入私有网,而是要经过代理处理以后才能到达私有网,因此在代理上就可以进行访问控制,地址转换等功能。防火墙基本概念传统代理传统代理工作方式下,内部网络和外部网络之间的唯一连接是代理服务器,客户端要在浏览器中设置代理服务器的地址和端口号,客户浏览器在发出连接请求以前,会自动察看浏览器设置的代理地址及代理端口,若设置了代理端口和代理地址,则将连接请求发送给指定的代理服务器的指定端口。在这种方式的一个明显特点是客户机在连接以前的dns查询也由代理服务器去做。解析DNS的过程是根据代理服务器设置的dns查询顺序进行的。防火墙基本概念透明代理技术透明代理技术中的透明是指客户端感觉不到代理的存在,不需要在浏览器中设置任何代理,客户只需要设置缺省网关,客户的访问外部网络的数据包被发送到缺省网关,而这时缺省网关运行有一个代理服务器,数据实际上被被重定向到代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需数据然后拷贝给客户端。理论上透明代理可以对任何协议通用,目前能实现的主要有:DNS,sendmailrelay,和HTTP.但是在这种情况下客户端必须正确设置DNS服务器。防火墙基本概念透明代理配置举列:例如:从私有网络上访问因特网上的web站点.私有网络地址为192.168.1.*,其中客户机是192.168.1.100,防火墙机器网卡是192.168.1.1.透明web代理(squid的补丁程序工作于此种方式)被安装在防火墙机器上并配置端口为8080.核心使用ipchains把与防火墙端口80的连接重定向到代理服务.私有网上的Netscape被配置为直接连接方式.私有网络的DNS需要设置(你需要在防火墙机器上运行DNS代理服务).防火墙机器上的DNS必须设置.私有网络上机器的默认路由(别名网关)指向防火墙机器.客户机机器上的Netscape访问伪装技术这里核心的伪装服务重写经过防火墙的包,所以包看起来就象从防火墙自身发出的.然后伪装服务器重写返回的包使他们看起来是发往原来的申请者.需要因特网访问的所有服务必须安装在作为防火墙的机器上.(看下面的有限的因特网服务).例如:从私有网络上访问因特网上的web站点.私有网络地址为192.168.1.*,其中一台客户的地址是192.168.1.100,防火墙机器网卡是192.168.1.1.防火墙设置为实现对从私有网络中来的任何发往因特网上某主机80端口的包进行伪装。私有网上的客户机被配置为直接连接方式。私有网络机器的DNS必须正确设置。私有网络上机器的默认路由(网关)设定为指向防火墙机器.客户机机器上的Netscape访问防火墙基本概念端口转发端口转发技术指园区网的各种信息服务器,如:,dns,email等都被放置在内部网络中,且其地址为内部地址,如:192.168.0.1。而在DNS中这些服务器的地址指向防火墙。而当外部需要访问这些服务器时,防火墙进行了特定的设置,其会转发这个数据包到内部特定的,而当内部服务器生成回复包朝外发出经过防火墙时,包被重写。防火墙基本概念具体过程如下:在防火墙上设置端口转发规则,指定所有到防火墙外部地址194.160.1.1的TCP连接,且目的端口为80的所有连接,重定向到内部机器192.168.11.2的端口80。假定任意一外部连接进来的主机IP为163.158.1.2。则源和目的地址及端口号分别为Source:163.158.1.2/7890Dest:194.160.1.1/80被转发到内部主机,重写目的地址部分Source:163.158.1.2/7890Dest:192.168.11.2/80由内部主机回复后的包为:Source:192.168.11.2/80Dest:163.158.1.2/7890再经过防火墙时源地址被重写Source194.160.1.1/80Dest:163.158.1.2/7890。防火墙基本概念反向代理技术反向代理和端口转发类似,区别在于反向代理工作在应用层,而端口转发工作在ip层。防火墙基本概念防火墙一些典型的过滤规则:一些典型的过滤规则包括:允许进入的Telne会话与指定的内部主机连接允许进入的FTP会话与指定的内部主机连接允许所有外出的Telne会话允许所有外出的FTP会话拒绝所有来自特定的外部主机的数据包防火墙基本概念----源IP地址欺骗式攻击(SourceIPAddressSpoofingAttacks)。这种类型的攻击的特点是入侵者从外部传输一个假装是来自内部主机的数据包,即数据包中所包含的IP地址为内部网络上的IP地址。入侵者希望借助于一个假的源IP地址就能渗透到一个只使用了源地址安全功能的系统中。在这样的系统中,来自内部的信任主机的数据包被接受,而来自其它主机的数据包全部被丢弃。对于源IP地址欺骗式攻击,可以利用丢弃所有来自路由器外部端口的使用内部源地址的数据包的方法来挫败。防火墙基本概念----源路由攻击(SourceRowingAttacks)。这种类型的攻击的特点是源站点指定了数据包在Internet中所走的路线。这种类型的攻击是为了旁路安全措施并导致数据包循着一个对方不可预料的路径到达目的地。只需简单的丢弃所有包含源路由选项的数据包即可防范这种类型的攻击。防火墙基本概念---极小数据段式攻击(TinyFragmentattacks)。这种类型的攻击的特点是入侵者使用了IP分段的特性,创建极小的分段并强行将TCP头信息分成多个数据包段。这种攻击是为了绕过用户定义的过滤规则。黑客寄希望于过滤器路由器只检查第一个分段而允许其余的分段通过。对于这种类型的攻击,只要丢弃协议类型为TCP,IPFragmentOffset等于1的数据包就可安然无恙。IPTABLE的使用什么是防火墙防火墙的种类包过滤的实现包过滤可以通过使用有包过滤功能的核心来实现。在Linux系统中,如果存在/proc/net/ip_fwchains文件,则当前运行的核心支持包过滤。IPTABLE的使用在Linux中支持包过滤的核心中有三个规则列表,这些列表称为防火墙链。三个链分别称为输入链,输出链和转发链。当一个包通过以太网卡进来以后,核心使用输入链决定该包得取舍。如果该包没有被丢弃,则核心要决定下面将向哪里发包,称为包的路由。如要发给另一台机器,核心通过转发链来决定。最后,在包要被发出以前,核心通过输出链来做决定。一个链是一些规则的列表,每个规则规定:如果包的包头与规则相匹配,那对包进行相应的处理。如该规则与包不匹配,则引入链中的下一个规则。最后,如没有要引入的规则,核心根据内置链决定如何做。IPTABLE的使用规则的目标:一个防火墙规则指定一个包的匹配标准和一个匹配目标。如包不匹配该规则,那将使用链中的下一个规则继续检查;如果匹配,则由规则目标的值来指定下一个规则。该值可以是一个用户定义链的名字,或如下任意特殊值:IPTABLE的使用ACCEPT:让包通过DROP:把包拒绝REJECT:把包丢弃,并向发送者发送ICMP消息告知包被丢弃。MASQ:只用于转发链和用户定义链。包被伪装成从本地主机发出,回应的包自动解伪。REDIRECT:只用于输入链和用户定义链。包被重定向到本地,尽管它们原是要发送给一个远地主机。可使用参数,指定重定向端口。缺省为0,表示使用包的目的地址端口做为重定向端口。IPTABLES命令选项:命令选项:-A--apend:在所选链的链尾加入一条或多条规则IPTABLE的使用-D--delete:从所选链的链尾删除一条或多条规则-R--replace|:在所选链中替换一条或多条匹配的规则-I--insert:以给出的规则号在所选链中插入一条或多条规则。如果规则号是1,插入的规则在链的头部-L--list:列出指定链的所有规则。如果没有指定链,将列出所有链中的所有规则-F--flush:清除指定链和表中的所有规则。假如不指定链,那么所有链都将被清空IPTABLES命令参数:-p要检查的包或规则的协议。!表示指定协议之外的协议。“0”表示“all”-s表示源地址。地址可以是主机名,网络名或IP名IPTABLE的使用-d目的地址。IPTABLES命令简介:#/sbin/iptables--version在一个单一的规则中操作-A-D-I-R举例:若要DENY所有来自IP地址为127.0.0.1的ICMP包#iptables-Ainput-s127.0.0.1-picmp-jDENYIPTABLE的使用删除一个规则:#/sbin/iptables-Dinput1#/sbin/iptables-Dinput-s127.0.0.1-picmp-jDENY指定过滤规则:-p-s#iptables-Ainput-s0/0-jDENYIPTABLE的使用指定反意设置:很多标志,包括“-s”和“-d”可通过在参数前加上“!”来匹配任何不与给定的参数相等的地址。如:-s!localhostIPTABLE的使用IPTABLES在整个链上的操作:iptables可把相关的规则组成链。你可给新的链命名,但不要与内置的链名以及规则目标冲突。链名长度在8个字符以内。建立一个新的链#/sbin/ipchains-Ntest删除一个链#/sbin/ipchains-Xtest清空一个链#/sbin/ipchains-FforwardIPTABLE的使用列出一个链:#/sbin/ipchains-LinputIPTABLE的使用设置基本的规则匹配1、指定协议匹配(1)、匹配指定的协议#iptables–AINPUT–ptcp(2)、匹配指定协议之外的所有协议#iptables–AINPUT–p!Tcp2、指定地址匹配(1)、指定匹配的主机#iptables–AINPUT–s192.168.0.110(2)、指定匹配的网络#iptables–AINPUT–s192.168.0.0/24(3)、匹配指定主机之外的地址#iptables–AFORWARD–s!192.168.1.1(4)、匹配指定网络之外的网络#iptables–AFORWARD–s!192.168.1.0IPTABLE的使用3、指定网络接口匹配(1)、指定单一的网络接口匹配#iptables–AINPUT–ieth0#iptables–AFORWARD–oeth0(2)、指定同类型的网络接口匹配#iptables–AFORWARD–oppp+IPTABLE的使用4、指定端口匹配(1)、制定单一的端口匹配#iptables–AINPUT–ptcp--sport–AINPUT–ptcp--sport80#iptables–AINPUT–pudp--sport53#iptables–AINPUT–pudp--dport53(2)、匹配指定端口之外的端口#iptables–AINPUT–ptcp–dport!22(3)、匹配指定的端口范围#iptables–AINPUT–ptcp–sport22:80(4)、匹配ICMP端口和ICMP类型#iptables–AINPUT–picmp–icmp-type8IPTABLE的使用5、指定ip碎片#iptables–AFORWARD–ptcp–s192.168.0.0/24–d192.168.1.110\--dport80–jACCEPT#iptables–AFORWARD–