更多内容请访问borgeousのblog
实验背景
服务器某个端口服务受到防火墙的保护情况下,外界机器无法访问该端口上的服务
实验目的
通过在服务器和客户机上分别部署feknop敲门服务端和敲门客户端并进行配置,可以只让授权的客户端所在的机器敲开服务器的受保护的22号端口
实验准备
需要有两台Linux虚拟机,我这里其中一台为Ubuntu,一台为kali,我们以kali作为服务器,以Ubuntu作为客户机,要让Ubuntu想办法敲开Linux的22号端口
客户机安装配置fwknop客户端
使用命令下载fwknop-客户机
sudoapt update
sudoaptinstall fwknop-client
生成敲门凭证(千万不要加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 -a192.168.153.133 -D192.168.153.129 --key-gen --use-hmac 1 --save-rc-stanza
这会在我们的家目录下生成一个.fwknoprc文件,我们进入下面的目录,并在
/home/borgeous
下提取这个文件内容里面的HMAC验证码以及密码的base64编码
cd /home/borgeous
grep KEY .fwknoprc
将这两个复制下来,以避免后续重新创建,这两个值改变
服务器安装配置
首先确保服务器已经启动sshd服务
systemctl status ssh
这里代表着我们的ssh服务已经开启
接下来我们在服务器上安装、配置fwknop-server,我们使用如下命令进行安装
sudoapt update
sudoaptinstall fwknop-server
执行命令配置两个文件:
sudovim /etc/fwknop/access.conf
清空配置文件,再添加如下内容
SOURCE ANY
REQUIRE_SOURCE_ADDRESS Y
OPEN_PORTS tcp/22, tcp/80, udp/22, udp/80
FW_ACCESS_TIMEOUT 20
KEY_BASE64 vJQ0gldvD73JBWqzk2cU0oOF/S0P5fohSrvRB1l3H3g=
HMAC_KEY_BASE64
knXk7/TDbowujaJEKIxAt4lW4yuq2PvYxEwv0oFpsiUtyVLVVML1vCzlc08SHPJa+kLctKb6ci1CGjO3W6+cQw==
其中的key和hmackey的base64编码替换成客户端的,这样就配置好了客户端敲门凭证
接下来我们使用ip address获取服务器的ip和网卡名
如上,服务器IP为192.168.153.129,网卡名叫eth0,服务器配置另外一个文件
sudovim /etc/fwknop/fwknopd.conf
把里面东西全删了,输入以下内容
PCAP_INTF ens0;
服务器配置防火墙
使用如下命令:
sudo iptables -I INPUT 1 -i eth0 -p tcp --dport 22 -j DROP
sudo iptables -I INPUT 1 -i eth0 -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
如上命令实现入站规则无法使用tcp协议连通22端口,也就是ssh服务
当启动之后,我们的xshell立即就停用了
确认配置正常
在服务端,输入命令启动fwknop服务
sudo fwknopd
再次使用这个命令,有输出代表配置正常,如下所示
效果确认
客户端连接服务器sshd服务,发现无法连接
ssh 192.168.153.129
一直卡在这里不动了,代表我们拒绝了ssh服务
我们尝试敲门后连接,在客户端输入命令以进行敲门,也不要加sudo
fwknop -n192.168.153.129
我们再ssh该用户,发现成功
实验到此结束
版权归原作者 borgeous 所有, 如有侵权,请联系我们删除。