帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何使用knockd隐藏打开的端口

如何使用knockd隐藏打开的端口

发布时间:2019年11月11日 09:35:36    来源: A5互联

我想带您了解一下knockd的安装和使用。我将在Ubuntu服务器19.10上进行演示,但是这个过程应该可以在任何Debian或基于Ubuntu的服务器上正常工作。

一、如何安装

必须安装两个软件,它们都可以在标准存储库中找到。要安装这些包,请在服务器上打开一个终端窗口并发出以下命令:

sudo apt-get install knockd iptables-persistent

就可以在服务器上安装了。

二、如何配置knockd

让我们先用以下命令备份原始的knockd配置文件:

sudo mv /etc/knockd.conf /etc/knockd.conf.bak

现在,使用以下命令创建一个新文件:

sudo nano /etc/knockd.conf

在该文件中粘贴以下内容:

[options]

UseSyslog

Interface = IFACE

[SSH]

sequence = 1100,2200,3300

seq_timeout = 15

tcpflags = syn

start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

cmd_timeout = 20

其中IFACE是服务器上网络接口的名称。

保存并关闭文件。

接下来,我们需要启用knockd。发出该命令:

sudo nano /etc/default/knockd

在该文件中,更改:

START_KNOCKD = 0 为:START_KNOCKD = 1

保存并关闭文件。

使用以下命令创建一个新的systemd文件:

sudo nano /etc/systemd/system/knockd.service

在该文件中,粘贴以下内容:

[Unit]

Description=Port-Knock Daemon

After=network.target

Requires=network.target

Documentation=man:knockd(1)

[Service]

EnvironmentFile=-/etc/default/knockd

ExecStartPre=/usr/bin/sleep 1

ExecStart=/usr/sbin/knockd $KNOCKD_OPTS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=mixed

Restart=always

SuccessExitStatus=0 2 15

ProtectSystem=full

CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN

[Install]

WantedBy=multi-user.target

保存并关闭文件。

使用以下命令启用并启动新服务:

sudo systemctl daemon-reload

sudo systemctl enable --now knockd

三、如何修改防火墙

接下来,我们必须修改防火墙以拒绝对SSH端口22的访问。为此,请发出以下命令:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -p tcp --destination-port 22 -j DROP

sudo ip6tables -A INPUT -p tcp --destination-port 22 -j DROP

使用以下命令使这些规则在重新引导之间保持不变:

sudo -s

sudo iptables-save > /etc/iptables/rules.v4

sudo ip6tables-save > /etc/iptables/rules.v6

exit

四、如何测试敲

为了SSH到支持knockd的服务器,任何远程客户机都必须安装knockd。登录到第二台Linux机器并发出以下命令:

sudo apt-get install knockd -y

安装后,首先尝试使用以下命令SSH进入服务器:

ssh USER@SERVER_IP

其中USER是远程用户名,而SERVER_IP是已启用连接的服务器的IP地址。您应该无法登录。

现在,使用以下命令调用您在knockd.conf中配置的knockd序列:

knock SERVER_IP 1100 2200 3300

其中SERVER_IP是已终止服务器的IP地址,并且终止序列与您配置的服务器匹配。

该命令应不返回任何输出。

如果现在运行SSH命令,应该会给您访问权限。

以上就是在knockd的帮助下模糊端口的全部功能。