iptables详解
- 格式:ppt
- 大小:1.09 MB
- 文档页数:27
linux中iptables配置⽂件及命令详解详解iptables配置⽂件直接改iptables配置就可以了:vim /etc/sysconfig/iptables。
1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端⼝开放。
下⾯是命令实现:iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP再⽤命令 iptables -L -n 查看是否设置好,好看到全部 DROP 了这样的设置好了,我们只是临时的,重启服务器还是会恢复原来没有设置的状态还要使⽤ service iptables save 进⾏保存看到信息 firewall rules 防⽕墙的规则其实就是保存在 /etc/sysconfig/iptables可以打开⽂件查看 vi /etc/sysconfig/iptables2、下⾯我只打开22端⼝,看我是如何操作的,就是下⾯2个语句(⼀下为命令⾏模式)iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT再查看下 iptables -L -n 是否添加上去, 看到添加了Chain INPUT (policy DROP)target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22Chain FORWARD (policy DROP)target prot opt source destinationChain OUTPUT (policy DROP)target prot opt source destinationACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22现在Linux服务器只打开了22端⼝,⽤putty.exe测试⼀下是否可以链接上去。
iptables详解及⼀些常⽤规则iptables简介netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防⽕墙,与⼤多数的Linux软件⼀样,这个包过滤防⽕墙是免费的,它可以代替昂贵的商业防⽕墙解决⽅案,完成封包过滤、封包重定向和⽹络地址转换(NAT)等功能。
iptables基础规则(rules)其实就是⽹络管理员预定义的条件,规则⼀般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。
规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、⽬的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的⽅法来处理这些数据包,如放⾏(accept)、拒绝(reject)和丢弃(drop)等。
配置防⽕墙的主要⼯作就是添加、修改和删除这些规则。
iptables和netfilter的关系:这是第⼀个要说的地⽅,Iptables和netfilter的关系是⼀个很容易让⼈搞不清的问题。
很多的知道iptables却不知道netfilter。
其实iptables只是Linux防⽕墙的管理⼯具⽽已,位于/sbin/iptables。
真正实现防⽕墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables传输数据包的过程①当⼀个数据包进⼊⽹卡时,它⾸先进⼊PREROUTING链,内核根据数据包⽬的IP判断是否需要转送出去。
②如果数据包就是进⼊本机的,它就会沿着图向下移动,到达INPUT链。
数据包到了INPUT链后,任何进程都会收到它。
本机上运⾏的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③如果数据包是要转发出去的,且内核允许转发,数据包就会如图所⽰向右移动,经过FORWARD链,然后到达POSTROUTING链输出。
iptables详解(13):iptables动作总结之二概述阅读这篇文章需要站在前文的基础上,如果你在阅读时遇到障碍,请参考之前的文章。
前文中,我们已经了解了如下动作ACCEPT、DROP、REJECT、LOG今天,我们来认识几个新动作,它们是:SNAT、DNAT、MASQUERADE、REDIRECT在认识它们之前,我们先来聊聊NAT,如果你对NAT的相关概念已经滚瓜烂熟,可以跳过如下场景描述。
NAT是Network Address Translation的缩写,译为"网络地址转换",NAT说白了就是修改报文的IP地址,NAT功能通常会被集成到路由器、防火墙、或独立的NAT 设备中。
为什么要修改报文的IP地址呢?我们来描述一些场景,即可知道为什么有这方面的需求了。
场景1:假设,网络内部有10台主机,它们有各自的IP地址,当网络内部的主机与其他网络中的主机通讯时,则会暴露自己的IP地址,如果我们想要隐藏这些主机的IP地址,该怎么办呢?可以这样办,如下。
当网络内部的主机向网络外部主机发送报文时,报文会经过防火墙或路由器,当报文经过防火墙或路由器时,将报文的源IP修改为防火墙或者路由器的IP地址,当其他网络中的主机收到这些报文时,显示的源IP地址则是路由器或者防火墙的,而不是那10台主机的IP地址,这样,就起到隐藏网络内部主机IP的作用,当网络内部主机的报文经过路由器时,路由器会维护一张NAT表,表中记录了报文来自于哪个内部主机的哪个进程(内部主机IP+端口),当报文经过路由器时,路由器会将报文的内部主机源IP替换为路由器的IP地址,把源端口也映射为某个端口,NAT表会把这种对应关系记录下来。
示意图如下:于是,外部主机收到报文时,源IP与源端口显示的都是路由的IP与端口,当外部网络中的主机进行回应时,外部主机将响应报文发送给路由器,路由器根据刚才NAT表中的映射记录,将响应报文中的目标IP与目标端口再改为内部主机的IP与端口号,然后再将响应报文发送给内部网络中的主机。
iptables四表五链⼀、什么是iptables iptables是Linux的防⽕墙管理⼯具⽽已,真正实现防⽕墙功能的是Netfilter,我们配置了iptables规则后Netfilter通过这些规则来进⾏防⽕墙过滤等操作 Netfilter模块: 它是主要的⼯作模块,位于内核中,在⽹络层的五个位置(也就是防⽕墙四表五链中的五链)注册了⼀些钩⼦函数,⽤来抓取数据包;把数据包的信息拿出来匹配各个各个链位置在对应表中的规则:匹配之后,进⾏相应的处理ACCEPT、DROP等等。
下⾯这张图很明了的说明了Netfilter和iptables之间的关系⼆、四表五链(重要) 四表五链: 链就是位置:共有五个进路由(PREROUTING)、进系统(INPUT) 、转发(FORWARD)、出系统(OUTPUT)、出路由(POSTROUTING); 表就是存储的规则;数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放⾏、丢弃、转发还是修改等等操作。
2.1. 具体的四表filter表——过滤数据包Nat表——⽤于⽹络地址转换(IP、端⼝)Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOSRaw表——决定数据包是否被状态跟踪机制处理2.2. 具体的五链INPUT链——进来的数据包应⽤此规则链中的策略OUTPUT链——外出的数据包应⽤此规则链中的策略FORWARD链——转发数据包时应⽤此规则链中的策略PREROUTING链——对数据包作路由选择前应⽤此链中的规则(所有的数据包进来的时侯都先由这个链处理)POSTROUTING链——对数据包作路由选择后应⽤此链中的规则(所有的数据包出来的时侯都先由这个链处理)2.3. 四表五链之间的关系三、iptables语法参数3.1.iptables语法格式iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]3.2.iptables常⽤参数-P 设置默认策略:iptables-P INPUT (DROP|ACCEPT)-F 清空规则链-L 查看规则链-A 在规则链的末尾加⼊新规则-I num 在规则链的头部加⼊新规则-D num 删除某⼀条规则-s 匹配来源地址IP/MASK,加叹号"!"表⽰除这个IP外。
iptables参数详解⼀、limit:速率限制-m limit 说明:--limit 1000/s #设置最⼤平均匹配速率--limit 5/m --limit-burst 15 #表⽰⼀开始能匹配的数据包数量为15个,每匹配到⼀个,limit-burst的值减1,所以匹配到15个时,该值为0,每过12s,limit-burst的值会加1,表⽰⼜能匹配1个数据包例⼦:iptables -A INPUT -i eth0 -m limit --limit 5/m --limit-burst 15 -j ACCEPTiptables -A INPUT -i eth0 -j DROP注意要点:1、--limit-burst的值要⽐--limit的⼤2、limit本⾝没有丢弃数据包的功能,因此,需要第⼆条规则⼀起才能实现限速的功能⼆、time :在特定时间内匹配-m time 说明:--monthdays day1[,day2]在每个⽉的特定天匹配--timestart hh:mm:ss在每天的指定时间开始匹配--timestop hh:mm:ss在每天的指定时间停⽌匹配--weekdays day1[,day2]在每个星期的指定⼯作⽇匹配,值可以是1-7例⼦:iptables -A INPUT -i eth0 -m time --weekdays 1,2,3,4 -jACCEPTiptables -A INPUT -i eth0 -j DROP三、ttl:匹配符合规则的ttl值的数据包-m ttl 说明:--ttl-eq 100匹配TTL值为100的数据包--ttl-gt 100匹配TTL值⼤于100的数据包--ttl-lt 100匹配TTL值⼩于100的数据包例⼦:iptables -A OUTPUT -m ttl --ttl-eq 100 -j ACCEPT四、multiport:匹配离散的多个端⼝-m multiport 说明:--sports port1[,port2,port3]匹配源端⼝--dports port1[,port2,port3]匹配⽬的端⼝--ports port1[,port2,port3]匹配源端⼝或⽬的端⼝例⼦:iptables -A INPUT -m multiport --sports 22,80,8080 -j DROP五、state:匹配指定的状态数据包-m state 说明:--state valuevalue可以为NEW、RELATED(有关联的)、ESTABLISHED、INVALID(未知连接)例⼦:iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT六、mark:匹配带有指定mark值的数据包-m mac 说明:--mark value匹配mark标记为value的数据包例⼦:iptables -t mangle -A INPUT -m mark --mark 1 -j DROP拒绝特定的mac地址访问例⼦:iptables -A FORWARD -m mac --mac-source 00:0C:24:FA:19:80 -j DROP其它参数详解参数 --tcp-flags只过滤TCP中的⼀些包,⽐如SYN包,ACK包,FIN包,RST包等等例如: iptables -p tcp --tcp-flags SYN,FIN,ACK SYN说明⽐对 TCP 封包的状态旗号,参数分为两个部分,第⼀个部分列举出想⽐对的旗号,第⼆部分则列举前述旗号中哪些有被设,未被列举的旗号必须是空的。
iptables 触发日志级别规则摘要:1.iptables简介2.iptables触发日志级别3.iptables规则详解4.日志级别应用场景5.总结正文:IPTables是Linux系统下的一款防火墙工具,通过配置规则,可以实现对网络流量的控制和管理。
在iptables的配置过程中,日志级别和规则起到了关键作用。
本文将详细介绍iptables的日志级别和规则,以及如何根据实际需求进行配置。
一、iptables简介iptables作为Linux系统的防火墙,可以实现对网络流量的过滤和控制。
它具有灵活的规则配置,可以针对不同的网络协议、端口和地址进行筛选。
iptables的配置文件位于`/etc/iptables`,通过命令行工具进行操作。
二、iptables触发日志级别iptables日志分为五个级别,分别是:DEBUG、INFO、WARNING、ERROR和CRITICAL。
日志级别用于控制iptables的输出,方便用户了解防火墙的运行状态。
以下为各个日志级别的含义:1.DEBUG:详细信息,通常只在诊断问题时使用。
:一般性信息,表示iptables正常运行。
3.WARNING:表示某些规则可能有问题,需要检查。
4.ERROR:表示iptables运行过程中出现错误。
5.CRITICAL:表示iptables严重故障,需要立即处理。
三、iptables规则详解iptables规则分为预设链和自定义链两种。
预设链包括:PREROUTING、POSTROUTING、INPUT、FORWARD和OUTPUT。
自定义链可以根据需求进行创建。
以下为一条示例规则:```iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-destination 192.168.1.100```这条规则表示在POSTROUTING链中,将发自eth0接口的流量SNAT (源地址转换)为目标地址为192.168.1.100的设备。
iptables命令、规则、参数详解表 (table)包含4个表:4个表的优先级由高到低:raw-->mangle-->nat-->filterraw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。
一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.filter---这个规则表是预设规则表,拥有INPUT、FORWARD 和OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的理动作net----此规则表拥有prerouting和postrouting两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT)mangle--此规则表拥有prerouting、FORWARD、postrouting 三个规则链,除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(ITL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤)这时就必须将这些工作定义在mangles规则表中常用命令:-A 追加规则-->iptables -A INPUT-D 删除规则-->iptables -D INPUT 1(编号)-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则-N 新的规则-->iptables -N allowed 定义新的规则通用参数:-p 协议例:iptables -A INPUT -p tcp-s源地址例:iptables -A INPUT -s 192.168.1.1-d目的地址例:iptables -A INPUT -d 192.168.12.1-sport源端口例:iptables -A INPUT -p tcp --sport 22-dport目的端口例:iptables -A INPUT -p tcp --dport 22-i指定入口网卡例:iptables -A INPUT -i eth0-o指定出口网卡例:iptables -A FORWARD -o eth0-j 指定要进行的处理动作常用的ACTION:DROP:丢弃REJECT:明示拒绝ACCEPT:接受SNAT基于原地址的转换source--指定原地址比如我们现在要将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外网有效ip)这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP.MASQUERADE(动态伪装)--家用带宽获取的外网ip,就是用到了动态伪装iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADEDNAT目标地址转换destination-指定目标地址iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.210.18访问80端口转换到100.2上MASQUERADE:源地址伪装REDIRECT:重定向:主要用于实现端口重定向MARK:打防火墙标记的RETURN:返回在自定义链执行完毕后使用返回,来返回原规则链。
1.iptables规则详解1.什么是防⽕墙,防⽕墙的种类有哪些防⽕墙:古⼈⽤来隔绝失⽕后的⾼墙,阻挡外来的⽕势,起到了隔离的⼿段。
在互联⽹上,我们会采⽤类似于防⽕墙的⽅法,来保护我们的⽹络不受外来攻击,为此我们需要设定⼀些防⽕墙的规则,确定哪些数据允许通过,哪些不能通过,具有这种功能的设备或软件,我们将其称为防⽕墙防⽕墙的种类:逻辑层⾯:主机防⽕墙:针对单个主机进⾏防护,例如Windows防⽕墙⼀般是软件⽹络防⽕墙:处于⽹路⼊⼝的边缘,针对⽹络⼊⼝进⾏防护⼀般是硬件,也可以⽤软件物理层⾯:硬件防⽕墙:⼀个实体的硬件,嵌⼊软件,实现防⽕墙的功能,性能⾼,成本⾼软件防⽕墙:通过软件的⽅式,模拟防⽕墙的功能,运⾏在操作系统上⾯,性能低,成本低2.iptables介绍1.什么是iptables?iptables可以理解为是⼀个代理程序,⽤户通过代理程序,将安全规则添加到安全框架中 net filter(内核空间)netfilter/iptables 是Linux中的包过滤型防⽕墙,是免费的,可以代替昂贵的商业防⽕墙解决⽅案,可以实现数据包的过滤,实现数据包的转换。
2.什么是包过滤防⽕墙?包过滤型防⽕墙在我们⽹络层拦截⽹络数据包的包头(header),可以针对数据包的包头,与我们事先准备好的防⽕墙规则进⾏⽐对,与规则相匹配的包放⾏,不匹配的包丢弃或者执⾏⼀些复杂的动作,包过滤型防⽕墙⼀般作⽤在我们的⽹络层,故通常header中带有客户端来源IP,源端⼝,⽬标IP,⽬标端⼝,协议类型:tcp udp icmp,根据这些状态信息来判断,是否符合我们的IP tables的过滤规则,符合通过,不然拒绝。
3.包过滤型防⽕墙是怎么实现的?是基于net filter安全框架实现的,是内核的⼀部分,如果我们想要让防⽕墙达到防⽕的⽬的,需要我们在内核中,设定⼀些关卡,所有进出的报⽂,根据设定的这些关卡进⾏检查,将符合条件的放⾏,不符合的阻⽌,在net filter中,这些关卡就是链3.iptables链的概念1.什么是链?防⽕墙的作⽤就是在于将经过的报⽂与设定的规则进⾏⽐对,然后执⾏响应的动作,报⽂经过链时,必须匹配链的规则,在链上不⽌⼀条规则,存在着很多规则,当我们将这些规则穿在⼀起的时候就形成了链链的匹配规则,如下图所⽰,当有报⽂经过时,会以此往下匹配规则,如果匹配成功,则执⾏相对于的动作,如果匹配不成功,就以此往下匹配,直到最后⼀条规则还是没有匹配成功,会执⾏链的默认规则。
linux防⽕墙iptables参数详解先来看iptables 防⽕墙的⼀些常⽤设置:1. iptables-A INPUT -p tcp -s x.x.x.x/x --dport 22 -j ACCEPT // 允许源地址为x.x.x.x/x的主机通过22(ssh)端⼝.2. iptables -A INPUT -p tcp --dport 80 -j ACCEPT // 允许80(http)端⼝的数据包进⼊3. iptables -A INPUT -p tcp --dport 110 -j ACCEPT // 允许110(pop3)端⼝的数据包进⼊如果不加这规则,就只能通过web页⾯来收信(⽆法⽤OE或Foxmail等来收)4. iptables -A INPUT -p tcp --dport 25 -j ACCEPT // 允许25(smtp)端⼝的数据包进⼊,如果不加这规则,就只能通过web页⾯来发信(⽆法⽤OE或Foxmail等来发)5. iptables -A INPUT -p tcp --dport 21 -j ACCEPT // 允许21(ftp)端⼝的数据包进⼊(传数据)6. iptables -A INPUT -p tcp --dport 20 -j ACCEPT // 允许20(ftp)端⼝的数据包进⼊(执⾏ftp命令,如dir等)7. iptables -A INPUT -p tcp --dport 53 -j ACCEPT // 允许53(dns)端⼝的数据包进⼊(tcp)8. iptables -A INPUT -p udp --dport 53 -j ACCEPT // 允许53(dns)端⼝的数据包进⼊(udp)9. iptables -A INPUT -p icmp -j ACCEPT // 允许ICMP包通过10. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT //利⽤ iptables 对连接状态的⽀持11. iptables -P INPUT DROP//把INPUT链的默认规则设置为DROPIptalbes 防⽕墙主要参数和设置说明:TARGETS防⽕墙的规则指定所检查包的特征,和⽬标。
详解Linuxiptables命令iptables 是 Linux 管理员⽤来设置 IPv4 数据包过滤条件和 NAT 的命令⾏⼯具。
iptables ⼯具运⾏在⽤户态,主要是设置各种规则。
⽽ netfilter 则运⾏在内核态,执⾏那些设置好的规则。
查看 iptables 的链和规则查看规则的命令格式为:iptables [-t tables] [-L] [-nv]-t :后⾯接 table ,例如 nat 或 filter ,若省略此项⽬,则使⽤默认的 filter-L :列出某个 table 的所有链或某个链的规则-n :直接显⽰ IP,速度会快很多-v :列出更多的信息,包括通过该规则的数据包总位数、相关的⽹络接⼝等列出 filter table INPUT 链的规则:$ sudo iptables -L INPUT列出 nat table 三条链的规则:$ sudo iptables -t nat -L -n列出 filter table 三条链的规则:$ sudo iptables -L红框中的内容为链的名称及其默认策略,filter 表中所有链的默认策略都是 ACCEPT。
红框下⾯的⾏代表什么呢?target:代表进⾏的动作,ACCEPT 是放⾏,REJECT 是拒绝,DROP 则是丢弃数据包。
port:代表使⽤的协议,主要有 tcp、udp 和 icmp 三种。
opt:额外的选项说明。
source:规则针对的来源 IP。
destination:规则针对的⽬标 IP。
因为默认情况下没有添加⾃定义的规则,所以上图中这些⾏下⾯都是空的。
清除本机防⽕墙规则清除规则的命令格式如下:iptables [-t tables] [-FXZ]-F:清除所有已制定的规则-X:删除所有使⽤者⾃定义的 chain(其是 tables)-Z:将所有的 chain 的计数与流量统计都清零如果我们要制订⼀套防⽕墙规则,⼀般会先清除现有的规则,然后从头开始创建新的规则。
Linux防⽕墙iptables命令详解iptables -Fiptables -Xiptables -F -t mangleiptables -t mangle -Xiptables -F -t natiptables -t nat -X⾸先,把三个表清空,把⾃建的规则清空。
iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD ACCEPT设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。
iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT先把“回环”打开,以免有不必要的⿇烦。
iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPTiptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT在所有⽹卡上打开ping功能,便于维护和检测。
iptables -A INPUT -i eth0 -s 192.168.100.250 -d 192.168.100.1 -p tcp --dport 22 -j ACCEPTiptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.100.1 -p tcp --sport 22 -j ACCEPT打开22端⼝,允许远程管理。
(设定了很多的附加条件:管理机器IP必须是250,并且必须从eth0⽹卡进⼊)iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPTiptables -A INPUT -i eth1 -s 192.168.168.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth1 -d 192.168.168.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPTiptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPTiptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT上⾯这⼏句是⽐较头痛的,我做逐⼀解释。
∙数据包经过防火墙的路径∙禁止端口∙强制访问某站点∙发布内部网络服务器∙智能DNS∙端口映射∙通过NAT上网∙IP规则的保存与恢复∙iptables指令语法∙iptables实例数据包经过防火墙的路径图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况:来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。
由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。
图1如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图.图2禁止端口的实例禁止ssh端口只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh #iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT#iptables -A INPUT -p tcp --dport 22 -j DROP∙禁止代理端口#iptables -A INPUT -p tcp --dport 3128 -j REJECT∙禁止icmp端口除192.168.62.1外,禁止其它人ping我的主机#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT#iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP或#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT#iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP注:可以用iptables --protocol icmp --help查看ICMP类型还有没有其它办法实现?∙禁止QQ端口#iptables -D FORWARD -p udp --dport 8000 -j REJECT强制访问指定的站点图3要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则:1. 打开ip包转发功能echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT--to-destination 202.96.134.130:80iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT--to-destination 202.96.134.130:803. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-300004. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP为202.96.134.130的网站.发布内部网络服务器图4要使因特网上的计算机访问到内部网的FTP服务器、WEB服务器,在做为防火墙的计算机上应添加以下规则:1. echo 1 > /proc/sys/net/ipv4/ip_forward2. 发布内部网web服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-300003. 发布内部网ftp服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport21 -j DNAT --to-destination 192.168.52.14:21iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-500004. 注意:内部网的计算机网关要设置为防火墙的ip(192.168.52.1)5. 测试: 用一台IP地址为202.96.134.0段的计算机虚拟因特网访问,当在其浏览器中访问http://202.96.134.10时,实际应看到的是192.168.52.15的的web 服务;当访问ftp://202.96.134.10时,实际应看到的是192.168.52.14上的的ftp服务智能DNS图51. echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT服务器上添加以下规则:在PREROUTING链中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dpor 53 -j DNAT--to-destination 202.96.134.130iptables -t nat -I PREROUTING -i eth0 -p udp --dpor 53 -j DNAT--to-destination 202.96.134.130在POSTROUTING链中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p tcp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p udp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-500003. 测试在内部网任一台计算机上,将DNS设置为任意的外网IP,就可以使用DNS测试工具如nslookup来解析DNS服务器202.96.134.130上的名称.端口映射见上节透明代理设置#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128通过NAT上网典型NAT上网一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0、eth1,eth0连接外网,IP为202.96.134.134;eth1连接局域网,IP为192.168.62.101. 先在内核里打开ip转发功能#echo 1 > /proc/sys/net/ipv4/ip_forward2.?使局域网用户能访问internet所要做的nat#iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to?202.96.134.134如果上网的IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.62.0/24 -j MASQUERADE如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE3. 使internet用户可以访问局域网内web主机所要做的nat#iptables -t nat -A PREROUTING -p tcp -d 202.96.134.134 --dport 80 -j DNAT --to-destination 192.168.62.10注:局域网内的客户端需将默认网关、DNS设为防火墙的IP在我们的网络机房实现NAT共享上网工作环境:上层代理192.168.60.6(4480),只授予教师机(192.168.62.111)使用该代理的权限目标:不使用squid代理上网,而是使用NAT的方式上网方法:1) 确保停止教师机(192.168.62.111)的squid或其它代理服务2) 客户端网关、DNS均指向192.168.62.111,浏览器代理设置为192.168.60.6(4480)。
iptables的状态检测机制(TCPUDPICMP状态详解)iptables是一个用于Linux操作系统的防火墙工具,用于管理网络数据包的过滤和转发。
它可以监测和控制网络流量,确保网络的安全性和可靠性。
在iptables中,有三种状态检测机制,即TCP状态检测、UDP 状态检测和ICMP状态检测。
本文将详细介绍这三种机制。
1.TCP状态检测:TCP(传输控制协议)是一种面向连接的、可靠的传输协议,通过三次握手建立和维持连接。
在iptables中,我们可以使用TCP状态检测来监测TCP连接的状态并控制流量。
常用的TCP状态检测有以下几种:- NEW:检测新建立的TCP连接。
当iptables检测到一个新的TCP连接时,它会按照我们预先定义的规则进行处理。
- ESTABLISHED:检测已建立的TCP连接。
当iptables检测到一个已建立的TCP连接时,它会根据我们的规则允许或拒绝数据包的传输。
-RELATED:检测与已建立的TCP连接相关的连接。
比如FTP数据连接就是建立在一个FTP控制连接之上的,这时候可以使用RELATED状态检测来检测与FTP控制连接相关的数据连接。
- INVALID:检测无效的TCP连接。
当iptables检测到一个无效的TCP连接时,它会拒绝该连接并记录日志。
通过对TCP连接状态的检测,我们可以根据需要采取相应的安全措施和控制措施,确保网络的安全性和可靠性。
2.UDP状态检测:UDP(用户数据报协议)是一种无连接的、不可靠的传输协议,数据包之间没有建立连接的过程。
在iptables中,我们可以使用UDP状态检测来监测UDP连接的状态并进行相应的处理。
常用的UDP状态检测有以下几种:- NEW:检测新收到的UDP数据包。
当iptables检测到一个新的UDP数据包时,它会按照我们预先定义的规则进行处理。
- ESTABLISHED:检测已建立的UDP连接。
当iptables检测到一个已建立的UDP连接时,它会根据我们的规则允许或拒绝数据包的传输。
Iptables命令详解很多人把iptables 叫做防火墙,其实这是错误的观点,真正的防火墙名字叫做netfilter,iptables 只是它的一个实现工具。
iptables 各种应用规则是必要要熟练掌握的。
但是作为系统管理员,我们也应该会最基本的操作,认识iptables 的基本规则。
# iptables –nvL //查看当前iptables规则# iptables -F; /etc/init.d/iptables save //清空iptables规则并保存防火墙规则保存在/etc/sysconfig/iptables你可以查看一下这个文件。
iptalbes 的三个表filter表主要用于过滤包的,是系统预设的表,内建三个链INPUT、OUTPUT 以及FORWARD。
INPUT 作用于进入本机的包,OUTPUT 作用于本机送出的包,FORWARD 作用于那些跟本机无关的包。
nat 主要用处是网络地址转换,也有三个链。
PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。
OUTPUT 链改变本地产生的包的目的地址。
POSTROUTING 链在包就要离开防火墙之前改变其源地址。
该表我用的不多,但有时候会用到。
mangle 这个表主要是用于给数据包打标记,然后根据标记去操作哪些包。
这个表几乎不怎么用。
除非你想成为一个高级网络工程师,否则就没有必要花费很多心思在它上面。
iptables 基本语法查看规则以及清除规则# iptables -t -nat -n vL说明:-t 后面跟表名, -nvL即查看该表的规则,其中-n表示不针对IP反解析主机名,-L表示列出的意思,而-v表示列出的信息更加详细。
如果不加-t,则打印filter表的相关信息如下图:# iptables -F //-F 表示把所有规则全部删除,# iptables -Z //-Z 表示把包以及流量计数器置零说明:不加-t 默认是针对表filter 来操作的。
Linux下防火墙iptables使用详解iptables规则书写规则的语法格式为:iptables [-t table] command chains [creteria] -j action-t table就是表名,filter/nat/mangle三个表中的一个,默认是filter表command告诉程序如何做,比如:插入一个规则,还是删除等chains 链,有五个,PREROUTING POSTROUTING INPUT OUTPUT FORW ARDaction 处理动作,有ACCEPT DENY DROP REJECT SNAT DNA T一、Tables(表)选项-t用来指定用哪个表,它可以是下面的任何一个,默认的是filter表iptables有Filter, NAT, Mangle, Raw四种内建表:1. Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链–处理来自外部的数据。
OUTPUT链–处理向外发送的数据。
FORWARD链–将数据转发到本机的其他网卡设备上。
2. NAT表NAT表有三种内建链:PREROUTING链–处理刚到达本机并在路由转发前的数据包。
它会转换数据包中的目标IP地址(d estination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链–处理即将离开本机的数据包。
它会转换数据包中的源IP地址(source ip add ress),通常用于SNAT(source NAT)。
OUTPUT链–处理本机产生的数据包。
3. Mangle表Mangle表用于指定如何处理数据包。
它能改变TCP头中的QoS位。
Mangle表具有5个内建链(cha ins):PREROUTING 、OUTPUT、FORWARD、INPUT、POSTROUTING4. Raw表Raw表用于处理异常,它具有2个内建链:PREROUTING chainOUTPUT chain二、COMMANDS(命令)command指定iptables对我们提交的规则要做什么样的操作。
iptables功能说明一、Netfilter介绍:netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等。
Netfilter在ipv4中的结构:Hook1:NF_IP_PREROUTING 、Hook2:NF_IP_LOCAL_IN Hook3 :NF_IP_FORWARD 、Hook4 :NF_IP_POST_ROUTING Hook5 :LOCAL_OUT数据从左边进入系统,经过ip校验后,数据经过第一个钩子函数hook1进行处理;然后就进入路由代码,起决定该数据包是需要转发还是发给本机;如果发给本机经过hook2处理后传递给上层协议,如果被转发经过hook3处理,经过转发发的数据包经过最后一个钩子hook4处理后在输入到网络上,本地产生的包经过hook5处理后再惊醒路由选择处理,然后经过hook4处理后发送到网络上。
二、iptables的介绍:Iptables 是与Linux 内核集成的IP 信息包过滤系统。
如果Linux 系统连接到因特网或LAN、服务器或连接LAN 和因特网的代理服务器,则该系统有利于在Linux 系统上更好地控制IP 信息包过滤和防火墙配置。
netfilter/iptables IP 信息包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。
这些规则存储在专用的信息包过滤表中,而这些表集成在Linux 内核中。
在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。
虽然netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和iptables 组成。