knock:端口敲门服务

端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。

1 安装knockd

apt install knockd

2 配置knockd服务

$ vim /etc/knockd.conf
[options]
# UseSyslog
LogFile = var/knock/knock.log [openSSH]
# 定义敲门暗号顺序
sequence = 7000,8000,9000
# 设置超时时间,时间太小可能会出错
seq_timeout = 30
# 设置敲门成功后所执行的命令
     # 在ubuntu系统iptables规则默认是禁止所有的规则,如果直接添加规则默认是在drop all规则之后,因此需要先删除drop all的规则再添加所要设置的规则,最后重新添加drop all的规则。
     # command = /sbin/iptables -D INPUT -p tcp --dport 22 -j DROP && /sbin/iptables -A INPUT -s [允许远程的IP] -p tcp --dport 22 -j ACCEPT && /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn [closeSSH]
sequence = 9000,8000,7000
seq_timeout = 30
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn [openHTTPS]
sequence = 12345,54321,24680,13579
seq_timeout = 5
command = /usr/local/sbin/knock_add -i -c INPUT -p tcp -d 443 -f %IP%
tcpflags = syn

3 启动knockd

systemctl start knockd

4 实例

  1. 配置knock如下:

    $ cat /etc/knockd.conf
    [options]
    UseSyslog [openSSH]
    sequence = 1356, 6784, 3409
    seq_timeout = 5
    command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn [closeSSH]
    sequence = 3409, 6784, 1356
    seq_timeout = 5
    command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn
  2. 查看测试系统的SSH端口开启状态

    ┌──(kali㉿kali)-[~]
    └─$ nmap -A -p 22 192.168.50.71 -oA djinn
    Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-28 11:03 CST
    Nmap scan report for 192.168.50.71
    Host is up (0.00071s latency). PORT STATE SERVICE VERSION
    22/tcp closed ssh
  3. 使用1356 6784 3409暗号敲门

    ┌──(kali㉿kali)-[~]
    └─$ knock 192.168.50.71 1356 6784 3409
    ┌──(kali㉿kali)-[~]
    └─$ nmap -A -p 22 192.168.50.71 -oA djinn
    Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-28 11:03 CST
    Nmap scan report for 192.168.50.71
    Host is up (0.00051s latency). PORT STATE SERVICE VERSION
    22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey:
    | 2048 b8:cb:14:15:05:a0:24:43:d5:8e:6d:bd:97:c0:63:e9 (RSA)
    | 256 d5:70:dd:81:62:e4:fe:94:1b:65:bf:77:3a:e1:81:26 (ECDSA)
    |_ 256 6a:2a:ba:9c:ba:b2:2e:19:9f:5c:1c:87:74:0a:25:f0 (ED25519)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
  4. 使用3409 6784 1356 暗号关门

    ┌──(kali㉿kali)-[~]
    └─$ knock 192.168.50.71 3409 6784 1356
    ┌──(kali㉿kali)-[~]
    └─$ nmap -A -p 22 192.168.50.71 -oA djinn
    Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-28 11:03 CST
    Nmap scan report for 192.168.50.71
    Host is up (0.00028s latency). PORT STATE SERVICE VERSION
    22/tcp closed ssh

knock:端口敲门服务的更多相关文章

  1. [原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server)

    Port Knocking for Ubuntu 14.04 Server OS:ubuntu 14.04 server 原理简单分析: 端口敲门服务,即:knockd服务.该服务通过动态的添加ipt ...

  2. 使用 IPset 进行端口敲门

    端口敲门(Port knocking)技术,即服务通过动态的添加 iptables 规则来隐藏系统开启的服务,使用自定义的一系列序列号来「敲门」,使系统开启需要访问的服务端口,才能对外访问.不使用时, ...

  3. springboot+dubbo之多端口注入服务

    前面介绍了,springboot+dubbo基础整合,这篇介绍多端口注入服务. springboot使用@Bean注入dubbo服务,当你是单一的ProviderConfig实例,dubbo的@Ser ...

  4. TOMCAT如何建立两个端口或服务

    近日,一个客户需要将系统放到公网上,局网测试的时候用的8080,但该端口已经被其它应用占用,但又不想更改之前的端口,于是查了下资料,以供后阅 针对客户的这个情况,只是说想增加一个端口,这时只需要去to ...

  5. Linux的端口和服务

    一.端口和服务的关系端口号与相应服务的对应关系存放在/etc/services文件中,这个文件中可以找到大部分端口.使用netstat命令显示的服务名称也是从这个文件中找的.有人说将这个文件中的相应端 ...

  6. (转)LINUX的端口和服务

    一.端口和服务的关系 端口号与相应服务的对应关系存放在/etc/services文件中,这个文件中可以找到大部分端口.使用netstat命令显示的服务名称也是从这个文件中找的.有人说将这个文件中的相应 ...

  7. lvs持久连接及防火墙标记实现多端口绑定服务

    lvs持久连接及防火墙标记实现多端口绑定服务 LVS持久连接: PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS: PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向 ...

  8. Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中

    场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...

  9. 端口与服务-ftp服务

    端口与服务-ftp服务 1概述 1.1.从先知和乌云上爬取端口历史漏洞报告,总结报告 1.2.全面总结,出具一个表格之类的汇总表 2.ftp # -*- coding: utf-8 -*- impor ...

  10. python thrift 实现 单端口多服务的过程

    Thrift 是一种接口描述语言和二进制通信协议.以前也没接触过,最近有个项目需要建立自动化测试,这个项目之间的微服务都是通过 Thrift 进行通信的,然后写自动化脚本之前研究了一下. 需要定义一个 ...

随机推荐

  1. 【HarmonyOS】ArkTS Native开发——使用 system函数创建文件

    ​ ArkTS是HamronyOS优选的主力语言,但官方文档指南中对于Native应用开发并没有详细的描述,只有一篇Codelab可以学习(简易Native C++ 示例(ArkTS) (huawei ...

  2. 搭建漏洞环境及实战——搭建XSS测试平台

    XSS测试平台是测试XSS漏洞获取cookie并接收Web页面的平台,XSS可以做成JS能做的所有事,包括但不限于窃取cookie.后台增删文章.钓鱼.利用CSS漏洞进行传播.修改网页代码.网站重定向 ...

  3. RSA中用到的推导,笔记持续更新

    1.同余式组求p和q 已知条件: 推导过程: 根据上述已知条件,以及同余式性质,我们可以得到如下: c1e2 = (2p + 3q)e1*e2 mod N c2e1 = (5p + 7q)e1*e2  ...

  4. sqli-laba靶场搭建

    windows下安装sqli-laba 环境:windows10 安装phpstudy 1.下载并安装小皮面板phpstudy(傻瓜式安装) https://www.xp.cn/windows-pan ...

  5. [深度学习] ImageAI库使用笔记

    ImageAI是一个Python库,旨在使开发人员,研究人员和学生能够使用简单的几行代码来构建具有独立的深度学习和计算机视觉功能的应用程序和系统. ImageAI的官方GitHub存储库为https: ...

  6. group by 语句怎么优化?

    一.一个简单使用示例 我这里创建一张订单表 CREATE TABLE `order_info` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `or ...

  7. 算法之SPFA的前置:Bellman-Ford算法

    SPFA 我们都知道一个叫SPFA的算法,它是用来计算单源最短路径的,但是,众所周知它不是很稳定,容易退化. SPFA是基于什么被提出的? 基于一个叫做Bellman-Ford的算法. Bellman ...

  8. 解析url地址hashhref

  9. 分布式协议与算法-Quorum NWR

    1.强一致性与最终一致性 1.1强一致性 强一致性能保证写操作完成后,任何后续访问都能读到更新后的值:强一致性可以保证从库有与主库一致的数据.如果主库突然宕机,我们仍可以保证数据完整.但如果从库宕机或 ...

  10. 表单标签补充及css层叠样式

    表单标签补充及css层叠样式 一.表单知识点补充 1.获取用户输入的标签两大重要属性 name属性:类似于字典的键 value属性:类似于与字典的值 # form表单朝后端发送数据的时候,标签必须得有 ...