Iptables防火墙tcp-flags模块扩展匹配规则详解

目录
  • Iptables防火墙tcp-flags模块扩展匹配规则
    • **案例:**
      • 1)编写具体的防火墙规则
      • 2)查看设置的防火墙规则
      • 3)查看效果

Iptables防火墙tcp-flags模块扩展匹配规则

tcp-flags模块的作用是判断TCP协议数据报文标志位的返回值的,在TCP的三次握手中,第一次握手客户端向服务器发送syn=1的数据报文,第二次握手服务端向客户端发送sync和ack=1的报文,第三次握手客户端向服务端发送ack=1的报文。

tcp-flags模块就是来判断发送报文中指定的标志位是否等于1,并且该条报文中只包含指定的标志位,否则就拒绝通行,例如我们指定的标志位是SYN,那么该条报文中就只能包含SYNC,如果再包含ACK,那么就不放行,并且标志位的值要为1。

**案例:**

只允许其他客户端发送TCP请求报文到本机,本机响应可以,但是本机不可向其他主机发送TCP请求报文。

  • 首先来分析,"只允许其他客户端发送TCP请求到本机",根据这句话可以明确是在INPUT链添加相应的规则,客户端发起请求一共需要发送2次TCP握手,分别是第一次握手和第三次握手,通过tcp-flags模块确保客户端发送的报文中标志位都是正确的,需要在INPUT链添加3条规则,第一条规则是匹配客户端发送的报文中是否只包含syn标志位,并且值是否等于1,第二条规则是匹配客户端发送的报文中是否只包含ack,并且值是否等于1,如果这两条规则都满足,那么就说明是客户端向服务端发送的请求,最终的动作是允许,第三条规则是拒绝其他标志位的TCP连接请求。
  • 然后来分析"本机只可以响应客户端发起的TCP请求,但是本机不可以向其他客户端发送请求",根据这句话可以明确出规则是要添加在OUTPUT链的,我们只需要在OUTPUT链添加上第二次握手所包含的TCP标志位的规则,完成响应客户端的TCP连接请求,最后在添加一条规则,禁止其他的TCP标志位从OUTPUT链发出,也就可以拒绝本机向其他的客户端发起TCP请求。

tcp-flags模块使用的命令格式:--tcp-flags {标志位集合} {要判断哪个标志位等于1}

1)编写具体的防火墙规则

1.添加允许客户端向本机发起TCP请求的规则
#syn=1的标志位规则
[root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST SYN -j ACCEPT
#ack=1的标志位规则
[root@jxl-1 ~]# iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT
#其余的报文都拒绝
[root@jxl-1 ~]# iptables -t filter -A INPUT -j DROP
2.添加本机响应客户端TCP连接请求以及拒绝发起TCP请求的规则
#syn和ack都等于1
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST SYN,ACK -j ACCEPT
#ack-1
[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p tcp --sport 22 -m tcp --tcp-flags SYN,ACK,FIN,RST ACK -j ACCEPT
#其余的报文全部拒绝
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -j DROP

2)查看设置的防火墙规则

[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       82  6416 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22 flags:0x17/0x10
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22 flags:0x17/0x02
3     5169 1958K DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       41  4348 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:22 tcp flags:0x17/0x10
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp spt:22 tcp flags:0x17/0x12
3      293 65316 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

3)查看效果

本机无法发起TCP连接请求。

其他主机可以向本机发起TCP连接。

以上就是Iptables防火墙tcp-flags模块扩展匹配规则详解的详细内容,更多关于Iptables防火墙tcp-flags的资料请关注我们其它相关文章!

(0)

相关推荐

  • Iptables防火墙四表五链概念及使用技巧详解

    目录 1.链的概念 2.Iptables五种链的概念 3.Iptables数据流向经过的表 4.Iptables防火墙四种表的概念 5.Iptables防火墙表与链之间的优先级概念 6.Iptables防火墙表和链之间的使用技巧 **问题1:** **问题2:** 结论: 7.Iptables防火墙几种动作 1.链的概念 在防火墙中,用户想要成功进入内网环境,就需要发送请求报文,请求报文要和防火墙设置的各种规则进行匹配和判断,最后执行相应的动作(放行或者拒绝),一个防火墙中通常针对不同的来源设置

  • Iptables防火墙string模块扩展匹配规则

    Iptables防火墙string模块扩展匹配规则 String模块的作用是来匹配请求报文中指定的字符串,经常应用于拦截用户访问某些网站的场景,将防火墙当做路由器使用,例如上班时间不允许用户访问淘宝网站等等场景. String模块的常用参数: --string pattern:指定要匹配的字符串. ! --string pattern:反向匹配. --algo:指定匹配的查询算法,有bm和kmp两种算法. 可以在参数前面加!号表示去反. 案例:当用户请求的数据报文中包含taobao.com,则拒

  • Iptables防火墙自定义链表实现方式

    目录 1.为什么要自定义链 2.自定义链的基本应用 3.删除自定义的链 1.为什么要自定义链 为什么需要自定义链呢?默认的四表五链不满足基本使用吗?其实并不是,四表五链完全满足使用,但是当我们同一类程序有很多个防火墙规则时,例如都写在INPUT链中,那么当我们要对其中的一条规则进行调整了,就会发现上下有关联性,修改起来不是那么容器,因为这个INPUT链中还有其他的服务规则. 基于这种情况,我们就可以去自定义一张新的链,在这个链中,只定义这一类程序的防火墙规则. 自定义链的规则优先级: 请求首先到

  • Iptables防火墙limit模块扩展匹配规则详解

    目录 Iptables防火墙limit模块扩展匹配规则 @[TOC] 1.限制每分钟接收10个ICMP数据报文 2.允许10个数据报文快速通过,然后限制每分钟接收1个个ICMP数据报文 3.限速案例,限制网络传输的带宽不可以超过500k/s Iptables防火墙limit模块扩展匹配规则 @[TOC] limit模块的作用是针对报文的速率进行限制,限制的单位有秒.分钟.小时.天等,例如一分钟内只接收10个请求报文,多余的报文则会被丢弃. limit模块的常用参数: --limit rate[/

  • Iptables防火墙connlimit与time模块扩展匹配规则

    目录 Iptables防火墙connlimit模块扩展匹配规则 connlimit模块常用参数: Iptables防火墙time模块扩展匹配规则 time模块的常用参数: Iptables防火墙connlimit模块扩展匹配规则 connlimit模块的作用是限制请求报文对特定服务的并发连接数限制的,例如Telnet服务,默认情况下没有并发连接数的限制,可以允许n个客户端同时连接,如果应用了connlimit模块,可以对并发连接数进行限制. connlimit模块常用参数: --connlimi

  • Iptables防火墙iprange模块扩展匹配规则详解

    目录 Iptables防火墙iprange模块扩展匹配规则 案例: 1)编写防火墙规则 2)查看添加的规则 3)测试效果 Iptables防火墙iprange模块扩展匹配规则 iprange模块可以同时设置多个IP或者设置IP的某一段连续的范围,通过iprange模块可以对多个来源地址同时设置策略. iprange模块的参数: --src-range:指定源地址范围. --dst-range:指定目标地址范围. ! --src-range:非指定的源地址. ! --dst-range:非指定的目

  • Iptables防火墙基本匹配条件应用详解

    目录 引言 基本匹配条件案例一 **需求:** 1)实现该需求的防火墙规则如下 2)查看设置的防火墙规则 3)测试结果 基本匹配条件案例二 1)实现该需求的防火墙规则如下 2)查看设置的防火墙规则 3)测试结果 基本匹配条件案例三 1)实现该需求的防火墙规则如下 2)查看设置的防火墙规则 3)测试结果 引言 @[TOC] 应用匹配条件时,经常会用到以下几个参数. -p:指定要操作的协议类型,不指定-p参数声明是那种协议,默认是all,也就是所有协议. -s:指定源地址. -d:指定目标地址. -

  • Iptables防火墙tcp-flags模块扩展匹配规则详解

    目录 Iptables防火墙tcp-flags模块扩展匹配规则 **案例:** 1)编写具体的防火墙规则 2)查看设置的防火墙规则 3)查看效果 Iptables防火墙tcp-flags模块扩展匹配规则 tcp-flags模块的作用是判断TCP协议数据报文标志位的返回值的,在TCP的三次握手中,第一次握手客户端向服务器发送syn=1的数据报文,第二次握手服务端向客户端发送sync和ack=1的报文,第三次握手客户端向服务端发送ack=1的报文. tcp-flags模块就是来判断发送报文中指定的标

  • 正则表达式中两个反斜杠的匹配规则详解

    关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是none. 为了验证这个问题,我做了如下的实验: 那为什么一个会出现这样的结果呢,在正则表达式中,需要查找的字符串,会进行两次转义,先是传入的字符串进行第一层转换,例如:\\t --> \t .然后传到re解析器里进行第二层转换,\t -->tab键.而需要匹配的字符串\\\t -->两个反斜

  • Nginx Location指令URI匹配规则详解小结

    1.介绍 location指令是http模块当中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器.非法的请求直接拒绝并返回403.404.500错误处理等. 2.location指令语法 location [=|~|~*|^~|@] /uri/ { - } 或 location @name { - } 3.URI匹配模式 location指令分为两种匹配模式: 1> 普通字符串匹配:以=开头或开头无引导字符(-)的规则 2> 正则匹配:以

  • seajs中模块的解析规则详解和模块使用总结

    seajs github 模块标识已经说的相对清楚了.但并没有面面俱到,特别是当你需要手写 [模块ID]和[模块依赖]的时候,或者自己写自动化工具来做 transport 的时候(ps:spm貌似适应性不是很强也不易用,毕竟每个项目的目录结构可能相差很大,且不易改变.当然如果他的定位是包管理工具就别指望它来做你的项目的自动化构建工具了),ID的解析规则就需要了解透彻了.注意事项:1. 顶级标识始终相对 base 基础路径解析.2. 绝对路径和根路径始终相对当前页面解析.3. require 和

  • Nginx服务器的location指令匹配规则详解

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令.Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的"/uri/",可以是字符串或正则表达式.但如果要使用正则表达式,则必须指定前缀. nginx location语法 基本语法:location [=|~|~*|^~] /uri/ { - } = 严格匹配.如果这个查询匹配,那么将停止搜索并立即处理此请求. ~ 为区分大小写匹配(可用正则表达式) ~* 为不区分大小写

  • Python 常用模块 re 使用方法详解

    一.re模块的查找方法: 1.findall   匹配所有每一项都是列表中的一个元素 import re ret = re.findall('\d+','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # ret = re.findall('\d','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # print(ret) 2.search 只匹配从左到右的第一个,等到的不是直接的结果,而是一个变量,通过这个变量的group方法来获取结果 impo

随机推荐