通过Knockd隐藏SSH,让黑客看不见你的服务器
出品|MS08067实验室(www.ms08067.com)
本文作者:大方子(Ms08067实验室核心成员)
0X01设备信息
Ubuntu14.04:192.168.61.135
Kali:192.168.61.130
0X02配置过程
先用Kali探测下Ubuntu的端口情况,可以看到Ubuntu的22端口是正常开放的

接下来在Ubuntu上安装Knockd
apt-get install update
apt-get install build-essential -y
apt-get install knockd -y
安装完成后就cat下Knockd的配置/etc/knockd.conf

配置解释:
[options]
UseSyslog //用来定义日志输出位置以及文件名
[openSSH]
sequence = 7000,8000,9000 //设置(开门)敲门顺序,可以自定义
seq_timeout = 5 //设置超时时间
command = /sbin/iptables ‐A INPUT ‐s %IP% ‐p tcp ‐‐dport 22 ‐j ACCEPT //开门成功后添加防火墙规则命令(打开SSH端口)
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000 //设置(关门)敲门顺序,与开门顺序相反
seq_timeout = 5 //设置超时时间
command = /sbin/iptables ‐D INPUT ‐s %IP% ‐p tcp ‐‐dport 22 ‐j ACCEPT //关门成功后删除之前添加的防火墙规则(关闭SSH端口)
tcpflags = syn
接下来对/etc/knockd.conf进行配置
[options]
#UseSyslog
LogFile = /knock.log #配置日志路径
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables ‐I INPUT ‐s 192.168.61.130 ‐p tcp ‐‐dport 22 ‐j ACCEPT //这里把A改成I,让knockd插入的规则能够优先生效
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables ‐D INPUT ‐s 192.168.61.130 ‐p tcp ‐‐dport 22 ‐j ACCEPT
tcpflags = syn
配置/etc/default/knockd,修改START_KNOCKD=1

然后重启下knockd服务
service knock restart

然后我们在Ubuntu的防火墙上添加几条规则
iptables ‐A INPUT ‐s 192.168.61.1 ‐j ACCEPT //允许宿主机连接,方便实验的时候可以用SSH进行连接
iptables ‐A INPUT ‐s 127.0.0.0/8 ‐j ACCEPT //允许本机的连接
iptables ‐A INPUT ‐j DROP //拒绝其他所有IP的连接

我们在Kali上用nmap对Ubuntu的22端进行探测,可以看到22端口的状态是被过滤了
nmap ‐sC ‐Pn ‐sV ‐p 22 ‐A 192.168.61.135

接下来我们用nmap进行敲门
for x in 7000 8000 9000;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.61.135;done

我们再次查看Ubuntu上的防火墙规则,添加了一条关于192.168.61.130的规则

我们再次用Kali进行探测并尝试连接


使用完毕之后,我们再次用nmap进行关门,只需要倒过来敲击各个端口即可
for x in 9000 8000 7000;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.61.135;done

再次查看Ubuntu的防火墙规则,可以看到之前关于192.168.61.130的规则已经被删除

此时再次用nmap进行探测以及进行连接都会被拒绝


通过Knockd隐藏SSH,让黑客看不见你的服务器的更多相关文章
- mysql: 看不见的空符号 char(9) char(10) char(13)
在统计年度销售额时,总觉得哪里不对劲.于是找了找,对了对,试了trim,消除前后的空格,也没反应. 在崩溃的边缘,终于发现了错的原因. 原来我在录入的时候,粘贴多了其他空白符号,看不见,摸不着,啊~ ...
- 【Bug】看不见的分隔符: Zero-width space
今天在调试一段代码的时候,有一个输入不能为空的库函数抛出了异常(为空就会抛出异常,就是这么傲娇).自己暗骂了自己一番,怎么这么大意,于是追溯源头,开始寻找输入控制的地方.但是当我找到时我惊呆了,我明明 ...
- Telnet客户端连接服务器,看不见字符,只显示横线
Telnet 窗口看不见字符,只显示小横线 在用telnet连接tomcat服务器的 时候,窗口中不显示字符,显示成一个一个的横线 解决办法: 按住“Ctrl+]” 回车解决问题
- MySQL 笔记整理(3) --事务隔离,为什么你改了我还看不见?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 3) --事务隔离,为什么你改了我还看不见? 简单来说,事务就是要保证一组数据操作,要么全部成功,要么全部失败.在MySQL中,事务 ...
- [BUG随想录] 看不见的分隔符: Zero-width space
今天在调试一段代码的时候,有一个输入不能为空的库函数抛出了异常(为空就会抛出异常,就是这么傲娇).自己暗骂了自己一番,怎么这么大意,于是追溯源头,开始寻找输入控制的地方.但是当我找到时我惊呆了,我明明 ...
- darktrace 亮点是使用的无监督学习(贝叶斯网络、聚类、递归贝叶斯估计)发现未知威胁——使用无人监督 机器学习反而允许系统发现罕见的和以前看不见的威胁,这些威胁本身并不依赖 不完善的训练数据集。 学习正常数据,发现异常!
先说说他们的产品:企业免疫系统(基于异常发现来识别威胁) 可以看到是面向企业内部安全的! 优点整个网络拓扑的三维可视化企业威胁级别的实时全局概述智能地聚类异常泛频谱观测 - 高阶网络拓扑;特定群集,子 ...
- 在输入密码框中眼睛睁开可以看见数字,眼睛闭上看不见数字怎么用JS实现
无论做那个项目,登录注册页面总是避免不了的,那怎么用js来控制密码的显示和隐藏呢?先看一下效果图: HTML代码如下: <div> <label for=" ...
- threejs三角形Geometry的顶点时针顺序会导致三角形看不见
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75,winSize.width/winSize.hei ...
- 为什么有的系统的事务码BSP_WD_CMPWB看不见Enhance Component这个按钮
我的同事问我,为什么有的系统看不到下图7的按钮? 对比两张图里工具栏的差异. 答案 这是因为在图2(看不见Enhance Component按钮)的系统里,该系统的类型被设置为"SAP&qu ...
随机推荐
- 深入理解Redis系列之持久化
redis持久化配置 redis.conf // RDB配置 save 900 1 save 300 10 save 60 10000 // AOF配置 appendonly yes //AOF三种同 ...
- Java GC --- Java堆内存
Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆上进行内存分配.为了进行高效的垃圾回收,虚拟机把堆内存划分成: 1. 新生代(Young Generation): 由 Eden 与 ...
- 模板匹配入门实践:opencv+python识别PDB板
任务要求: 基于模板匹配算法识别PCB板型号 使用工具: Python3.OpenCV 使用模板匹配算法,模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识 ...
- hadoop集群中zkfc的作用和工作过程
一. 简单了解NameNode的ZKFC机制 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 一般导致NameNode切换的原因 ZKFC的作用 ...
- Spring Boot -- 外部配置的属性使用
Spring Boot允许使用propertities文件.yaml文件或者命令行参数作为外部配置. 命令行参数配置 Spring Boot可以基于jar包运行,打成jar包的程序可以直接通过下面的命 ...
- Python作业---内置数据类型
实验2 内置数据类型 实验性质:验证性 一.实验目的 1.掌握内置函数.列表.切片.元组的基本操作: 2.掌握字典.集合和列表表达式的基本操作. 二.实验预备知识 1.掌握Python内置函数的基/本 ...
- ip访问本机vs调试项目
环境:win10 vs2019 webapi F5启动调试. 问题:localhost可以访问,127.0.0.1和本机ip访问不了.比如想让别人浏览一下看效果,或者测试人员测试功能,每次修改都有重新 ...
- 【Oracle】静默安装oracle 11.2.0.4 超详细
安装oracle 1.执行脚本完成初始化oracle环境 2.解压缩oracle的压缩包,单实例1个,rac是2两个压缩包 3.修改response下的db_install.rsp 修改内容如下: - ...
- CTFHub - Web(六)
命令注入: 1.进入页面,测试127.0.0.1, 关键代码: <?php $res = FALSE; if (isset($_GET['ip']) && $_GET['ip'] ...
- Kubernetes 开船记-脚踏两只船:用 master 服务器镜像克隆出新集群
自从2020年2月23日 园子全站登船 之后,我们一边感叹"不上船不知道,一上船吓一跳" -- kubernetes 比 docker swarm 强大太多,一边有一个杞人忧天的担 ...