1 / 36

Iptables/netfilter

Iptables/netfilter. 什么是 netfilter/iptables Netfiler 与 iptables 的关系 Iptables Netfilter 应用实例. 什么是 netfilter/iptables. Linux 中实现包过滤功能 的第四代应用程序 包过滤:根据一定的规则检查 IP 头的信息,并确定对其的操作(接收,拒绝,缓存。。。). Netfiler 与 iptables 的关系. 机制与策略的关系 netfilter 组件 — 内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。

yeriel
Download Presentation

Iptables/netfilter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Iptables/netfilter

  2. 什么是netfilter/iptables • Netfiler与iptables的关系 • Iptables • Netfilter • 应用实例

  3. 什么是netfilter/iptables • Linux中实现包过滤功能 的第四代应用程序 • 包过滤:根据一定的规则检查IP头的信息,并确定对其的操作(接收,拒绝,缓存。。。)

  4. Netfiler与iptables的关系 • 机制与策略的关系 • netfilter组件—内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。 • iptables组件是一种工具—用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易

  5. 通过使用用户空间,可以构建自己的定制规则(iptables),这些规则存储在内核空间的信息包过滤表中(netfilter)通过使用用户空间,可以构建自己的定制规则(iptables),这些规则存储在内核空间的信息包过滤表中(netfilter)

  6. Iptables-链 • 根据规则所处理的信息包的类型,可以将规则分组在链中

  7. INPUT链:处理入站信息包的规则添加到这里 • OUTPUT链:处理出站信息包的规则 • FORWARD链:处理正在转发的信息包 • PREROUTING/POSTROUTING

  8. 建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。建立规则并将链放在适当的位置之后,就可以开始进行真正的信息包过滤工作了。这时内核空间从用户空间接管工作。

  9. Iptables-规则 • Iptables负责建立规则,并将其添加到内核空间的特定信息包过滤表内的链中

  10. 一个iptables命令基本上包含如下五部分: • 希望工作在哪个表上 • 希望使用该表的哪个链 • 进行的操作(插入,添加,删除,修改) • 对特定规则的目标动作 • 匹配数据报条件

  11. 基本命令格式 • $iptables [-ttable]command[match][target]

  12. Iptables-表(table) • [-ttable]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项:filter、nat和mangle。

  13. filter表用于一般的信息包过滤,它包含INPUT、OUTPUT和FORWARD链filter表用于一般的信息包过滤,它包含INPUT、OUTPUT和FORWARD链 • nat表用于要转发的信息包,它包含PREROUTING、OUTPUT和POSTROUTING链 • 如果信息包及其头内进行了任何更改,则用mangle表该表包含一些规则来标记用于高级路由的信息包,该表包含PREROUTING和OUTPUT链

  14. PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT。PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT。 • POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。 • OUTPUT:定义对本地产生的数据包的目的NAT规则。

  15. Iptables-命令(command) • 告诉iptables命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。

  16. -A 在链尾添加一条规则 -I 插入规则 -D 删除规则 -R 替代一条规则 -L 列出规则

  17. 匹配(match) • iptables命令的可选match部分指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)

  18. --source/--src/-s来指定源地址 --destination/--dst/-s来指定目的地址 --in-interface/-i或--out-interface/-o来指定网络接口 --protocol/-p选项来指定协议

  19. Iptables-目标(target) • 目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作

  20. ACCEPT 接收该数据报 DROP 丢弃该数据报 QUEUE 排队该数据报到用户空间 RETURN 返回到前面调用的链 foobar 用户自定义链

  21. Netfilter在IPv4中的结构 • 1 NF_IP_PRE_ROUTING 2 NF_IP_LOCAL_IN 3 NF_IP_FORWARD 4 NF_IP_POST_ROUTING 5 NF_IP_LOCAL_OUT

  22. 本地数据 [4] [5] data IP校验 [1] Route Route • 1 NF_IP_PRE_ROUTING 2 NF_IP_LOCAL_IN 3 NF_IP_FORWARD 4 NF_IP_POST_ROUTING 5 NF_IP_LOCAL_OUT local 转 发 网络 [3] [4] [2] 上层 协议

  23. 钩子函数的激活 • 内核模块可以对一个或多个这样的钩子函数进行注册挂接,并且在数据报经过这些钩子函数时被调用,从而模块可以修改这些数据报,并向netfilter返回如下值 NF_ACCEPT:继续正常传输数据报 NF_DROP:丢弃该数据报,不再传输 NF_STOLEN:模块接管该数据报,不要继续传输该数据报 NF_QUEUE:对该数据报进行排队 (通常用于将数据报给用户空间的进程进行处理) NF_REPEAT:再次调用该钩子函数

  24. Netfilter-框架 定义一套钩子函数 对钩子进行注册,实现挂接 对数据包在用户空间进行异步处理

  25. 应用实例 -设想场景 • 你叫小明,你的朋友叫小刚,都住在某公寓,网管李大爷为小区的用户提供Internet接入服务,为了方便管理,李大爷分配给园区用户的IP地址都是伪IP,小区用户要求自己的WWW服务器对外发布信息

  26. 李大爷分配给你们家www服务器的ip为:   伪ip:192.168.2.115   真实ip:172.21.134.98 李大爷分配给小刚家www服务器的ip为:   伪ip:192.168.2.116   真实ip:172.21.134.156 李大爷所管理的防火墙的ip地址分别为:   内网接口eth1:192.168.2.1   外网接口eth0:172.21.134.89

  27. 思路 • 我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一 个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包

  28. 关键步骤: 两块网卡的配置: WAN = eth0 有一个外网ip地址 172.21.134.89 LAN = eth1 有一个内网ip地址 192.168.2.1/ 255.255.0.0 配置eth0 IPADDR=172.21.134.89 NETMASK=255.255.255.0 # ISP提供 配置eth1 IPADDR=192.168.2.1 # Gateway of the LAN NETMASK=255.255.0.0 # Specify based on your requirement 要在园区用户的网络设置中设置网关为NAT服 务器(防火墙)的地址:192.168.2.1

  29. 使用IP Tables配置NAT • 首先,对防火墙接收到的目的ip为172.21.134.98和172.21.134.156的所有数据包进行目的NAT(DNAT): $iptables -A PREROUTING -i eth0 -d 172.21.134.98 -j DNAT – to 192.168.2.115 $iptables -A PREROUTING -i eth0 -d 172.21.134.156 –j DNAT –to 192.168.2.116

  30. 其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT): $ iptables -A POSTROUTING -o eth0 -s 192.168.1.115 -j SNAT --to 172.21.134.98 $ iptables -A POSTROUTING -o eth0 -s 192.168.1.116 -j SNAT --to 172.21.134.156

  31. NAT与代理的区别 • 本质:在TCP/IP协议栈中的位置不同。NAT是工作在网络层,而代理是工作在应用层 • NAT对各种应用是透明的,而代理必须在应用程序中指明代理服务器的IP地址

  32. 例如使用NAT技术访问Web网页,不需要在浏览器中进行任何的配置。而如果使用Proxy访问Web网页的时候,就必须在浏览器中指定Proxy的IP地址,如果Proxy只能支持Http协议,那么只能通过代理访问Web服务器,如果想使用FTP就不可以了。例如使用NAT技术访问Web网页,不需要在浏览器中进行任何的配置。而如果使用Proxy访问Web网页的时候,就必须在浏览器中指定Proxy的IP地址,如果Proxy只能支持Http协议,那么只能通过代理访问Web服务器,如果想使用FTP就不可以了。 • 使用NAT技术访问Internet比使用proxy技术具有十分良好的扩充性,不需要针对应用进行考虑。 • 地址转换技术很难提供基于“用户名”和“密码”的验证。在使用proxy的时候,可以使用验证功能,使得只有通过“用户名”和“密码”验证的用户才能访问Internet,而地址转换不能做到这一点。

  33. AODV 中IPTABLES的使用

  34. $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT • ESTABLISHED意思是包是完全有效的,而且属于一个已建立的连接,这个连接的两端都已经有数据发送 • RELATED说明包正在建立一个新的连接,这个连接是和一个已建立的连接相关的

  35. IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT • IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

  36. OVER & 3Q !

More Related