“寻龙分金看缠山,一重缠是一重关,关门如有八重险,不出阴阳八卦形”
看盗墓剧的时候,男主角总会在解开一重以一重的机关,才能找到正确的路,那么Linux下我们能否设置一些机关,只有在一些特定的访问顺序后才能启动对应的服务或任务?否则执行任务关闭。
答案当然有!此种方法可有效拦截黑客或做加密使用。
1.介绍
knock是一个用于端口敲门的工具,通过发送特定的数据包序列来触发服务器上的操作,例如打开或关闭防火墙端口,开启服务或关闭服务等。
首先安装knock工具,我以CentOS操作系统为例:
安装
yum -y install knock-server.x86_64
查看man帮助:
man knockd
2.服务端安装
假如我想在客户端顺序访问7777、8888、9999端口后自动开放防火墙的8080端口,在客户端顺序访问9999、8888、7777端口后,自动关闭防火墙8080端口,以达到安全访问的目的。设置如下:
修改knocked.conf配置文件
vim /etc/knockd.conf
修改配置文件如下,Interface定义当前操作系统网卡的名字,比如我的网卡是eth0;openWeb和closeWeb分别定义顺序执行特定端口敲门时执行的命令,如执行7777,8888,9999端口顺序时,执行firewall-cmd –add-port=8080/tcp命令,若执行9999,8888,7777顺序时,执行firewall-cmd –remove-port=8080/tcp命令。
将配置保存退出。
[options]
UseSyslog
Interface = eth0
[openWeb]
sequence = 7777,8888,9999
seq_timeout = 30
command = /usr/bin/firewall-cmd –add-port=8080/tcp
tcpflags = syn
[closeWeb]
sequence = 9999,8888,7777
seq_timeout = 30
command = /usr/bin/firewall-cmd –remove-port=8080/tcp
tcpflags = syn
启动服务:
启动并查看knockd的运行状态
systemctl start knockd.service
systemctl status knockd.service
3.应用展示
首先查看8080端口开放情况:
firewall-cmd –query-port=8080/tcp
客户端执行顺序敲门,我这里采用telnet工具模拟:
xxx_ip为你的服务器ip地址
telnet xxx_ip 7777
telnet xxx_ip 8888
telnet xxx_ip 9999
查看服务器端口发现8080已经正常开放。
反向执行9999、8888、7777敲门,则真实的8080自动关闭成功。达到测试实验目的。
4.客户端安装
也可以使用客户端顺序敲门,执行效率更高,使用yum安装。
yum -y install knock.x86_64
执行顺序敲门:
knock xxx_ip 7777 8888 9999
可以看到目标端口已经开放。
5.总结
knock为隐藏加密端口、服务提供了一种新思路,大家可以结合各类业务及tcp/udp扩展想法实现好玩的功能!
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/417888.html