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的资料请关注我们其它相关文章!

时间: 2022-08-10

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防火墙基本匹配条件应用详解

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

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

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

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防火墙string模块扩展匹配规则

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

python中string模块各属性以及函数的用法介绍

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: • python的字符串属性函数 • python的string模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.字符串属性函数  系统版本:CentOS release 6.2 (Final)2.6.32-220.

一键配置CentOS iptables防火墙的Shell脚本分享

手里几台VPS配置iptables太繁琐,看到了朱哥的LNMP脚本里有一个自动配置iptables防火墙的脚本,借来改了一下,给需要的人用: 只提供常用端口的设置,如果你有特殊需求只需自行添加或减少相应的端口即可: 使用方法: 复制代码 代码如下: chmod +x iptables.sh ./iptables.sh 设置iptables开机自动启动: 复制代码 代码如下: chkconfig --level 345 iptables on 完整Shell: 复制代码 代码如下: #!/bin/

阿里云Centos配置iptables防火墙教程

虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptables服务状态 首先检查iptables服务的状态 [root@woxplife ~]# service iptables status iptables: Firewall is not running. 说明iptables服务是有安装的,但是没有启动服务. 如果没有安装的话可以直接yum安装 y

Android 中IntentFilter的匹配规则实例详解

IntentFilter的匹配规则 IntentFilter的使用 假如我们要隐式启动一个Activity我们需要成功匹配activity中的任意一个intent-filter.如果要成功匹配该intent-filter我们需要完全匹配该intent-filter中的 action.category.data. 示例: <activity android:name=".MainActivity"> <intent-filter> <action andro

Android中的Intent Filter匹配规则简介

本文主要介绍了隐式Intent匹配目标组件的规则,若有叙述不清晰或是不准确的地方希望大家指出,谢谢大家:  ) 1. Intent简介 Intent用于在一个组件(Component,如Activity.Service.Broadcast Receiver)中打开另一个组件. Intent可分为隐式(implicitly)和显式(explicitly)两种: Explicitly Intent:在知道要打开哪个具体的Component时使用,通过指定调用者和被调用者即可打开目标Component

js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标

引言 前段时间发了一个编辑器的插件,忙完后自己再次进行了详细的测试,然后心里冒出一句:"这谁写的这么奇葩的插件?完全没什么luan用啊!" 自己做了让自己不满意的事,咋整?男人不怕累,花了时间重写(为世界上所有像我一样勤劳的男人点赞)~ 思维导图 在小生看来,在开发每一个新功能的时候都应该做到心中有一张思维导图:功能实现逻辑和实现功能大致的方法.当然我们不可能在还没动手 前就考虑得面面俱到,但在正式开发之前心里对整个流程有个清晰的印象肯定会让我们在动手时愈加流畅(喝口娃哈哈美滋滋,看图

servlet的url-pattern匹配规则详细描述(小结)

一.概述 在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆.本文来详细举例介绍下.下面的说明都是在tomcat服务器中得到验证的. 先介绍一下匹配的概念,上例子代码.在一个app(如名字为myapp)的web.xml文件中,有如下信息: <servlet> <servlet-name>MyServlet</servlet-name> &l

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

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

详解servlet的url-pattern匹配规则

本文介绍了servlet的url-pattern匹配规则,分享给大家,具体如下: 首先需要明确几容易混淆的规则: 1.servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则.所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern. 2.Servlet 2.5开始,一个servlet可以使用多个url-pattern规则,<servlet-mapping>标签声明了与该servlet相应的匹配规则,每个<url-pattern>

LINUX中IPTABLES防火墙的基本使用教程

前言 对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List). 这里可以使用Linux防火墙netfilter的用户态工具 iptables有4种表:raw–>mangle(修改报文原数据)–>nat(定义地址转换)–>filter(定义允许或者不允许的规则) 每个表可以配置多个链: * 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT * 对于nat来讲一般也只能做在3个链上:PR