fwknop通过源码编译的安装和使用测试(新)

本文详细介绍了在Ubuntu上从GitHub源码编译安装fwknop服务器的过程,包括必要的依赖安装、编译、卸载、配置秘钥和防火墙规则,以及客户端的敲门命令和服务器的监听状态检查。此外,还提到了Ubuntu22.04中iptables的替代方案nftables。
摘要由CSDN通过智能技术生成

1、安装fwknop server

此教程使用github原码进行编译安装,还可使用apt直接进行下载(不在本页)

从GitHub下载原码压缩包

https://github.com/mrash/fwknop

解压后进入文件路径

 首先保证安装以下软件

sudo apt-get install libtool

sudo apt-get install automake

sudo apt-get install libpcap-dev

sudo apt-get install texinfo

sudo apt-get install make

2、安装fwknop server

  1. 运行./autogen.sh

  2. 运行./configure

 

 成功后为此效果,如未显示,请检查前文依赖是否安装正确

3.编译安装

执行编译

sudo make

安装

sudo make install

 卸载

sudo make uninstall

安装后 使用 which fwknop 查看安装位置 

使用 ldconfig进行刷新

使用 sudo fwknop -V 查看版本

正确显示后即为安装成功

4.配置

1)客户端生成秘钥

 $ fwknop -A tcp/22 -a 192.168.163.1 -D 192.168.163.129 -p 62201 -P udp --key-gen --use-hmac --save-rc-stanza

-a后为客户端ip,-D后面为服务器ip,-p后为服务器监听SPA包的端口,-P后为发送的SPA包的协议,一般采用UDP包。

执行成功后输出如下信息:[+] Wrote Rijndael and HMAC keys to rc file: (省略)

路径一般为/root/下一个文件

查看该文件,内容如下:

[192.168.163.129]
SPA_SERVER_PROTO            udp
SPA_SERVER_PORT             62201
ALLOW_IP                    192.168.163.1
ACCESS                      tcp/22
SPA_SERVER                  192.168.163.129
KEY_BASE64                  gqkSa8ghIDlAfv3FDEAdyyMfC6Q+j9RI+BhodFdifok=
HMAC_KEY_BASE64             IPsM8dg8JLaYvRS3UVEoNiuQ9nBu7FB86tOmQyF7HF0+7cT33pxUHAX5zGcYidP5T03zJLR3ejjrJgR1PezLvA== 
USE_HMAC                    Y

2)服务端配置设置

编辑sudo vim /usr/local/etc/fwknop/access.conf文件,修改里面的内容如下:

OPEN_PORTS            tcp/22
FW_ACCESS_TIMEOUT     20
SOURCE              ANY
#KEY_BASE64          __CHANGEME__
#HMAC_KEY_BASE64     __CHANGEME__
KEY_BASE64              gqkSa8ghIDlAfv3FDEAdyyMfC6Q+j9RI+BhodFdifok=
HMAC_KEY_BASE64         IPsM8dg8JLaYvRS3UVEoNiuQ9nBu7FB86tOmQyF7HF0+7cT33pxUHAX5zGcYidP5T03zJLR3ejjrJgR1PezLvA==

注意键值的拼写

编辑文件sudo vim /usr/local/etc/fwknop/fwknopd.conf

添加内容如下:

PCAP_INTF                   ens33;

ens33是用ifconfig命令查出来的网卡名字:


[jelly@localhost ~]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.163.129  netmask 255.255.255.0  broadcast 192.168.163.255
        inet6 fe80::37c8:6a00:e56c:9bf5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:66:79:23  txqueuelen 1000  (Ethernet)
        RX packets 1336  bytes 112165 (109.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1197  bytes 208285 (203.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000

3)在服务端启动停止fwknop

[jelly@localhost ~]$ sudo fwknopd start //启动fwknop

[*] An instance of fwknopd is already running: (PID=4196).

[jelly@localhost ~]$


[jelly@localhost ~]$ sudo fwknopd -S //查看fwknop状态

Detected fwknopd is running (pid=4196).

[jelly@localhost ~]$

[jelly@localhost ~]$ sudo kill  4196

4)在服务端打开防火墙,屏蔽22端口

在此之前先测试ssh是否可用

sudo ps -e | grep ssh

 若无结果使用以下安装ssh

sudo apt-get install openssh-server

 再次检测ssh是否可用

sudo ps -e | grep ssh

如果有 sshd 则说明 ssh 服务已启动,如果没有启动,输入下边命令启动 ssh 服务

sudo service ssh start

接下来设置防火墙 

[jelly@localhost ~] $ sudo iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -j DROP
[jelly@localhost ~] $ sudo iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

注意

  • ubuntu 22.04默认使用nftables作为防火墙,而非iptables。

解决 

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

 

5)在客户端使用敲门命令(是服务端ip)

 fwknop -n 192.168.163.129

6)检测监听状态 

sudo fwknopd --fw-list

出现如下信息则敲门成功

Chain FWKNOP_INPUT (1 references)

num? target? ? prot opt source? ? ? ? ? ? ? destination? ? ? ?

1? ? ACCEPT? ? tcp? --? 192.168.224.128? ? ? 0.0.0.0/0? ? ? ? ? ? tcp dpt:22 /* _exp_1605597903 */

客户端使用nmap命令扫描服务器,则结果为:

PORT STATE SERVICE

22/tcp open? ssh

SPA验证完成!

使用tcpdump对服务器接收到的数据包进行监听,发现在fwknop敲门行为前后,客户端通过udp协议向服务器的62201端口发送一个验证包,但是此项行为涉及的端口和协议都可以使用--server-port参数进行修改。

没找到如何修改--server-port默认参数,但每次敲门行为都可以指定端口,操作命令如下

fwknop -n 192.168.224.130:12345

端口号范围再10000-65535之间。同时可能要修改服务器的/etc/fwknop/fwknopd.conf中的PCAP_FILTER字段。

PCAP_FILTER udp port 62201;

本文参考fwknop SPA服务端源码编译_fwknop 源码解析_愤怒的小黄鸭的博客-CSDN博客fwknop的安装和使用测试_Jelly-小丑鱼的博客-CSDN博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值