ubuntu系统关闭防火墙命令 ubuntu防火墙设置

简单说,firewalld是新的防火墙管理工具,iptables是过去的管理工具,两者都是linux提供给用户的操作界面,真正的执行者是netfilter.

ubuntu系统关闭防火墙命令 ubuntu防火墙设置


netfilter【ubuntu系统关闭防火墙命令 ubuntu防火墙设置】Linux 2.4开启的防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(Network Address Translation,NAT),以及基于用户及媒体访问控制(Media Access Control,MAC)地址的过滤和基于状态的过滤、包速率限制等 。iptables/Netfilter的这些规则可以通过灵活组合,形成非常多的功能、涵盖各个方面,这一切都得益于它的优秀设计思想 。
netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:
  • 网络地址转换(NAT)
  • 数据包内容修改(mangle)
  • 以及数据包过滤的防火墙功能(filter)
  • 连接跟踪模块(conntrack)
netfilter在Linux系统中的5个钓鱼台(或是说5个钩子):netfilter为多种网络协议(IPv4、IPv6、ARP等)各提供了一套钩子函数(HOOK) 。
在IPv4中定义了5个钩子函数(如上图所示),这些钩子函数在数据包流经协议栈的5个关键点被调用 。这就像有5个钓鱼台,在每个钓鱼台放了一个鱼钩(HOOK),把经过的数据包钓上来,然后根据自定义的规则,来决定数据包的命运:
可以原封不动的放回IPv4协议,继续向上层递交;可以进行修改,再放回IPv4协议;也可以直接丢弃 。
netfilter主要采用连接跟踪(Connection Tracking)、包过滤(Packet Filtering)、地址转换(NAT)、包处理(Packet Mangling)四种技术 。

ubuntu系统关闭防火墙命令 ubuntu防火墙设置


NF_IP_PRE_ROUTING数据报在进入路由代码被处理之前,数据报在IP数据报接收函数ip_rcv()(位于net/ipv4/ip_input.c,Line379)的最后,也就是在传入的数据报被处理之前经过这个HOOK 。在ip_rcv()中挂接这个HOOK之前,进行的是一些与类型、长度、版本有关的检查 。经过这个HOOK处理之后,数据报进入ip_rcv_finish()(位于net/ipv4/ip_input.c,Line306),进行查路由表的工作,并判断该数据报是发给本地机器还是进行转发 。在这个HOOK上主要是对数据报作报头检测处理,以捕获异常情况 。
  • 涉及功能(优先级顺序):conntrack、mangle、DNAT
NF_IP_LOCAL_IN目的地为本地主机的数据报在IP数据报本地投递函数ip_local_deliver()(位于net/ipv4/ip_input.c,Line290)的最后经过这个HOOK 。经过这个HOOK处理之后,数据报进入ip_local_deliver_finish()(位于net/ipv4/ip_input.c,Line219) 。这样,iptables模块就可以利用这个HOOK对应的INPUT规则链表来对数据报进行规则匹配的筛选了 。防火墙一般建立在这个HOOK上 。
  • 涉及功能:mangle、filter、SNAT、conntrack
NF_IP_FORWARD目的地非本地主机的数据报,包括被NAT修改过地址的数据报,都要在IP数据报转发函数ip_forward()(位于net/ipv4/ip_forward.c,Line73)的最后经过这个HOOK 。经过这个HOOK处理之后,数据报进入ip_forward_finish()(位于net/ipv4/ip_forward.c,Line44) 。另外,在net/ipv4/ipmr.c中的ipmr_queue_xmit()函数(Line1119)最后也会经过这个HOOK 。(ipmr为多播相关,估计是在需要通过路由转发多播数据时的处理) 。这样,IPTables模块就可以利用这个HOOK对应的FORWARD规则链表来对数据报进行规则匹配的筛选了 。
  • 涉及功能:mangle、filter
NF_IP_LOCAL_OUT本地主机发出的数据报在IP数据报构建/发送函数ip_queue_xmit()(位于net/ipv4/ip_output.c,Line339)、以及ip_build_and_send_pkt()(位于net/ipv4/ip_output.c,Line122)的最后经过这个HOOK 。(在数据报处理中,前者最为常用,后者用于那些不传输有效数据的SYN/ACK包) 。经过这个HOOK处理后,数据报进入ip_queue_xmit2()(位于net/ipv4/ip_output.c,Line281) 。另外,在ip_build_xmit_slow()(位于net/ipv4/ip_output.c,Line429)和ip_build_xmit()(位于net/ipv4/ip_output.c,Line638)中用于进行错误检测;在igmp_send_report()(位于net/ipv4/igmp.c,Line195)的最后也经过了这个HOOK,进行多播时相关的处理 。这样,iptables模块就可以利用这个HOOK对应的OUTPUT规则链表来对数据报进行规则匹配的筛选了 。

推荐阅读