【安全】端口复用:远程遥控iptablesSSLH工具

news2024/12/22 22:02:19

目录

基础知识点

链的概念

表的概念

表链关系

远程遥控iptables进行端口复用

Ⅰ、利用ICMP做遥控开关

①创建端口复用链

②创建端口复用规则,将流量转发至 22 端口

③开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到自己创的列表中

④关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 自己创的列表中去掉

⑤设置跳转处理与响应

⑥验证阶段

Ⅱ、利用tcp数据包中的关键字做遥控开关

①创建端口复用链

②添加端口复用规则

③开启开关,输入特定字符开启

④关闭开关,输入特定字符关闭

⑤设置跳转处理与响应

⑥开始验证

利用SSHL工具让https&ssh共享端口

①编辑nginx配置文件

②编辑sslh配置文件

③验证


基础知识点

链的概念

        iptables开启后,数据报文从进入服务器到出来会经过5道关卡,分别为Prerouting(路由前)、Input(输入)、Outpu(输出)、Forward(转发)、Postrouting(路由后):

        每一道关卡中有多个规则,数据报文必须按顺序一个一个匹配这些规则,这些规则串起来就像一条链,所以我们把这些关卡都叫“链”

        【一般写规则的序号都是跳着用,5‘10’15这些,因为匹配按顺序所以对规则进行了留白】

  • INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则;

  • OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则;

  • FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则;

  • PREROUTING链:(互联网进入局域网)在对数据包作路由选择之前,应用此链中的规则,如DNAT;

  • POSTROUTING链:(局域网出互联网)在对数据包作路由选择之后,应用此链中的规则,如SNAT。

表的概念

        虽然每一条链上有多条规则,但有些规则的作用(功能)很相似,多条具有相同功能的规则合在一起就组成了一个“表”,iptables提供了四种“表”:

filter表:主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG),所谓的防火墙其实基本上是指这张表上的过滤规则,对应内核模块iptables_filter;

nat表:(network address translation),网络地址转换功能,主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。属于一个流的包(因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次,余下的包不会再通过这个表。对应内核模块iptables_nat;、

mangle表:拆解报文,做出修改,并重新封装,主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,由于需要相应的路由设备支持,因此应用并不广泛。对应内核模块iptables_mangle;

raw表:是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理,在匹配数据包时,raw表的规则要优先于其他表,对应内核模块iptables_raw。

【 我们最终定义的防火墙规则,都会添加到这四张表中的其中一张表中。】

表链关系

 

 

【注:上图INPUT链中间有个nat表,上上图没有,是因为nat表仅在centos7中才会出现在INPUT链里,其他一切正常】

远程遥控iptables进行端口复用

        攻击端【node1】ip :192.168.174.131

        目标端【manage】ip:192.168.174.128

Ⅰ、利用ICMP做遥控开关

【注:如果目标在内网的话,就无法直接ping】

①创建端口复用链

        iptables -t nat -N xxx //xxx是自己取的链名

 

②创建端口复用规则,将流量转发至 22 端口

        iptables -t nat -A xxx -p tcp -j REDIRECT --to-port 22

③开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到自己创的列表中

        iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name qiu --rsource -j ACCEPT

④关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 自己创的列表中去掉

        iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name qiu --remove -j ACCEPT

        长度设为1139的话实际ping应该为1111,报文头部有20个字节,由于icmp是双层,他是32位所以32*2 /8 = 8 所以应该ping1139-28

⑤设置跳转处理与响应

        iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name qiu --rsource -j xxx

⑥验证阶段

 

        (能看到策略都添加上了)

        【进入node1(192.168.174.131)对目标开启复用,并验证ssh对80端口能否转发成功】

        

         

 

        【验证成功,下面是关闭复用后的情景】

        

 

Ⅱ、利用tcp数据包中的关键字做遥控开关

①创建端口复用链

        iptables -t nat -N nnn

②添加端口复用规则

        iptables -t nat -A nnn -p tcp -j REDIRECT --to-port 22

③开启开关,输入特定字符开启

        iptables -A INPUT -p tcp -m string --string 'open' --algo bm -m recent --set --name qiuqiu --rsource -j ACCEPT

④关闭开关,输入特定字符关闭

        iptables -A INPUT -p tcp -m string --string 'shut' --algo bm -m recent --name qiuqiu --remove -j ACCEPT

⑤设置跳转处理与响应

        iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name qiuqiu --rsource -j nnn

⑥开始验证

        

 

利用SSHL工具让https&ssh共享端口

        准备工作:安装SSLH 与 配置nginx或apache服务器

①编辑nginx配置文件

        

 

②编辑sslh配置文件

        

 

        (host那个地方改成0.0.0.0以允许 SSLH 在所有可用接口上侦听端口 443)

        (之后启动sslh服务)

③验证

 

        【通过443端口ssh连接成功】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Oracle VM VirtualBox安装Centos

1.下载安装Oracle VM VirtualBox 2.下载Centos 下载地址 旧版本 3.新建 选择镜像填写账户信息之后,我这边不知道什么原因,并不能完成所有工作,所以我一般不选择 4.选择镜像 5.安装 通过方向键和回车键选择 6.设置 选择中文 等待一些自动…

2023年“华数杯”国际大学生数学建模B题完整思路

2023华数杯如期开赛,本次比赛作为美赛的模拟赛,赛题和比赛时间都和美赛高度相似,因此大家 完全可以当作一次美赛之前的练习赛进行。美赛的发题时间与华数杯一致,都是早晨六点,现已经将机器翻译的初步翻译 结果进行了分…

c语言通讯录max——数据的持久化处理(详解)

用文件操作升级通讯录前言1.实现逻辑2.用哪种文件存储数据2. save_contact函数设计3. load_contact 函数设计5.代码总览contact.hcontact.ctext.c前言 在有关通讯录的上一篇博客中,作者用柔性数组实现了动态改变通讯录占用空间的功能,但是在最后还是留下…

【Go基础】Http编程

文章目录1. http协议1.1 请求方法1.2 URL1.3 协议版本1.4 请求头1.5 请求正文1.6 http response1.7 https2. go语言http标准库3. http router4. 请求校验5. http中间件6. GIN6.1 路由6.2 参数获取6.3 利用postman提交http请求6.4 生成response6.5 参数检验6.6 中间件6.7 会话7.…

互联网分层模型

互联网的逻辑实现被分为好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的只是最上面的那一层,根本不会感觉到下面的几层。要理解互联网就需要自下而上理解每一层的实现的功能。如上图所示,互联网…

55.Isaac教程--Livox 激光雷达

Livox 激光雷达 ISAAC教程合集地址文章目录Livox 激光雷达支持的硬件和固件在桌面上设置和运行示例应用程序在机器人上设置和运行示例应用程序查看正在运行的应用程序将来Livox 激光雷达 Isaac SDK 支持使用 Livox LIDAR,包括兼容的驱动程序和示例应用程序。 支持的…

Android马甲包的那些事儿

制作Android马甲包最简单的方式就是使用 productFlavors 机制。本文就是在productFlavors机制的基础上制作的马甲包,每个马甲只需要在build.gradle文件中配置一下包名、各种key、签名文件配置启动页、logo、app名等资源配置服务器域名、微信分享回调Activity等代码此…

Windows上tensorflow的GPU死活引用不了(tensorflow 2.11无法调用GPU)

tensorflow对于gpu的支持只到2.10,如果你装了最新的tf(2.11),需要先卸载2.11。 安装代码: pip install tensorflow2.10 -i https://pypi.tuna.tsinghua.edu.cn/simple/解决过程: 查看CUDA与cuDNN配套版本: https:/…

解决ModuleNotFoundError: No module named ‘pygame‘问题

一、问题描述在开发环境运行Python的源码游戏时,游戏不能正常运行,且提示(ModuleNotFoundError: No module named pygame【没有发现模块错误:没有发现名为pygame的模块】)如下图所示:二、问题分析通过查看提…

OpenCV实战——基于均值漂移算法检测图像内容

OpenCV实战——基于均值漂移算法检测图像内容0. 前言1. 均值漂移算法2. 检测图像内容3. 完整代码相关链接0. 前言 直方图反投影的结果是一个概率图,表示在特定图像位置找到给定图像内容的概率。假设我们现在知道一个物体在图像中的大概位置;概率图可用于…

在 Navicat Monitor for MySQL/MariaDB 中配置实例

Navicat Monitor for MySQL/MariaDB 是一个无代理的远程服务器监控工具,它包含的功能可以使监控数据库(DB)实例发挥最大效用和更轻松。此外,基于服务器的架构使其可以通过网页浏览器从任何地方访问,从而为你提供无障碍…

DaVinci 项目设置:图像缩放调整

项目设置/图像缩放调整Project Settings/Image Scaling图像缩放调整 Image Scaling选项卡可用于设置片段在输入、输出时的缩放及相应的插值算法。图像缩放调整Image Scaling主要用于选择缩放处理的插值方法,也可用于载入输入、输出缩放调整的预设。缩放过滤器Resize…

特别提醒|2023年考PMP需关注的5大问题

目前知道的是2023年考试时间为3月、5月、8月、11月,但是3月不给新报名,需要报名的话,就是报5月的考试了。当然有的伙伴会有一些小问题,这里给大家整理了一些基本的问题给大家回答一下,大家如果还有其他的问题可以评论提…

[Flink] 容错机制与状态一致性机制

文章目录1.状态一致性1.1 状态一致性分类2.一致性检查点 checkpoint3.端到端(end-to-end)状态一致性4. 端到端的精确一次(exactly-once)保证4.1 幂等写入4.2 事务写入5.FlinkKafka 端到端状态一致性的保证5.1 Exactly-once 两阶段…

常见智力题汇总(建议收藏)

🚀write in front🚀 📜所属专栏: 智力题 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我最…

Web 前端开发技术 —— JavaScript

Web 前端开发技术 —— JavaScript 总结 JavaScript 内容! 文章目录Web 前端开发技术 —— JavaScript一、js 的引用方式与执行顺序1、引用方式在标签中直接写 js 代码复用 js 代码通过 import 方式2、执行顺序3、html、css、js 三者之间的关系二、变量与运算符变量…

C++之函数重载

文章目录前言一、函数重载二、如何支持函数重载(C支持函数重载的原理--名字修饰(name Mangling))三、参数有什么区别才能构成函数重载1.参数个数不同2.参数类型不同3.参数顺序不同四、返回值类型不同是否可以构成函数重载总结前言 我们知道在使用C语言进…

jmh的一些作用

目录说明说明 jmh可以用来java基准测试,性能测试用这个测比较标准,可以设置预热、迭代次数,对某块代码精准测试,耗时时间单位有毫秒、纳秒等。 就先说到这\color{#008B8B}{ 就先说到这}就先说到这 在下Apollo\color{#008B8B}{在下…

AcWing 323. 战略游戏(树形DP + 状态机DP)

AcWing 323. 战略游戏(树形DP 状态机DP)一、问题二、分析1、思路分析2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、分析 1、思路分析 这道题最后问的其实就是,在一棵树中,每个边至少选择一个端点的条件下…

【FLASH存储器系列十五】NAND Flash究竟能不能随机读写到某个字节的数据?

网上有很多文章写道,nand flash的读写操作是以page为单位,还有文章说些nand flash时必须按page0、page1、page2…的顺序写,必须先写完前面的page才能写后面的page。难道nandflash就不能随机读到某个字节吗?只能一次性读一页&#…