Debian端口 Knock

・5 分钟阅读

现在,你可能已经更改了默认的SSH端口,不过,黑客可以轻松扫描端口范围以发现该端口 - ,但是通过端口knock,你可以欺骗端口扫描程序。它是如何工作的,SH客户端试图连接到一系列端口,所有端口都会拒绝连接,但是,会解锁一个允许你连接的指定端口。这非常安全,而且易于安装,端口knock是保护服务器免受未经授权的SSH连接尝试的最好方法之一。

本文将教你如何设置端口knock,它是为Debian7 Wheezy)编写的,但是,也可以用于其他版本的Debian和Ubuntu。

步骤1:安装所需的软件包

我假设你已经安装了SSH服务器,如果没有,请将以下命令作为root运行:


apt-get update
apt-get install openssh-server
apt-get install knockd

然后,安装iptables 。


apt-get install iptables

没有多少软件包需要安装 - ,这就是使它成为防止强力尝试同时易于设置的完美解决方案的原因。

步骤2:配置iptables以便使用此功能

因为你的SSH端口会在连接后关闭,我们需要确保服务器允许你在阻止其他连接尝试时保持连接。将这些命令作为root在服务器上执行。


iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j DROP
apt-get install iptables-persistent
iptables-save

这会允许现有连接保留,但是,阻止其他任何连接到SSH端口。

现在,让我们来配置knockd 。

这就是魔法发生的地方 - 你会能够选择首先可以knock的端口。打开文件/etc/knockd.conf中的文本编辑器。


nano /etc/knockd.conf

将有一个类似以下块的节。


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

在本节中,你将能够更改需要被knock的端口序列,目前,我们将停留在端口7000,8000和9000 将seq_timeout =5更改为seq_timeout =10,对于closeSSH部分,对seq_timeout行执行相同的操作,在closeSSH部分中还有一个序列行,你需要对它进行修改。

我们需要启用,所以,再次打开你的编辑器作为root 。


nano /etc/default/knockd

start_knockd 部分中的0更改为1,然后保存,并且退出,

现在,启动knockd :

 
service knockd start

 

一切都安装好了。如果你断开与服务器的连接,你将不得不再次连接端口7000,8000和9000连接,

第三步让我们试试看

如果一切安装正确,你就不能连接到SSH服务器。

你可以使用telnet客户端测试端口knock。

Windows用户可以从命令提示符启动telnet ,如果未安装telnet,请访问控制面板的"程序"部分,然后定位"打开或关闭Windows功能",在功能面板上,找到"Telnet Client ",并且启用它。

在终端/命令提示符中键入:


telnet youripaddress 7000
telnet youripaddress 8000
telnet youripaddress 9000

在十秒内完成所有操作,因为这是配置中的限制。现在,尝试通过SSH连接到你的服务器,它是可访问的。

要关闭SSH服务器,请按相反顺序运行命令。


telnet youripaddress 9000
telnet youripaddress 8000
telnet youripaddress 7000

结束语

使用端口knock的最好的情况是,如果它与私钥认证一起配置,除非有人知道端口和私钥,否则几乎没有其他人可以进入的机会。

杨和超 profile image