Openwrt开发日志——iptables对报文处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35509823/article/details/76445358

Mission6

                                                                                                 ——iptables对目标的处理Tool

XshellWinSCPOpenwrtNewifi

Reference:

《智能路由器开发指南》

Procedure

      防火墙规则检测报文的特征是否符合规则,如果匹配,就进入规则的处理目标(TARGET)中。如果报文不匹配则进入该规则链的下一条规则进行检测。就这样逐条规则进行比较,直到整个规则链比较完成。规则的处理目标可以使用户定义的自定义链名,也可以是系统内置的4种处理方式。

n ACCEPT(接收):表示让这个报文通过。

n DROP(丢弃):表示将这个报文丢弃。

n QUEUE(入队):表示把这个报文传递到用户空间的队列中。

n RETURN(返回):表示停止这条规则链的匹配,返回到调用这个规则链的上一条规则链的规则处执行。如果到达了一个内建的规则链的末端,或者遇到内置链的规则目标是REUTRN,报文将由规则链制定的默认目标处理方式决定。

还有其他的扩展目标处理方式,例如REJECTDNATSNATMASQUERADELOGREDIRECT等,下面一一讲述。

12.3.1 REJECT(拒绝)

REJECTDROP一样丢弃报文,但REJECT的不同之处在于同时还向发送者返回一个ICMP错误消息。这样发送者将知道报文被丢弃,如果发送端检测到返回的错误信息,将不再尝试发送报文,这样可以在特定情况下减少重复动作。

如禁止访问主机上80端口的服务,访问者将收到端口不可达的ICMP消息。

#>iptables -A INPUT -p tcp –dport 80 -jREJECT

DROPREJECT含义的比较

DROPREJECT报文,许多人选择丢弃报文,因为其安全优势超过拒绝,因为这样暴露给攻击者的信息比较少,然后在调试网络问题时会遇到困难,应用程序也不知所措。

如果报文被REJECT,路由器将相应一个ICMP目的端口不可达消息,这样连接将立即失败。这意味着每一个试图连接特定端口都会有ICMP相应报文产生。如果有大量的访问或攻击,这样做会有大量的ICMP消息产生,导致占用所有的带宽而合法的连接不可用(DOS)。且暴露了防火墙的IP地址。

当使用DROP时,客户端不知道报文被丢弃,会继续使用重传机制来发送报文,直到连接超时。具体行为依赖客户端软件的实现,这将导致程序挂起等待超时,然后才会继续执行。同时也不利于分析问题出现的原因,可能是DROP也可能是报文丢失了。因此两者各有利弊。

      12.3.2 DNAT(目的网络地址转换)

      当你的局域网内的多个服务器需要对互联网机器提供服务时,你就会用到这个目标处理方式。这个目标是用来实现目的网络地址转换。即重写报文的目的IP地址。如果一个报文被匹配了,那么和它属于同一个流的所有报文都会被自动转换,然后就可以被路由到正确的网络。这个处理目标仅可以用在nat表中的PREROUTINGOUTPUT链以及被这些链调用的自定义链中。例如将路由器的80端口的流量重定向到192.168.1.1上:

      #>iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT–to-destination 192.168.1.1

      这样的Web路由器就可以搭建在局域网的主机(192.168.1.1)上对外提供服务。对外仅有路由器的IP地址暴露给用户,也节省了IP资源。处理流程:

(1)       报文进入防火墙之后,将目标地址修改为192.168.1.1,然后离开防火墙到达HTTP服务器。

(2)       HTTP服务器处理完成后,将源地址修改为目标地址,使用自身IP作为源地址发送报文。

(3)       防火墙收到响应报文后将报文的源地址转换为防火墙的出接口地址,然后返回给请求方。整个通信流程完成。

12.3.3SNAT(源网络地址转换)【略,用到再看】

12.3.4MASQUERADE(伪装)

      MASQUERADE是最常用的处理目标,因为大多数情况下,路由器并没有一个固定的IP地址。我们的路由器是通过PPPoE拨号上网或者是通过DHCP自动分配的IP地址。这个处理目标和SNAT处理目标作用是一样的,区别就是它不需要指定源地址。MASQUERADE是专门用于动态获取IP地址的连接,比如拨号上网、DHCP连接等。如果你有固定的IP地址,还是用SNAT处理目标,这样可以节省计算资源。

      注意,MASQUERADE只能用于nat表的POSTROUTING链。例如,局域网来自192.168.6.0网络的报文通过MASQUERADE进行源地址转换:

      #>iptables -t nat -A POSTROUTING -s 192.168.6.0/24 -o eth0 -jMASQUERADE

      12.3.5 LOG 开启内核记录

      12.3.6 REDIRECT 调用用户的自定义链

12.4 报文的处理流程

勾重点了!

iptables5个表,之前都介绍了,而每一个表又有几个不同的链,不同的表中有相同名称的规则链,但这个规则链处理的任务是不同的。报文按照预定的流程来顺序进入到各个规则链中,统一名称规则链根据表的先后顺序进入,依次是rawmanglefilternat

      报文从网络来的,首先进入到PREROUTING链中进行处理,在对目标IP地址进行判断,如果目标IP地址和本机相同就会把报文转发到INPUT链,再转到应用程序。如果报文的IP地址和本机不同,则是转发,进入FORWARD链,再经过POSTROUTING链发出报文。

(1)    首先网卡从网络上收到IP报文。

(2)    报文进入raw表的PREROUTING链。这里能够在连接跟踪生效前对报文进行处理,你可以标记某种类型的报文不被连接跟踪处理。一般很少使用。

(3)    报文进入到连接跟踪处理。这里是收到报文进行连接跟踪处理的处置。

(4)    报文进入到mangle表的PREROUTING链。这里是报文进入网关之后、路由之前修改报文的地方。

(5)    报文进入到nat表的PREROUTING链。在这里我们做目的地址转换(DNAT)。这里不能用于报文过滤,因为每一个连接数据流仅第一个报文进入到这里。

(6)    进行路由决策,因为前面的manglenat表可能修改了报文的IP地址信息。如果目标地址为网关,则直接进入到INPUT链中,如果和本机地址不同,则是进入路由转发,跳转到第九步。

(7)    报文进入到mangle表的INPUT链。这里是报文进入网关时修改报文的地方,在这里做报文过滤是不推荐的,有副作用,通常也很少修改报文。

(8)    报文进入到filter表的INPUT链。这里是对收到报文做过滤的地方,然后将报文转到应用程序。

(9)    对于转发报文进入到mangle表的FORWARD链。这里是对转发报文进行修改的地方。

(10) 报文进入到filter表的FORWORD链,对转发报文进行过滤。这里是唯一适合对转发报文过滤的地方。所有的转发报文均经过这个规则链。

(11) 报文进入到mangle表的POSTROUTING链。这条链可能被两种报文遍历,一种是转发的报文,另外就是本机产生的报文。这个链通常很少使用。

(12) 报文进入到nat表的POSTROUTING链。在这里我们做源地址转化(SNAT)。这里不能用于filter,因为每一个数据流仅有一个报文进入这里。

(13) 最后经过网卡发送报告。

如果应用程序发送报文则在netfilter中是另外的处理流程,报文首先通过OUTPUT链,然后经过POSTROUTING链再发送报文。网络报文在各个表中的规则链中流动,按照rawmanglefilternat表的顺序依次进行匹配。

(1)    首先本地进程产生的报文,并进行路由选择,选择源IP地址及出接口设备。如果没有找到路由将直接返回失败。

(2)    进入rawOUTPUT链。这里是能够在连接跟踪生效前处理报文的地方,你可以标记某种类型的报文不被连接跟踪处理。一般很少使用。

(3)    连接跟踪。这里是本地发出报文进行连接跟踪处理的位置。

(4)    进入到mangle表的OUTPUT链。这里是我们修改报文的地方,在这里做报文过滤是不推荐的,有副作用。

(5)    进入到natOUTPUT链。这里对于本机发送的报文做目的地址转换(DNAT)。不能用于过滤,因为每一个数据流仅有一个报文进入这里。

(6)    进入路由决策。因为前面的manglenat表可能修改了报文的IP地址信息。

(7)    进入到filter表的OUTPUT链。对本激发出的报文做过滤的地方。

(8)    进入到mangle表的POSTROUTING链。这条链可能被两种报文遍历,一种是转发的报文,另外就是本机产生的报文。

(9)    报文进入到nat表的POSTROUTING链。在这里我们做源地址转化(SNAT)。这里不能用于filter,因为每一个数据流仅有一个报文进入这里。

(10) 在网卡接口上发送报文,报文离开主机。

 

 

猜你喜欢

转载自blog.csdn.net/qq_35509823/article/details/76445358