[5] 一篇文章教会你如何实现端口敲门

文章目录

  • 1. 描述
  • 2. 基本原理
  • 3. 优点
  • 4. 缺点
  • 5. 实现过程
  • 6. firewall-cmd命令介绍
  • 7. 写到最后

1. 描述

端口敲门技术(Prot Knocking)技术,用于通过一系列预定的端口来动态地打开防火墙或访问特定服务甚至执行一小段任务,用于增强系统地安全性,防止未授权访问。

2. 基本原理

  1. 隐藏服务: 通过关闭服务的默认端口(如 SSH 的 22 端口),并通过敲门技术来隐藏服务,使其不易被发现。
  2. 敲门序列: 用户需要按照特定的顺序向服务器发送连接请求(“敲门”),每个请求对应一个特定的端口。只有在成功发送了正确的敲门序列后,服务器才会打开目标服务的端口。
  3. 防火墙规则:防火墙通过监控端口访问请求来识别敲门序列,一旦检测到正确的序列,防火墙规则会暂时修改,允许来自该用户的连接请求访问特定端口。

3. 优点

  • 安全性: 通过隐藏服务和动态打开端口,增加了未授权访问的难度。
  • 灵活性: 可以根据需要设置敲门序列,提高安全策略的灵活性

4. 缺点

  • 如果攻击者能够监控网络流量,可能会捕捉到敲门序列,从而伪装成合法用户。
  • 每次访问都需要经过敲门过程,可能会导致连接延迟

5. 实现过程

#安全knock服务
yum install -y knock-server
# 检验是否启动成功
systemctl status knockd

安装成功执行systemctl status knockd应该显示这个内容。

image.png

# 设置开启自启动
systemctl enable knockd
# 启动
systemctl start knockd

接下来开始编辑/etc/knockd.conf配置文件,下面这个是默认的配置文件内容

[options]UseSyslog[opencloseSSH]sequence      = 2222:udp,3333:tcp,4444:udpseq_timeout   = 15tcpflags      = syn,ackstart_command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport ssh -j ACCEPTcmd_timeout   = 10stop_command  = /sbin/iptables -D INPUT -s %IP% -p tcp --dport ssh -j ACCEPT

介绍一下默认配置:

  • UseSyslog: 启用系统日志功能,用于记录端口敲门时间和相关信息。
  • sequence: sequence = 2222:udp,3333:tcp,4444:udp, 这是敲门序列,定义客户端需要发送请求的端口和协议顺序,只有成功才会开放对应端口。
    • 第一个请求必须发送到UDP的2222端口
    • 第二个请求必须发送到 TCP 的 3333 端口。
    • 第三个请求必须发送到 UDP 的 4444 端口。
  • seq_timeout: 定义敲门序列的超时时间, 指定在什么时间内完成敲门序列的发送。
  • tcpflags:指示哪些 TCP 数据包将被视为有效的敲门请求。
  • start_command: 客户端发送完成的敲门序列之后执行的命令
  • cmd_timeout: start_command和stop_command执行的超时时间
  • stop_command:这个命令会在一定时间后(通常是为防止未授权访问)执行,以防止之前开放的访问权限.

下面这个是修改之后的敲门服务配置,配置了敲门关闭ssh服务端口的序列和开启ssh服务端口的配置。

[options]#UseSyslogLogFile = /var/log/knockd.log # 日志文件位置interface= eth0 # 网络接口[openSSH]sequence      = 9999,10012,10015seq_timeout   = 30tcpflags      = syn start_command = firewall-cmd --add-service=ssh --permanent;/usr/bin/firewall-cmd --reloadcmd_timeout   = 10stop_command  = firewall-cmd --remove-service=ssh --permanent; /usr/bin/firewall-cmd --reload
[closeSSH]sequence      = 10015:tcp,10012:tcp,9999:tcpseq_timeout   = 30tcpflags      = syn start_command =  firewall-cmd --remove-service=ssh --permanent; /usr/bin/firewall-cmd --reloadcmd_timeout   = 10

你可以查看通过ip -a查看你电脑和外界通信的ip地址来进行设置文件中的interface的值。

如果你使用的是云服务器的话,别忘记在对应的云控制台,开放你指定端口序列中包含的端口哦,不然就会失败。如下图

image.png

下面这是按照的我配置进行的演示,实际过程中请使用你自己的设置和序列和ip以及端口。在测试过程中,你可以查看你设置的对应日志文件,查看过程。

# 关闭ssh端口 -c 指定次数 -p指定端口
sudo hping3 -S -p 10015 -c 1 ip; ; sudo hping3 -S -p 10012 -c 1 ip ;sudo hping3 -S -p 9999 -c 1 ip
# 开启ssh端口
sudo hping3 -S -p 9999 -c 1 ip ; sudo hping3 -S -p 10012 -c 1 ip ; sudo hping3 -S -p 10015 -c 1 ip

使用hping3 -S 代表只发送SYN包给目的主机对应端口。

6. firewall-cmd命令介绍

firewall-cmd 是用于管理 Linux 防火墙(Firewalld)的命令行工具。Firewalld 是一种动态防火墙管理工具,允许用户在运行时修改防火墙规则,而无需重启服务。firewall-cmd 提供了一种简洁的方式来添加、删除和管理防火墙规则

# 启动 
sudo systemctl start firewalld
# 关闭
sudo systemctl stop firewalld# 查看状态
firewall-cmd --state
# 列出当前规则
firewall-cmd --list-all
#添加服务 --permanent 代表永久
sudo firewall-cmd --add-service=ssh --permanent
# 移除服务 --permanent 代表永久
sudo firewall-cmd --remove-service=ssh --permanent
## 重新加载配置,更新完规则之后调用
sudo firewall-cmd --reload# 临时添加端口 只在当前会话中生效
sudo firewall-cmd --add-port=2222/tcp --permanent
# 添加端口
sudo firewall-cmd --add-port=2222/tcp --permanent
# 移除端口
sudo firewall-cmd --remove-port=2222/tcp --permanent

注意事项:

  • 使用 --permanent 参数使更改持久化,即在重启后依然有效。
  • 没有 --permanent 的更改是临时的,只在当前会话中有效。
  • 使用 firewall-cmd 需要相应的权限,通常需要使用 sudo

7. 写到最后

本文主要演示的主要使用端口敲门进行ssh端口的掩藏和开放,其实在start_command你可以设置为任何可用命令,比如设置其它端口80,隐藏和开放,执行每个任务等等。有无限多个利用方式,等你去进行探索。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorRT-LLM的k8s弹性伸缩部署方案

Scaling LLMs with NVIDIA Triton and NVIDIA TensorRT-LLM Using Kubernetes | NVIDIA Technical Blog 一共涉及4个k8s组件: 1. Deployment:跑起来N个pod;指定NVIDIA官方的triton&trt-llm的docker image,指定好model放在哪个…

Chainlit集成LlamaIndex实现知识库高级检索(HyDE查询重写转换)

检索原理 HyDEQueryTransform 是一种用于信息检索系统中的查询转换技术,它基于假设文档嵌入(Hypothetical Document Embeddings,简称HyDE)的概念,旨在通过生成假设文档来改善查询与文档之间的语义对齐,进而…

使用Markdown编写适用于GitHub的README.md文件的目录结构

文章目录 [toc] 顶部1. 使用[TOC]自动生成2. VSCode中的插件3. 手搓目录目录相关资料本文相关代码一、概述1.1 基本概念1.2 两种处理模型(1)微批处理(2)持续处理 1.3 Structured Streaming和Spark SQL、Spark Streaming关系 二、编…

[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

攻克数字工具(GKData)在推动 AI 发展中的关键作用

摘要:本文深入探讨了攻克数字工具(GKData)对人工智能(AI)发展的重要推动作用,同时阐述了人工智能技术的发展历程、现状、应用领域和前景。分析了 GKData 在数据处理、模型训练与优化、算法创新等方面为 AI …

Golang文件操作

1.文件介绍:文件是数据源,主要作用是保存数据 2.文件在程序中是以流的形式来操作的 对文件的操作主要用File(os包)结构体来实现 文件的基本操作 1)打开一个文件进行读操作: os.Open(name string)(*File,error) 2)关…

WebSocket的理解与应用

WebSocket的理解与应用 一、是什么二、特点1、全双工2、二进制帧3、协议名4、握手5、优点 三、应用场景 一、是什么 WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达…

【补题/atccoder】Toyota Programming Contest 2024#7(AtCoder Beginner Contest 362)

A、买笔 思路&#xff1a; 输入红绿蓝三只笔价格&#xff0c;再输入不喜欢颜色&#xff0c; 输出除不喜欢颜色笔以外最低价格 代码如下&#xff1a; #include <iostream> #include <algorithm> using namespace std;int main() {int r, g, b;cin >> r >&…

【含开题报告+文档+源码】基于Web的房地产销售网站的设计与实现

开题报告 随着经济的发展和城市化进程的加速&#xff0c;房地产市场逐渐成为人们关注的焦点。然而&#xff0c;传统的房地产销售模式存在很多问题&#xff0c;如信息不透明、交易过程繁琐、无法满足个性化需求等。这些问题不仅影响了消费者的购房体验&#xff0c;也制约了房地…

网络层3——IP数据报转发的过程

目录 一、基于终点的转发 1、理解 2、IP数据报转发过程 二、最长前缀匹配 1、理解 2、主机路由 3、默认路由 三、二叉线索查找 一、基于终点的转发 1、理解 理解什么叫终点转发 IP数据报的传递&#xff0c;交给路由器后 可不可以做到直接发送给目的主机呢&#xff1f;…

【LwIP源码学习4】主线程tcpip_thread

前言 本文对lwip的主要线程tcpip_thread进行分析。 正文 tcpip_thread是lwip最主要的线程&#xff0c;其创建在tcpip_init函数中 sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);tcpip_init函数被TCPIP_Init函数调用。…

前端的导入导出「CommonJS」「ES Module」模块化规范

模块化开发有助于我们将代码进行拆分&#xff0c;便于开发和维护&#xff0c;但如果不清楚模块化规范&#xff0c;就会在开发时不知道该用 require 还是 import&#xff0c;导出时该用 export 还是 module.exports 参考博主文章

CoEdge: 面向自动驾驶的协作式边缘计算系统,实现分布式实时深度学习任务的高效调度与资源优化

文章导读 CoEdge系统的构思基于边缘计算的发展&#xff0c;这一分布式计算范式将服务从云端推向网络边缘&#xff0c;以支持各种物联网应用&#xff0c;如智能交通和自动驾驶。随着通信技术的进步&#xff0c;出现了新的协作边缘系统&#xff0c;多个边缘节点可以通过本地点对…

操作系统进程的描述与控制知识点

前趋图和程序执行 前趋图 定义&#xff1a; 前趋图是指一个有向无循环图&#xff0c;可记为 DAG&#xff0c;它用于描述进程之间执行的先后顺序图形表示&#xff1a; 程序的执行 程序顺序执行时&#xff0c;系统资源的利用率很低 程序顺序执行时的特征 顺序性封闭性可再现性 …

移远通信推出八款天线新品,覆盖5G、4G、Wi-Fi和LoRa领域

近日&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;再次推出八款高性能天线新品&#xff0c;进一步丰富其天线产品阵容&#xff0c;更好地满足全球客户对高品质天线的更多需求。具体包括5G超宽带天线YECT005W1A和YECT004W1A、5G天线YECT028W1A、4G天…

k8s简单的指令以及图解

k8s简单的操作指令 1.kubectl get pods 查看全部的pods 也就是k8s中的最小颗粒度 2.kubectl describe podsname 查看pod的详情 3.kubectl get pods -n podsname 查看pod服务是否正常 4.kubectl logs -f 容器name --tail1000 -n podname 查看pod 的日志 5.kubectl get service …

Python复习1:

一、数据类型 1.数字&#xff1a;int、float、bool 2.字符串&#xff1a;string 3.列表&#xff1a;list 4.集合&#xff1a;set 5.字典&#xff1a;dictionary 二、Test 1.print输出固定格式 num110 str1"hello world" #输出的固定格式 print("num1%d&…

UVM验证该去大公司还是中型公司呢?

无论是UVM验证还是系统C验证亦或是其它&#xff0c;大公司的普遍特点是做过多层封装、已经准备好轮子、各式各样的工具库。如果一毕业就进大公司&#xff0c;那你会在UVM等基础之上再学习公司封装的那部分工具、脚本或者是库&#xff0c;一旦掌握以后你接下来将会脱离一些初级的…

法律文件智能识别:免费OCR平台优化数字化管理

一、系统概述 在法律行业&#xff0c;纸质文件的数字化需求日益迫切&#xff0c;合同、判决书、协议等文件的管理成为法律部门的一大难题。传统手动输入不仅耗时&#xff0c;且易出错。思通数科的OCR识别平台应运而生&#xff0c;以其开源、免费的特性为法律文档管理提供了智能…

koa + sequelize做距离计算(MySql篇)

1.核心思路 1.利用sequelize的fn方法调用MySql原生函数&#xff08;st_distance_sphere、point&#xff09; 2.这里利用到了MySql的原生函数&#xff0c;不懂可以去看看mysql的函数知识 2.核心代码 //st_distance_sphere、point函数用来计算当前经纬度和目的地经纬度 //col…