iptables和firewall firewall 哪个好

用户名:waring_id
文章数:157
评论数:1172
访问量:2049198
注册日期:
阅读量:1297
阅读量:3317
阅读量:448863
阅读量:1133638
51CTO推荐博文
  在前面的文中讲过了iptables防火墙连接状态中的ESTABLISHED状态()。除了这个状态之外,iptables还有以下状态,且听我慢慢道来。实验的网络结构以下图为准。
  以下图为例为说明什么是NEW的状态,首先需要知道的是NEW与协议无关,其所指的是每一条连接中的第一个数据包,如下图所示,客户端主机使用TCP 50000连接服务端的TCP 22,这个连接中的第一个数据包的状态就是NEW;其它的例如客户端使用TCP 50001连接至服务端的TCP 22;客户端的UDP 50000连接至服务端的UDP 53;还有客户端对服务器端发出的ICMP数据包,以上这些例子中的第一个数据包的状态都是NEW。
  在Windows系统上有一个tracert的命令,它可以帮助我们检测两台主机之间总共经过了多少路由。它的工作原理其实很简单,主要利用了TTL值的存活时间。这个TTL值是指数据包在网络上能存活的时间,早期以秒为单位,现在改为&所能跨越的路由器的跳数&。
  以下图为例说明tracert工具是如何查询最左边Host1和最右边主机Host2隔了多少路由器。首先tracert工具会送出第一个数据包,这个数据包的目的地址是最右边的主机的IP,并且刻意将这个数据包的TTL值设定为1,接着,这个数据包被送到第一台的路由器H1,而第一台路由器H1在收到这个数据包后,会将数据包内的TTL值减1,因此,这个数据包的TTL值变为0,而这个值代表这个数据包的生命周期已尽,所以第一台路由器H1会丢弃这个数据包,并且返回一个ICMP(type 11 Time to live exceeded)数据包给Host1主机,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第一台路由器H1的IP地址。
  接着tracert会送出第二个数据包,不过,这个数据包的TTL值会刻意指定为2,接着,第二个数据包送到第一台路由器H1,第一台路由器收到这个数据包后,会将其TTL减1,这时数据包内的TTL值变为1,因为TTL值不为0,所以生命周期未尽,因此,第一台路由器H1会将这个数据包传给第二台路由器H2。不过,当第二台路由器H2把数据包内的TTL值减1后,这个数据包内的TTL值变为0,代表这个数据包的生命周期已尽,因此,第二台路由器H2会丢掉这个数据包,并且回送一个ICMP type 11(Time to live exceeded)传给发送主机Host1,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第二台路由器H2的IP地址。
  紧接着,tracert会再送出第三个数据包,不过,这个数据包的TTL值会刻意指定为3,接着,第三个数据包送到第一台路由器H1,第一台路由器h1收到这个数据包后,会将其TTL减1,这时数据包内的TTL值变为2,因为TTL值不为0,所以生命周期未尽,因此,第一台路由器H1会将这个数据包传给第二台路由器H2。不过,当第二台路由器h2把数据包内的TTL值减1后,这个数据包内的TTL值变为1,因为TTL值不为0,所以生命周期未尽,因此,第二台路由器h2会将这个数据包传给第三台路由器H3。当第三台路由器H3把数据包内的TTL值减1后,这个数据包内的TTL值变为0,代表这个数据包的生命周期已尽,因此,第三台路由器H3会丢掉这个数据包,并且回送一个ICMP type 11(Time to live exceeded)传给发送主机Host1,以告诉Host1&你送出的数据包因生命周期已尽,故已遭丢弃&。这样,tracert就可以从这个数据包得知第三台路由器H3的IP地址。最后tracert工具就可以收集到整条路径上的路由器的数量以及IP各为多少。
  看完tracert的工作原理后,我们可以看看什么数据包的状态会是RELATED。以上图为例,最后状态返回的&Destination reached!&这个数据包的状态就是RELATED状态,RELATED状态的数据包的意思是指&被动产生的响应数据包,而且这个数据包不属于现在任何连接的数据包&。例如,上图中Host1主机发出的是TCP协议的包(状态一),只因生命周期已尽被路由器H1丢弃,TCP协议的数据包是面向连接的,而路由器H1返回给Host1主机的是ICMP数据包,很明显这是另外一个数据连接,而这个数据包之所以会产生,完全是因为第一条连接的关系,而且这个数据包不属于现有任何一条连接的数据包。
  需要说明的是,上例以ICMP包为例说明,实际上RELATED状态的数据包与&协议&无关,&只要回应回来的是因为本机先送出的一个数据包导致另一个连接的产生,而这一条新连接上的所有数据包都是属于RELATED状态的数据包&。
  INVALID状态包指不属于ESTABLISHED、NEW、RELATED这三种,通常将其视为恶意的数据包而丢弃。
  关于INVALID状态的测试可以借助于NMAP这个强大的扫描器来实现。对于NMAP的一切可能访问它的主页了解,该工具属于开源软件,支持Windows平台()。
  可以通过设置以下命令来实现。
  有关TCP/IP协议的连接状态可参考RFC 793(),需注意的是该协议的连接状态和iptables的四种连接状态切不可混为一谈,那不是同一概念。
  TCP SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP 连接。它也不像Fin/Null/Xmas,Maimon 和Idle 扫描依赖于特定平台,而可以应对任何兼容的TCP 协议栈。它还可以明确可靠地区分 open(开放的), closed(关闭的),和filtered(被过滤的) 状态它常常被称为半开放扫描,因为它不打开一个完全的TCP 连接。它发送一个SYN 报文,就像您真的要打开一个连接,然后等待响应。SYN/ACK 表示端口在监听(开放),而RST (复位)表示没有监听者。如果数次重发后仍没响应,该端口就被标记为被过滤。如果收到ICMP 不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。
NEW状态测试
  测试环境如前面交代,更详细的说明可参考&iptables中state模块的连接状态&()。
  其中test1主机的IP地址为11.0.0.200,开放ssh服务,防火墙设定如下所示开放所有服务:
  test2主机ip地址为173.16.0.200,iptables设定将output链设为阻止,同时在这种情况下ping网关和使用ssh连接test1主机。如下所示:
  可以看到上述的指令执行后无法ping通test1主机,而当开放NEW状态后再看看结果,如下所示:
  可以看到上述指令执行后可以正常获取系统相关的服务请求。证明iptables执行了正确的拦截操作。
RELATED测试
  结构如上述测试一样,其中test1主机开放所有服务,而test2主机(173.16.0.200)上做以下设定,当执行traceroute指令时无法返回正确的数据包:
  现在开放RELATED状态后看结果,如下图所示:
  可以看到设定后traceroute可以正确返回,但是ping和ssh操作是不成功的,这也就是RELATED的特色。
  关于iptables的四种状态其实有着各种各样的应用,这里只是简单地说明各状态所适用的环境,具体的应用有机会再放上来。本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》
12:43:57 17:22:52 23:35:01您所在的位置: &
Linux防火墙(Iptables)的开启与关闭
Linux防火墙(Iptables)的开启与关闭
Linux防火墙(Iptables)的开启与关闭:iptables是Linux内核集成的IP信息包过滤系统,如果 Linux 系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux上更好地控制IP信息包过滤和防火墙配置。本文讲述的是Linux防火墙(Iptables)的开启与关闭。
Linux防火墙(iptables)的开启与关闭
Linux中的防火墙主要是对iptables的设置和管理.
1. Linux防火墙(Iptables)重启系统生效
开启:&chkconfig&iptables&on &&关闭:&chkconfig&iptables&off &&
2.Linux防火墙(Iptables) 即时生效,重启后失效
开启:&service&iptables&start &&关闭:&service&iptables&stop &&
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了Linux防火墙(Iptables)时,做如下设置,开启25和110端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A&RH-Firewall-1-INPUT&-m&state&--state&NEW&-p&tcp&-m&tcp&--dport&25&--syn&-j&ACCEPT &&-A&RH-Firewall-1-INPUT&-m&state&--state&NEW&-p&tcp&-m&tcp&--dport&110&--syn&-j&ACCEPT &&
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
Linux命令行吸引了大多数Linux爱好者。一个正常的Linux用户一般
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
日晚7点整,微软公司如约发布了Windows 8
日,对于Windows粉丝来说是一个非常重要
本专题盘点了开源世界中那些最臭名昭著的“坏小子”,
本书全面介绍了应用PHP进行网站开发的各种技术和技巧。全书分为20章,内容包括PHP的运行环境配置、表单及表单元素的应用、CSS与J
51CTO旗下网站用户名:于学康
文章数:78
评论数:41
访问量:39584
注册日期:
阅读量:1297
阅读量:3317
阅读量:448863
阅读量:1133638
51CTO推荐博文
Iptables防火墙详细介绍与实战增强服务器安全一:Iptables的概述及应用iptables概述:netfilter/iptables&:&IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables 组成。netfilter/iptables 关系:netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。netfilter/iptables 后期简称为:iptables。 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。&&&所有规则配置后,立即生效,不需要重启服务。三张表:表名作用Filter#负责过滤数据包,包括的规则链有,input,output和forward;Nat#网络地址转换,包括的规则链有,prerouting,postrouting和output;Mangle#表则主要应用在修改数据包内容上,用来做流量整形的,给数据包打个标识,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;五个链:链名作用Input匹配目标IP是本机的数据包,output出口数据包,一般不在此链上做配置forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT。如:把内网中的80端口映射到路由器外网端口上postrouting用来修改源地址用来做SNAT。如:内网通过路由器NAT转换功能实现内网PC机通过一个公网IP地址上网。规则链:1.INPUT――进来的数据包应用此规则链中的策略2.OUTPUT――外出的数据包应用此规则链中的策略&一般不在此链上做配置3.FORWARD――转发数据包时应用此规则链中的策略4.PREROUTING――对数据包作路由选择前应用此链中的规则(记住!所有的数据包进来的时侯都先由这个链处理)5.POSTROUTING――对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)&总结:iptables三个表,5个链接,结构如图:&Raw表:用于处理异常,包括的规则链有,prerouting,output;&一般使用不到。&表-&链-&规则Iptables过滤封包流程&总结:&整体数据包分两类: 1、发给防火墙本身的数据包 ;2、需要经过防火墙到达防火墙之外的数据包&POSTROUTIONG:发送到网卡接口之前。如下图:&数据包流向的基本步骤如下:&1. 数据包到达网络接口,比如 eth0。&2. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。&3. 如果进行了连接跟踪,在此处理。&4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。&5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。&6. 决定路由,看是交给本地主机还是转发给其它主机。&&&&到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过:&7. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。&8. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。&9. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。&10. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。&11. 进入出去的网络接口。完毕。&另一种情况是,数据包就是发给本地主机的,那么它会依次穿过:&7. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。&8. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。&9. 交给本地主机的应用程序进行处理。&10. 处理完毕后进行路由决定,看该往那里发出。&11. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。&12. 连接跟踪对本地的数据包进行处理。&13. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。&14. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。&15. 再次进行路由决定。&16. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。&17. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。&18. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。&19. 进入出去的网络接口。完毕二:实验安装与配置简述Iptables的安装安装[root@xuegod63 ~]# rpm -qf `which iptables`iptables-1.4.7-4.el6.x86_64[root@xuegod63 ~]# rpm -ivh /mnt/Packages/iptables-1.4.7-4.el6.x86_64.rpm&配置文件位置:[root@xuegod63 ~]# ls /etc/sysconfig/iptables/etc/sysconfig/iptables&启动服务[root@xuegod63 ~]# /etc/init.d/iptables start [root@xuegod63 ~]# chkconfig --list iptables iptables &&&&&&0:off1:off2:on3:on4:on5:on&&&6:off&&iptables语法总结:&&iptables主要参数-A 向规则链中添加一条规则,默认被添加到末尾-T指定要操作的表,默认是filter-D从规则链中删除规则,可以指定序号或者匹配的规则来删除-R进行规则替换-I插入一条规则,默认被插入到首部-F清空所选的链,重启后恢复-N新建用户自定义的规则链-X删除用户自定义的规则链-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,-s指定源地址-d指定目的地址-i进入接口-o流出接口-j采取的动作,accept,drop,snat,dnat,masquerade--sport源端口--dport目的端口,端口必须和协议一起来配合使用注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写基本配置简述例1:iptables命令使用方法1: &&-A &链名& &&&APPEND,追加一条规则(放到最后)[root@xuegod63 ~]# iptables -t filter -A INPUT -j DROP&&&&#拒绝所有人访问服务器2: &&-D &链名& &规则号码 | 具体规则内容& &&&DELETE,删除一条规则&&&iptables -D INPUT 1(按号码匹配) 删除 filter 表 INPUT 链中的第1条规则(不管它的内容是什么)注意:&&&&1、若规则列表中有多条相同的规则时,按内容匹配只删除序号最小的一条&&&&2、按号码匹配删除时,确保规则号码 ≤ 已有规则数,否则报错&&&&3、按内容匹配删除时,确保规则存在,否则报错&&iptables -D INPUT -s 192.168.0.1 -j DROP(按内容匹配)&删除 filter 表 INPUT 链中内容为“-s 192.168.0.1 -j DROP”的规则&3: &&-P &链名& &动作& &&&POLICY,设置某个链的默认规则&&&&&&&&4: &&-F [链名] &&&&&&FLUSH,清空规则例如:添加规则:[root@xuegod63 ~]# iptables -t filter -A INPUT -j DROP&#添加一条规则[root@xuegod63 ~]# iptables -F INPUT&&&#清除INPUT链上的规则[root@xuegod63 ~]# iptables -F&&&#清除filter表中所有链上的规则[root@xuegod63 ~]# iptables -t nat -F&&#清空NAT表中所有链上的规则[root@xuegod63 ~]# iptables -t nat -F PREROUTING&&#清空NAT表中PREROUTING链上的规则注意:&1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则。 需要手动改:[root@xuegod63 ~]# iptables -P INPUT ACCEPT2、-P 设置了 DROP 后,使用 -F 一定要小心!!!配置crontab :*/15 * * * * &iptables -P INPUT ACCEPT*/15 * * * * &iptables CF3、如果不写链名,默认清空某表里所有链里的所有规则&5: &&&&-L [链名] &&&&&&LIST,列出规则&&&&v:显示详细信息,包括每条规则的匹配包数量和匹配字节数&&&&x:在 v 的基础上,禁止自动单位换算(K、M)&&&&n:只显示 IP 地址和端口号码,不显示域名和服务名称例如:[root@xuegod63 ~]# iptables CL #粗略列出 filter 表所有链及所有规则[root@xuegod63 ~]#&iptables&-t nat&CvnL #用详细方式列出 nat 表所有链的所有规则,只显示 IP 地址和端口号[root@xuegod63 ~]#&&iptables -t nat -vxnL PREROUTING #用详细方式列出 nat 表 PREROUTING 链的所有规则以及详细数字,不反解&6: &&&&按网络接口匹配-i &匹配数据进入的网络接口& &&#此参数主要应用于nat表,例如目标地址转换例如:&&-i eth0 &&匹配是否从网络接口 eth0 进来&&&&-i ppp0&&匹配是否从网络接口 ppp0 进来&-o 匹配数据流出的网络接口例如:&&&&-o eth0 &&&匹配数据是否从eth0网络接口流出&&&&-o ppp0 &&匹配数据是否从ppp0网络接口流出&iptables &-t nat &-o eth0 条件 &动作&7:按来源目的地址匹配&-s &匹配来源地址&&&&&可以是 IP、NET、DOMAIN,也可空(任何地址)例如:&&&&-s 192.168.0.1 &&&&匹配来自 192.168.0.1 的数据包&&&&-s 192.168.1.0/24 &匹配来自 192.168.1.0/24 网络的数据包&&&&-s 192.168.0.0/16 &匹配来自 192.168.0.0/16 网络的数据包&-d &匹配目的地址&&&&&可以是 IP、NET、DOMAIN,也可以空例如:&&&&-d 202.106.0.20 &&&匹配目标去往 202.106.0.20 的数据包&&&&-d 202.106.0.0/16 &匹配目标去往 202.106.0.0/16 网络的数据包&&&&-d
&&匹配目标去往域名
的数据包&8:按协议类型匹配-p &匹配协议类型&&&&&可以是 TCP、UDP、ICMP 等,也可为空例如:&&&&-p tcp&&&&-p udp&&&&-p icmp --icmp-type 类型&&&&ping: type 8 &&&&&pong: type 0&9:按来源目的端口匹配--sport &匹配源端口&&&&&可以是个别端口,可以是端口范围例如:&&&&--sport 1000 &&&&&匹配源端口是 1000 的数据包&&&&--sport
匹配源端口是
的数据包(含1000、3000)&&&&--sport :3000 &&&&匹配源端口是 3000 以下的数据包(含 3000)&&&&--sport 1000: &&&&匹配源端口是 1000 以上的数据包(含 1000)--dport &匹配目的端口&&&&&可以是个别端口,可以是端口范围例如:&&&&--dport 80 &&&&&&&匹配目的端口是 80 的数据包&&&&--dport
匹配目的端口是
的数据包(含6000、8000)&&&&--dport :3000 &&&&匹配目的端口是 3000 以下的数据包(含 3000)&&&&--dport 1000: &&&&匹配目的端口是 1000 以上的数据包(含 1000)注意:--sport 和 --dport 必须配合 -p 参数使用&10:匹配应用举例1、端口匹配-p udp --dport 53匹配网络中目的端口是 53 的 UDP 协议数据包2、地址匹配-s 10.1.0.0/24 -d 172.17.0.0/16匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包&3、端口和地址联合匹配-s 192.168.0.1 -d
-p tcp --dport 80匹配来自 192.168.0.1,去往
的 80 端口的 TCP 协议数据包&iptable配置实例iptable基本操作iptables -L& 列出iptables规则iptables -F& 清除iptables内置规则iptables -X& 清除iptables自定义规则设定默认规则在iptables规则中没有匹配到规则则使用默认规则进行处理iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP配置SSH规则iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT& 如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。只允许192.168.0.3的机器进行SSH连接iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.允许loopback回环通信IPTABLES -A INPUT -i lo -p all -j ACCEPT&IPTABLES -A OUTPUT -o lo -p all -j ACCEPT目的地址转换,映射内部地址iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.2:80iptables -t nat -A PREROUTING -i ppp0 -p tcp --dprot 81 -j DNAT --to 192.168.0.1-192.168.0.10源地址转换,隐藏内部地址iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10地址伪装,动态ip的NATiptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADEmasquerade和snat的主要区别在于,snat是把源地址转换为固定的IP地址或者是地址池,而masquerade在adsl等方式拨号上网时候非常有用,因为是拨号上网所以网卡的外网IP经常变化,这样在进行地址转换的时候就要在每次都要修改转换策略里面的ip,使用masquerade就很好的解决了这个问题,他会自己去探测外网卡获得的ip地址然后自动进行地址转换,这样就算外网获得的ip经常变化也不用人工干预了。开启转发功能iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT 只允许已建连接及相关链接对内转发ptables -A FORWARD -i eth1 -o eh0 -j ACCEPT 允许对外转发过滤某个MACiptables -A FORWARD -m mac --mac -source MAC地址 -j DROP报文经过路由后,数据包中原有的MAC信息会被替换,所以在路由后的iptables中使用mac匹配没有意义。数据包整流iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPTiptables -A FORWARD -d 192.168.0.1 -j DROP多端口匹配用以一次匹配多个端口iptables -A INPUT -p tcp -m muliport --dport s 21,22,25,80,110 -j ACCEPT丢弃非法连接iptables -A INPUT&& -m state --state INVALID -j DROPiptables -A OUTPUT -m state --state INVALID -j DROPiptables-A FORWARD -m state --state INVALID -j DROP存储于恢复iptables规则iptables-save & somefileiptables-restore & somefile如果你的IPTABLES基础知识还不了解,建议先去看看.Linux下配置iptables防火墙增强服务器一:实验环境iptables服务端:xuegod-63 &&IP:192.168.1.63iptables客户端:xuegod-64 &&IP:192.168.1.64二:实验目标例1:使用iptables防火墙保护公司web服务器例2:使用iptables搭建路由器,通过SNAT功能,使内网PC机,可以上网。例3:拒绝访问服务器本身和拒绝通过服务器访问别的机器例4:使用DNAT 功能,把内网web服务器端口映射到路由器外网&三:实验代码例1:使用iptables防火墙保护公司web服务器具体配置如下:web服务器端:xuegod63&&&&&&客户端: xuegod64配置xuegod63防火墙:&&&服务端运行防火墙并清空防火墙[root@xuegod-63 ~]# /etc/init.d/iptables start[root@xuegod-63 ~]# iptables CF#清空防火墙是怕在防火墙中会有一些规则启动远程连接服务器--22[root@xuegod-63 ~]# /etc/init.d/sshd restart安装vsftpd并启动--21[root@xuegod-63 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm [root@xuegod-63 ~]# /etc/init.d/vsftpd restart客户端安装lftpd并测试[root@xuegod-64 ~]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm [root@xuegod-64 ~]# lftp 192.168.1.63lftp 192.168.1.63:~& ls &&&&&&&&&&&&&&&drwxrwxrwx &&&2 0 &&&&&&&0 &&&&&&&&&&&4096 Aug 18 05:12 publftp 192.168.1.63:/& exit服务端启动阿帕奇服务器--80[root@xuegod-63 ~]# /etc/init.d/httpd restart[root@xuegod-63 ~]# echo 192.168.1.63 & /var/www/html/index.html[root@xuegod-63 ~]# vim /etc/httpd/conf.d/welcome.conf&#注释掉阿帕奇服务器的默认首页#&LocationMatch "^/+$"&# &&Options -Indexes# &ErrorDocument 403 /error/noindex.html#&/LocationMatch&#将以上四个命令进行注释[root@xuegod-63 ~]# /etc/init.d/httpd restart&客户端1.64上测试&#现在是服务端与客户端是可以ping通的&服务器防火墙配置[root@xuegod-63 ~]# iptables -A INPUT -i lo -j ACCEPT[root@xuegod-63 ~]# iptables -A INPUT -p tcp &--dport 22 -j ACCEPT[root@xuegod-63 ~]# iptables -A INPUT -p tcp &--dport 80 -j ACCEPT#服务器之间要用ssh来说远程连接,其端口号是22号,web服务器的端口号是80端口,因此前面要把22,80两个端口开放,在数据包进入(INPUT)链处,给予通过。&[root@xuegod-63 ~]# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT#这个想要进入的是否为刚刚我发出去的回应? 如果是刚刚我发出去的回应,那么就可以予以接受放行. ESTABLISHED:已建立的链接状态。 RELATED:该封包为本机发出的封包有关。[root@xuegod-63 ~]# &iptables -P INPUT DROP注:-P:设置一个链的默认策略 DROP:默认策略的动作 iptables的默认表是:filter&表 所以这条规则的意思就是:设置filter表的INPUT链的默认策略为丢包。就是本机默认不接受任何连接,除非在INPUT链上再设置接收的规则。注:一般iptablesl-,OUTPUT出口一般都放行,不需要在出口上做限制。这样允许服务器主动访问外网所有数据。&[root@xuegod-63 ~]# &iptables -L -nChain INPUT (policy DROP)target &&&&prot opt source &&&&&&&&&&&&&&destination &&&&&&&&ACCEPT &&&&all &-- &0.0.0.0/0 &&&&&&&&&&&0.0.0.0/0 &&&&&&&&&&ACCEPT &&&&tcp &-- &0.0.0.0/0 &&&&&&&&&&&0.0.0.0/0 &&&&&&&&&&tcp dpt:22 ACCEPT &&&&tcp &-- &0.0.0.0/0 &&&&&&&&&&&0.0.0.0/0 &&&&&&&&&&tcp dpt:80 ACCEPT &&&&all &-- &0.0.0.0/0 &&&&&&&&&&&0.0.0.0/0 &&&&&&&&&&state RELATED,ESTABLISHED &测试&&&[root@xuegod-64 ~]# ssh 192.168.1.63root@192.168.1.63's password: 123456Last login: Wed Aug 26 19:32:13 2015 from 192.168.1.64[root@xuegod-63 ~]# exit&例2:使用iptables搭建路由器,通过SNAT功能,使内网PC机,可以上网。&&实验环境:配置:xuegod-63Xuegod-63做路由器&添加两1个网卡,配置eth0为桥接,eth1为vmnet4模式。配置eth0的IP地址为:192.168.1.63&/24配置eth1的IP地址为:192.168.2.1 /24注释:这里eth1设置重启之后,eth0会被no掉,必须要登录到配置文件中修改为yes[root@xuegod-63 network-scripts]# /etc/init.d/network restart配置客户端xuegod64:xuegod-64做客户端,eth0网卡模式为vmnet4配置eth0 &IP,192.168.2.2&启用内核路由转发功能:[root@xuegod63 ~]#echo "1" & /proc/sys/net/ipv4/ip_forward或者[root@xuegod63 ~]# vim /etc/sysctl.conf改:#net.ipv4.ip_forward = 0为:&net.ipv4.ip_forward = 1[root@xuegod63 ~]#sysctl -p #改完使配置生效:&防火墙配置并查看规则[root@xuegod63 ~]#iptables -t nat -A POSTROUTING -s 192.168.2.0/24 &&-j &SNAT &--to 192.168.1.63[root@xuegod-63 ~]# iptables -t nat -L &&&&&&Chain POSTROUTING (policy ACCEPT)target &&&&prot opt source &&&&&&&&&&&&&&destination &&&&&&&&SNAT &&&&&&all &-- &192.168.2.0/24 &&&&&&anywhere &&&&&&&&&&&to:192.168.1.63&测试:[root@xuegod-63 ~]# ping 192.168.1.1&&&#ping路由器PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.19 ms64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=3.06 ms&[root@xuegod-63 ~]# ping &&#ping外网PING www. (119.75.217.109) 56(84) bytes of data.64 bytes from 119.75.217.109: icmp_seq=1 ttl=52 time=37.7 ms64 bytes from 119.75.217.109: icmp_seq=2 ttl=52 time=38.1 ms&&实例3:拒绝访问服务器本身和拒绝通过服务器访问别的机器:&实验环境:配置好网络和对应的IP地址:Xuegod-64: eth0 : IP:192.168.2.2 &&&&&&&&&网卡属于:Vmnet4 xuegod-63: eth1 : IP:192.168.2.1 &&&&&&&&&&&网卡属于:Vmnet4 &xuegod-63: eth0 : IP:192.168.1.63 &&&&&&&&&&网卡属于:桥接&网络拓扑图如下:&&3.1:拒绝访问服务器本身xuegod63启用内核路由转发功能:[root@xuegod63 ~]#iptables&CF &:清除之前实验的所有规则,不包括做SNAT所添加的规则,即这个时候xuegod64是能ping通192.168.1.1,能上网。[root@xuegod63 ~]#iptables -A INPUT -s 192.168.2.2 -j DROP测试:ping不通192.168.2.1&是否可以通过FORWARD链上做规则限制呢?测试:[root@xuegod63 ~]#iptables&CF &清除之前实验的所有规则,不包括做SNAT所添加的规则,即这个时候xuegod64是能ping通192.168.1.1,能上网。[root@xuegod63 ~]#iptables -A FORWARD -s 192.168.2.2 -j DROP可以ping通192.168.2.1注:为什么在INPUT链上做DROP可以限制192.168.2.2访问192.168.2.1,而在FORWARD链上却是不能够限制192.168.2.2访问192.168.2.1呢?&&&&&答:首先,现在要做的是限制192.168.2.2访问服务器192.168.2.1本身。第二INPUT链是本地的,是可以限制其他服务器访问本地服务器的链。而FORWARD链他不是本地的,它是不能够限制其他服务器访问服务器本身的,而只能限制另一个服务器的数据流量要经过本地服务器来访问其他服务器的,只要不是访问本地的,是流经的数据流 都是可以做限制的 。同理,INPUT链是不能做限制另一个服务器的数据流量要经过本地服务器来访问其他服务器的。&查看数据包,匹配流程图:&注:直接ping服务器本身,数据流是不经过RORWARD链的。所以规则要添加在INPUT链上。&&[root@&xuegod63&~]# iptables -A INPUT -s 192.168.2.2&-j DROP&&#不能访问本地服务器了,但是可以正常上网#这里也不能在OUTPUT链上做规则,不允许数据流流出,如果其在这个链上做规则的话,数据流是任然可以访问本地服务器的,只不过不能出去罢了。&3.2:拒绝通过服务器上网注:上一个规则中,只禁止了其访问本地服务器,但是它任然是可以上网的&[root@&xuegod63&~]# iptables -A OUTPUT -d 192.168.2.2 -j DROP&#这里它还是可以上网的,为什么还是能够上网呢? &&&错误的依旧在链的作用上,OUTPUT链也是本地的,他只能限制访问本地服务器的数据流是否能够通过。而想要上网,需要经过本地服务器,即数据流是流经本地服务器的,所以在OUTPUT链上是无法限制到的。因此,这里只能在FORWARD链上做限制。,&[root@xuegod63 ~]#iptables -A FORWARD -s 192.168.2.2 -j DROP测试&#不能上网&&&&例4:使用DNAT 功能,把内网web服务器端口映射到路由器外网&注释:80端口映射&实验环境:xuegod64:&IP&&:192.168.2.2 &&&&&&网卡属于:Vmnet4 xuegod63: eth1 : IP:192.168.2.1 &&&网卡属于:Vmnet4xuegod63: eth0 : IP:192.168.1.63 &&网卡属于:桥接Xuegod63 为路由器Xuegod64 为WEB服务器物理机 &&&&为客户机[root@xuegod63 ~]# iptables -F &&xuegod64,开启动httpd服务,首页内容为: 192.168.2.2[root@xuegod64~]# yum install httpd -y[root@xuegod64~]# /etc/init.d/httpd start[root@xuegod64&~]# echo 192.168.2.2 & /var/www/html/index.html&&xuegod63上做DNAT端口映射:[root@xuegod63 ~]# &iptables -t nat -A PREROUTING -i eth0&-p tcp --dport 80 -j DNAT --to 192.168.2.2:80或:[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.1.63&-p tcp --dport 80 -j DNAT --to 192.168.2.2:80&测试物理机访问&==============================================================&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 iptables与firewall 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信