如何使用knockd隐藏打开的端口
我想带您了解一下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的帮助下模糊端口的全部功能。