科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道基于Linux系统的包过滤防火墙(7)

基于Linux系统的包过滤防火墙(7)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运。它可能会决定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包,也可能执行其它更复杂的动作。

作者:51CTO.COM 2007年11月9日

关键字: 包过滤 防火墙 iptables Linux

  • 评论
  • 分享微博
  • 分享邮件

  →如果信息包与某条规则匹配,那么内核就对该信息包执行由该项规则的目标指定的操作。

  &如果目标为ACCEPT,则允许该信息包通过,并将该包发给相应的本地进程处理。

  &如果目标为DROP或REJECT,则不允许该信息包通过,并将该包阻塞并杀死。

  →如果信息包与这条规则不匹配,那么它将与链中的下一条规则进行比较。

  →最后,如果信息包与链中的任何规则都不匹配,那么内核将参考该链的策略来决定如何处理该信息包。理想的策略应该告诉内核DROP该信息包。

  1.2.5 Red Hat linux 9中的Netfilter/iptables

  Red Hat linux 9使用2.4版本的内核,并且内核的编译选项中包含对Netfilter的支持,同时iptables软件包是被默认安装的,所以可以直接使用。

  另外,为了完成转发功能,必须打开系统内核的IP转发功能。使Linux变成路由器。

  在Red Hat中有两种方法:

  (1)修改内核变量ip_forward

  #echo “1”>;/proc/sys/net/ipv4/ip_forward

  (2)修改脚本/etc/sysconfig/network。

  将FORWARD_IPV4=false

  改为FORWARD_IPV4=true

  2.1 相关的TCP/IP知识

  2.1.1建立TCP连接(通过3次握手实现)

  假如服务器A和客户机B通信。

  (1)B->;A。当B要和A通信时,B首先向A发一个SYN标记的包,告诉A请求建立连接。只有当A收到B发来的SYN包,才可以建立连接,除此之外别无它法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不能让外部任何主机主动建立连接。

  (2)B<-A。接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作。

  (3)B->;A。B收到SYN/ACK包后,B发一个确认包(ACK),通知A连接已建立。至此,3次握手完成,一个TCP连接完成。

  需要注意的是,当3次握手完成、连接建立以后,TCP连接的每个包都会设置ACK位。这就是为何连接跟踪很重要的原因了,没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接。

  2.1.2 结束TCP连接(通过4次握手实现)

  假如服务器A和客户机B通信。注意,由于TCP连接是双向连接,因此关闭连接需要在两个方向上做。

  (1)B->;A。当B要与A结束通信时,B首先向A发一个FIN标记的包,告诉A请求结束连接。由于连接还没有关闭,FIN包总是打上ACK标记。没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章