• 6.iptables的匹配条件(三)


    --tcp-flags模块

    --tcp-flags选项指的是tcp头部的标识位,可以通过此扩展匹配条件,去匹配tcp报文的头部的标识位,然后根据标识位的实际情况实现访问控制的功能。

    在TCP协议建立连接的过程中,需要先进行三次握手,而三次握手就要依靠TCP头中的标识位进行。

    如果想要匹配“第一次握手”的报文,可以使用如下命令:

    --tcp-flags用于匹配报文tcp头部的标志位;第一部分为“SYN,ACK,FIN,RST,URG,PSH”,第二部分为“SYN”。
    第一部分表示:需要匹配报文tcp头部中的哪些标志位,也就是要匹配的标志位列表;
    第二部分表示:第一部分的标志位列表中,哪些标志位必须为1。

    匹配TCP头中第二次握手:

    TCP扩展模块中的--syn选项可以匹配“第一次握手”,也就是说可以替代“--tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN”。

    UDP和ICMP扩展模块

    1.UDP扩展

    --sport:匹配报文中的源端口
    --dport:匹配报文中的目的端口
    例如,放行Samba服务的UDP 137,138这两个端口

    表示137:138两个udp端口对外开放,连续的端口范围使用冒号隔开;

    和TCP同样支持使用“multiport”模块指定多个离散的、不连续的端口,每个端口之间用逗号隔开。

    2.ICMP扩展

    ICMP协议的全称为Internet Control Message Protocol互联网控制报文协议,主要用于探测网络上的主机是否可用,目标是否可达等。

    经常使用的ping命令,如果主机可达,对应主机会向我们的ping请求做出回应,也就是说,我们发出ping请求,对方回应ping请求,虽然ping请求报文与ping回应报文都属于ICMP类型的报文,但在概念上细分的话,它们所属的类型是不同的,我们发出的ping请求属于类型8的ICMP报文,而对方的ping回应报文则属于类型0的ICMP报文。

    如果想要禁止所有的icmp类型的报文进入本机,可以这样设置:
    iptables -t filter -I INPUT -p icmp -j REJECT
    上述只是使用了“-p icmp”匹配了所有icmp协议类型的报文;所以我们既无法ping通别人,别人也无法ping通我们。

    假设,此时我们需要ping通别人,但是不想让别人ping通我们,可以进行如下设置:

    使用“--icmp-type 8/0”选项表示ICMP报文的type为8,code为0时才会被匹配到,也就是只有ping请求类型的报文才能被匹配到,所以,别人对我们发起的ping请求将会被拒绝通过防火墙,而我们之所以能够ping通别人,是因为别人回应我们的报文ICMP的TYPE为0,code也为0.

    除了能够使用对应TYPECode匹配到具体类型的ICMP报文外,还能用ICMP报文的描述名去匹配对应类型的报文。

    state模块

    从字面上理解,state译为状态,state模块可以让iptables实现“连接追踪”机制。
    对于state模块而言,只要两台机器在相互的通信,就算建立起了连接

    state模块的连接分为5种状态:
    1.NEW:连接中的第一个包
    2.ESTABLISHED:表示连接已建立
    3.RELATED:关系;数据连接中的报文与命令连接是有关系的
    4.INVALID:如果一个包没有办法被识别,或者这个包没有任何状态
    5.UNTRACKED:报文的状态为untracked时,表示报文未被追踪,当报文的状态为untracked时通常表示无法找到相关的连接。

    问题是:怎样判断报文是否是为了回应我们之前发出的报文,还是主动向我们发送的报文呢?

    可以放行状态为ESTABLISHED的报文即可,因为如果报文的状态为ESTABLISHED,那么报文肯定是之前发出的报文的回应,还可以将状态为INVALID或ESTABLISHED的报文都放行,这样,就表示只有回应我们的报文能够通过防火墙,而别人主动发来的新报文,则无法通过防火墙。

    示例:

    当前主机的IP地址为10.10.10.15,当放行RELATED和ESTABLISHED状态的包后,并不影响本地远程ssh到16主机,但是无法从16主机使用ssh连接到本机。

    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    B 合约数
    Weekly Contest 80
    第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
    2018年长沙理工大学第十三届程序设计竞赛
    通过 DDNS 解决宽带拨号 ip 变化问题
    frp 内网穿透的使用 和原理
    笔记本centos 取消 关闭盖子自动挂起
    centos7 pptp 安装
    linux 命令收集
    centos7 关闭防护墙
  • 原文地址:https://www.cnblogs.com/ccku/p/13693005.html
Copyright © 2020-2023  润新知