零信任技术之fwknop单包认证敲门
实验背景
服务器某个端口服务受到防火墙的保护情况下,外界机器无法访问该端口上的服务
实验目的
通过在服务器和客户机上分别部署feknop敲门服务端和敲门客户端并进行配置,可以只让授权的客户端所在的机器敲开服务器的受保护的22号端口
实验准备
需要有两台Linux虚拟机,我这里其中一台为Ubuntu,一台为kali,我们以kali作为服务器,以Ubuntu作为客户机,要让Ubuntu想办法敲开Linux的22号端口
客户机安装配置fwknop客户端
使用命令下载fwknop-客户机
sudo apt update |
生成敲门凭证(千万不要加sudo,如果是root用户,请切换为普通用户)
fwknop -A tcp/22 -a xxx -D yyy --key-gen --use-hmac 1 --save-rc-stanza |
其中xxx替换为我们的Ubuntu的ip,yyy替换为服务器的ip,我们首先用ifconfig
查看一下我们的服务端和客户端的ip
比如我的是这样的
fwknop -A tcp/22 -a 192.168.153.133 -D 192.168.153.129 --key-gen --use-hmac 1 --save-rc-stanza |
这会在我们的家目录下生成一个.fwknoprc文件,我们进入下面的目录,并在/home/borgeous
下提取这个文件内容里面的HMAC验证码以及密码的base64编码
cd /home/borgeous |
将这两个复制下来,以避免后续重新创建,这两个值改变
服务器安装配置
首先确保服务器已经启动sshd服务
systemctl status ssh |
这里代表着我们的ssh服务已经开启
接下来我们在服务器上安装、配置fwknop-server,我们使用如下命令进行安装
sudo apt update |
执行命令配置两个文件:
sudo vim /etc/fwknop/access.conf |
清空配置文件,再添加如下内容
SOURCE ANY |
其中的key和hmackey的base64编码替换成客户端的,这样就配置好了客户端敲门凭证
接下来我们使用ip address获取服务器的ip和网卡名
如上,服务器IP为192.168.153.129,网卡名叫eth0,服务器配置另外一个文件
sudo vim /etc/fwknop/fwknopd.conf |
把里面东西全删了,输入以下内容
PCAP_INTF eth0; |
服务器配置防火墙
使用如下命令:
sudo iptables -I INPUT 1 -i eth0 -p tcp --dport 22 -j DROP |
如上命令实现入站规则无法使用tcp协议连通22端口,也就是ssh服务
当启动之后,我们的xshell立即就停用了
确认配置正常
在服务端,输入命令启动fwknop服务
sudo fwknopd |
再次使用这个命令,有输出代表配置正常,如下所示
效果确认
客户端连接服务器sshd服务,发现无法连接
ssh 192.168.153.129 |
一直卡在这里不动了,代表我们拒绝了ssh服务
我们尝试敲门后连接,在客户端输入命令以进行敲门,也不要加sudo
fwknop -n 192.168.153.129 |
我们再ssh该用户,发现成功
实验到此结束