iptables详解
linux中iptables配置文件及命令详解详解
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详解及⼀些常⽤规则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链输出。
(13)iptables详解:iptables动作总结之二
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 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参数详解
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 触发 日志 级别 规则
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的设备。
redhatiptables详解
Iptables通过快速的数据包过滤 机制,减少了不必要的网络传输, 提高了网络性能。
Iptables的发展历程
Iptables的前身是ipfwadm和ipchains,它们在Linux内核2.2版本之前就 已经存在。
随着Linux内核的发展,ipfwadm和ipchains逐渐被淘汰,Iptables成为 主流的防火墙工具。
插入规则
使用`iptables -I`命令可以将规则插入到链的开始位置。例如,要将一条拒绝所有输入 包的规则插入到INPUT链的开始位置,可以使用以下命令:`iptables -I INPUT -j DROP`。
删除规则
删除规则
使用`iptables -D`命令可以删除一条已存在 的规则。例如,要删除前面添加的允许从任 何IP地址访问本机的80端口的规则,可以使 用以下命令:`iptables -D INPUT -p tcp -dport 80 -j ACCEPT`。
redhatiptables详解
目录
• Iptables简介 • Iptables基本概念 • Iptables基本操作 • Iptables常用表和链 • Iptables常用匹配和目标 • Iptables防火墙配置示例
01
Iptables简介
什么是Iptables
Iptables是Linux操作系统下的一个强大的防火墙工具,用于配置和管理网络数据包过滤规则。它允 许用户根据预设的规则对进出的网络数据包进行筛选和操作,从而控制网络通信。
保存和恢复规则
要点一
保存规则
在Red Hat系统上,iptables规则默认保存在 `/etc/sysconfig/iptables`文件中。要保存当前的规则到文 件中,可以使用以下命令:`service iptables save`。
iptables命令、规则、参数详解
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.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参数详解
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命令
详解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命令详解
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上⾯这⼏句是⽐较头痛的,我做逐⼀解释。
iptables详解经典
∙数据包经过防火墙的路径∙禁止端口∙强制访问某站点∙发布内部网络服务器∙智能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的状态检测机制(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命令详解很多人把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使用规则详解
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功能介绍及源码分析
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 组成。
iptables的表和链结构详解
iptables的表和链结构详解
2018-05-04
iptables总的结构
iptables 其实是多个表(table)的容器,每个表⾥包含不同的链(chain),链⾥边定义了不同的规则(policy),我们通过定义不同的规则,来控制数据包在防⽕墙的进出。
iptables⾥的三⼤表
Filter 是默认的主机防⽕墙,过滤流⼊流出主机的数据包。
⾥边包含INPUT,OUTPUT,FOWARD三个链
INPUT 过滤进⼊主机的数据包
OUTPUT 处理从本机发出去的数据包
FOWARD 处理流经本主机的数据包,与NAT有关系
Filter表是企业实现防⽕墙功能的重要⼿段
NAT 负责⽹络地址转换(来源于⽬的地址的IP与端⼝的转换),⼀般⽤于局域⽹的共享上⽹,与⽹络交换机acl类似,包含
OUTPUT,PREROUTING,POSTROUTING三条链
OUTPUT 改变主机发出去的数据包的⽬标地址
PREROUTING 数据包到达防⽕墙时进⾏分路由判断之前执⾏的规则,改变数据包的⽬的地址,⽬的端⼝
POSTROUTING 数据包离开防⽕墙时进⾏分路由判断之前执⾏的规则,改变数据包的源的地址,源的端⼝
Mangle 在企业中应⽤⽐较少。
iptables详解--转
iptables详解--转iptables详解基本概念:1.防⽕墙⼯作在主机边缘:对于进出本⽹络或者本主机的数据报⽂,根据事先设定好的检查规则对其检查,对形迹可疑的报⽂⼀律按照事先定义好的处理机制做出相应处理对linux⽽⾔tcp/ip协议栈是在内核当中,意味着报⽂的处理是在内核中处理的,也就是说防⽕墙必须在⼯作在内核中,防⽕墙必须在内核中完成tcp/ip报⽂所流进的位置,⽤规则去检查,才真正能⼯作起来。
iptables⽤来衡量tcp/ip报⽂的属性:源ip、⽬标ip、源端⼝、⽬标端⼝;tcp标志位: syn、syn+ack、ack、 fin、urg、psh、rst ;2.应⽤⽹关众多代理服务器都是应⽤⽹关,⽐如squid(使⽤acl限制应⽤层)varish这⼀类代理服务等。
3,⼊侵检测系统(IDS):·⽹络⼊侵检测系统 NIDS·主机⼊侵检测系统 HIDS对于IDS常⽤的检测服务有:snort等4.⼊侵防御系统(IPS),⽐如蜜罐部署⼀套⼊侵检测系统是⾮常⿇烦的,因为必须检测⽹络任意⼀个位置对于IPS常⽤的检测服务有: tripwire 等iptables基本概念对linux来说,是能够实现主机防⽕墙的功能组件,如果部署在⽹络边缘,那么既可以扮演⽹络防⽕墙的⾓⾊,⽽且是纯软件的⽹络数据⾛向:请求报⽂à⽹关à路由à应⽤程序(等待⽤户请求)à内核处理à路由à发送报⽂iptables规则功能表:filter主要和主机⾃⾝有关,主要负责防⽕墙功能过滤本机流⼊流出的数据包是默认使⽤的表;input :负责过滤所有⽬标地址是本机地址的数据包,就是过滤进⼊主机的数据包;forward :负责转发流经主机但不进⼊本机的数据包,和NAT关系很⼤;output :负责处理源地址的数据包,就是对本机发出的数据包;NAT表:负责⽹络地址转换,即来源于⽬的IP地址和端⼝的转换,⼀般⽤于共享上⽹或特殊端⼝的转换服务snat :地址转换dnat :标地址转换pnat :标端⼝转换mangle 表:将报⽂拆开来并修改报⽂标志位,最后封装起来5个检查点(内置链)·PREROUTING·INPUT·FORWORD·OUTPUT·POSTROUTING多条链整合起来叫做表,⽐如,在input这个链,既有magle的规则也可能有fileter的规则。
高级技巧使用iptables进行网络流量控制与限速
高级技巧使用iptables进行网络流量控制与限速高级技巧:使用iptables进行网络流量控制与限速近年来,随着互联网的迅猛发展,网络流量的控制与限速变得越来越重要。
为了满足不同用户的需求,并保持网络的稳定性,管理员们需要掌握一些高级技巧来进行网络流量的控制与限速。
本文将介绍一种常见而有效的方法,即使用iptables。
一、iptables简介iptables是一个在Linux操作系统中用于管理网络流量的工具。
它允许管理员设置规则来过滤、控制和限制传入和传出的网络流量。
通过定义规则,可以实现网络流量的分类、转发、丢弃等操作,从而帮助管理员控制网络的负载和带宽分配。
二、设置基本的流量控制规则首先,我们需要了解如何设置基本的流量控制规则。
以下是一个示例,展示了如何使用iptables来限制每台主机的上传和下载速度。
1. 设置上传速度限制要限制某台主机的上传速度,可以使用以下命令:iptables -A OUTPUT -m limit --limit 100kb/s -j ACCEPT该命令将限制上传速度为每秒不超过100KB。
2. 设置下载速度限制要限制某台主机的下载速度,可以使用以下命令:iptables -A INPUT -m limit --limit 1mb/s -j ACCEPT该命令将限制下载速度为每秒不超过1MB。
三、设置高级的流量控制规则除了基本的限速功能,iptables还提供了一些高级的流量控制功能,使管理员能够更加精细地控制网络流量。
以下是一些常见的高级技巧。
1. 使用QoS(Quality of Service)进行流量控制QoS是一种网络流量管理机制,通过对不同类型的流量分配不同的优先级,以保证网络的服务质量。
使用iptables,我们可以配置QoS来实现流量的分类和优先级控制。
2. 使用连接跟踪进行应用层的流量控制iptables提供了连接跟踪机制,可以识别并跟踪不同的连接。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
添加新的规则
-A:在链的末尾追加一条规则 -I:在链的开头(或指定序号)插入一条规则
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT [root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT [root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT -p 用来指定协议
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT
几个注意事项
不指定表名时,默认指 filter表 C:\Users\Administrator> ping 192.168.4.254 正在 Ping 192.168.4.254 具有 32 字节的数据: 不指定链名时,默认指表内的所有链 来自 192.168.4.254 的回复: 无法连到端口。 除非设置链的默认策略,否则必须指定匹配条件 来自 192.168.4.254 的回复: 无法连到端口。 阻止ping测试 ……
iptables的表、链结构3-1
规则链
规则的作用:对数据包进行过滤或处理 链的作用:容纳各种防火墙规则 链的分类依据:处理数据包的不同时机
默认包括5种规则链
INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTING链:在进行路由选择后处理数据包 PREROUTING链:在进行路由选择前处理数据包
规则链之间的顺序
规则链内的匹配顺序
数据包过滤的匹配流程2-2
匹配流程示意图
网络A
本机的应用进程
路 由 选 择
网络B
raw:OUTPUT mangle:OUTPUT
入站数据流向
mangle:INPUT filter:INPUT
nat:OUTPUT filter:OUTPUT
出站数据流向
iptables的表、链结构3-2
规则表
表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤)
默认包括3个规则表
iptables的表、链结构3-3
iptables的管理选项5-2
查看规则列表
-L:列出所有的规则条目 -n:以数字形式显示地址、端口等信息 -v:以更详细的方式显示规则信息 --line-numbers:查看规则时,显示规则的序号
[root@localhost ~]# iptables -L INPUT --line-numbers [root@localhost ~]# iptables -n -L INPUT Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT) num target prot opt source destination -n -L 可合写为 -nL target prot opt source destination 1 ACCEPT udp -- anywhere anywhere ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- anywhere anywhere ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 REJECT icmp -- anywhere anywhere reject-with icmp-portREJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-portunreachable unreachable 4 ACCEPT tcp -- anywhere anywhere ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
iptables的管理选项5-4
设置默认策略
-P:为指定的链设置默认规则
[root@localhost ~]# iptables -t filter -P FORWARD DROP [root@localhost ~]# iptables -P OUTPUT ACCEPT 默认策略要么是 ACCEPT、要么是DROP
netfilter是Linux核心中的一个通用架构,它提供 了一系列的“表”(tables),每个表由若干“链” (chains)组成,而每条链可以由一条或数条“规 则”(rules)组成。实际上,netfilter是表的容器, 表是链的容器,而链又是规则的容器。
1.规则(rules) 规则(rules)其实就是网络管理员预定义的条件, 规则一般的定义为“如果数据包头符合这样的条件,就 这样处理这个数据包”。规则存储在内核空间的信息包 过滤表中,这些规则分别指定了源地址、目的地址、传 输协议(如TCP、UDP、ICMP)和服务类型(如HTTP 、FTP和SMTP)等。当数据包与规则匹配时,iptables 就根据规则所定义的方法来处理这些数据包,如放行( accept)、拒绝(reject)和丢弃(drop)等。配置防火 墙的主要工作就是添加、修改和删除这些规则。
选项、链名、控制类型使用大写字母,其余均为小写
iptables的基本语法2-2
Байду номын сангаас
数据包的常见控制类型
ACCEPT:允许通过 DROP:直接丢弃,不给出任何回应 REJECT:拒绝通过,必要时会给出提示 LOG:记录日志信息,然后传给下一条规则继续匹配
iptables的管理选项5-1
默认的表、链结构示意图
raw 表
…… PREROUTING 链 …… OUTPUT 链
mangle 表
…… PREROUTING 链 …… POSTROUTING 链 …… INPUT 链 …… OUTPUT 链
nat 表
…… PREROUTING 链 …… POSTROUTING 链 …… OUTPUT 链
iptables
—— 上述2种称呼都可以表示Linux防火墙
Linux包过滤防火墙概述2-2
包过滤的工作层次
主要是网络层,针对IP数据包 体现在对包内的IP地址、端口等信息的处理上
应用层 传输层 网络层 链路层 外部网络
应用代理 传输层 网络层 链路层 网络层防火墙
应用层 传输层 网络层 链路层 受保护网络
filter 表
第1条规则 第2条规则 第3条规则 ……
INPUT 链
…… FORWARD 链 …… OUTPUT 链
…… FORWARD 链
数据包过滤的匹配流程2-1
规则表之间的顺序
manglenatfilter 入站:PREROUTINGINPUT 出站:OUTPUTPOSTROUTING 转发:PREROUTINGFORWARDPOSTROUTING 按顺序依次检查,匹配即停止(LOG策略例外) 若找不到相匹配的规则,则按该链的默认策略处理
3.表(tables) 表(tables)提供特定的功能,iptables内置了3个表,即 filter表、nat表和mangle表,分别用于实现包过滤,网络地址 转换和包重构的功能。 (1).filter表 主要用于过滤数据包,该表根据系统管理员预定义的一组规 则过滤符合条件的数据包。对于防火墙而言,主要利用在filter 表中指定的规则来实现对数据包的过滤。Filter表是默认的表, 如果没有指定哪个表,iptables就默认使用filter表来执行所有命 令。 (2).nat表 主要用于网络地址转换NAT (3).mangle表 主要用于对指定数据包进行更改
iptables的管理选项5-5
常用管理选项汇总
类别
添加新的规则 -I -L -n 查看规则列表 -v --line-numbers -D 删除、清空规则 -F 设置默认策略 -P 清空所有的规则 为指定的链设置默认规则 在链的开头(或指定序号)插入一条规则 列出所有的规则条目 以数字形式显示地址、端口等信息 以更详细的方式显示规则信息 查看规则时,显示规则的序号 删除链内指定序号(或内容)的一条规则
选项
-A 在链的末尾追加一条规则
用途
规则的匹配条件5-2
常见的通用匹配条件
协议匹配:-p 协议名 地址匹配:-s 源地址、-d 目的地址 接口匹配:-i 入站网卡、-o 出站网卡
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP [root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT [root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT 叹号 ! 表示条件取反 [root@localhost ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP 外网接口