+
50
-

什么是Port Knocking端口敲门?

什么是Port Knocking端口敲门?


网友回复

+
0
-

Port Knocking 这个词指的是网络安全策略,通过在防火墙上敲击特定的端口("敲门")序列来打开端口。这就像是你敲门,并且知道正确的敲门方式(通常由一系列特定长度或顺序的敲击组成),然后有人来打开门。

在计算机网络中,端口敲门(Port Knocking)是一种外部主机在试图连接到另一个主机上的受保护(防火墙保护,其上所有端口都关闭)的服务之前,先通过发送一系列的数据包(即敲门信号或"敲击")来访问此服务的方法。

一个典型的端口敲门场景如下:

远端主机将所有服务隐藏起来,防火墙上不对外开放任何端口。

当客户端需要访问某个服务时,首先按照预定好的协议向远端主机发送一组特别的包,即"敲门"。

远端主机检测到"敲门"符合事先的约定,就会对外暂时开放相关的服务。

Port Knocking 的优势在于它提供一种附加的安全层,使只有知道正确序列的用户才能访问服务,而所有其他用户,包括大多数恶意用户,只会看到防火墙阻挡了所有的网络连接。

然而,这并不是绝对安全无懈可击的,例如如果攻击者能监听到序列,他们就可能使用那个序列来进行恶意操作。因此常会配合其他安全措施一起使用,提供多重防护。

我们以centos为例:

首先,您需要在服务器上安装 Port Knocking 服务,例如 knockd。您可以使用以下命令安装:

sudo yum install knockd

安装完毕后,编辑 knockd 的配置文件:

sudo vi /etc/knockd.conf

在该文件中,您可以指定需要敲击的端口序列,以及打开和关闭防火墙的命令。例如:

[options]
UseSyslog

[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -I 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
配置完成后,启动 knockd 服务:

sudo systemctl start knockd

sudo systemctl enable knockd

最后,确保 SSH 服务只能通过 Port Knocking 访问:

sudo iptables -A INPUT -p tcp --dport 22 -j REJECT

这样,只有成功执行了特定的"敲门"序列,才能打开 SSH 端口进行访问。

客户端测试

knock -v server-ip 7000 8000 9000您需要将“server-ip”替换为您的服务器的 IP 地址。

通过之后才能用ssh连接服务器的22端口。

我知道答案,我要回答