端口敲门knockd

一、什么是Port Knocking | 端口敲门

  • 定义:端口敲门是一种通过在一组预先指定的关闭端口上产生连接请求,从外部打开防火墙上的端口的方法。一旦收到正确地连接请求序列,防火墙规则就会被动态修改,以允许发送连接请求的主机通过特定端口进行连接。
  • 目的:防止攻击者通过进行端口扫描来扫描系统中潜在的可利用服务,因为除非攻击者发送正确的碰撞序列,否则受保护的端口将显示为关闭。

二、knockd服务配置

其中knockd服务的配置文件所在位置为/etc/knockd.conf,其中的初始化内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[options]
UseSyslog

[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn

[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
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

配置文件里有两个参数:

  • sequence:按照顺序依次访问端口,command执行的条件。比如这里是依次访问7000, 8000, 9000端口,默认使用TCP访问。

  • command:当knockd监测到sequence端口访问完成,然后执行此处command,这里为通过iptables开启关闭ssh外部访问。

三、启动和关闭knockd

3.1 手动构造

通过使用telnel工具依次对端口产生链接请求

  • 打开SSH iptables
1
2
3
telnet <target IP> 7000
telnet <target IP> 8000
telnet <target IP> 9000
  • 关闭SSH iptables
1
2
3
telnet <target IP> 9000
telnet <target IP> 8000
telnet <target IP> 7000

3.2 使用knockd工具

knockd程序自带的打开和关闭的方式

  • 打开SSH iptables
1
knock <target IP>  7000 8000 9000
  • 关闭SSH iptables
1
knock <target IP>  9000 8000 7000

3.3 使用NC指令

NC工具可以实现请求连接指定端口的效果,故也可以用来打开knockd,且时比较好的一种方式

  • 打开SSH iptables
1
nc -z <target IP> 7000 8000 9000
  • 关闭SSH iptables
1
nc -z <target IP> 9000 8000 7000

3.4 Nmap工具

  • 打开SSH iptables
1
for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x <target IP>; done
  • 关闭SSH iptables
1
for x in 9000 8000 7000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x <target IP>; done

参考连接:DC-9靶机-简单谈一下端口敲门技术 (Port Knocking)


端口敲门knockd
http://candyb0x.github.io/2024/06/29/端口敲门knockd/
作者
Candy
发布于
2024年6月29日
更新于
2024年6月29日
许可协议