Home SDP 利用SPA项目fwknop保护服务

fwknop wiki :http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

fwknopd doc :https://www.cipherdyne.org/fwknop/docs/manpages/fwknopd.html

fwknop doc :https://www.cipherdyne.org/fwknop/docs/manpages/fwknop.html

 

简单说来,“单包认证(SPA)”机制就是在服务器上先屏蔽指定的服务/端口,当一个用户在请求服务时,先向服务器发送一个SPA数据包,若服务器通过了这个认证,则只为发出请求的用户开放服务。

 

详细过程:
1.服务端默认只允许established状态的TCP回包,其它数据包全部拒绝,server通过libpcap在指定的端口监听。

2.client通过SPA认证端口(默认62201)发送SPA数据包,server通过解析SPA包中的认证信息,认证成功后server自动添加iptables ACL,该ACL允许client ip访问特定服务端口。

3.  当认证等待超时,server自动删除该条ACL,确保只有非常短暂的时间窗口可以允许合法客户端访问服务端自定义的服务。

 

安装(fwknop 2.6.8):

>wget http://www.cipherdyne.org/fwknop/download/fwknop-2.6.8.tar.gz

>tar -zxvf fwknop-2.6.8.tar.gz

>cd fwknop-2.6.8

>./configure

此步需要安装libpcap

>yum install libpcap-devel

>make

>sudo make install

>whereis fwknopd

 

服务端:

Start fwknopd:sudo fwknopd

Restart:sudo fwknopd –restart

 

启动服务后添加初始化iptables:

sudo iptables -A INPUT  -i eth0 -p tcp –dport 22 -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT  -i eth0 -s 1.1.1.1/24 -j ACCEPT

sudo iptables -A INPUT  -i eth0 -p tcp –dport 22 -j DROP

 

配置文件:

认证配置

sudo vim  /etc/fwknop/access.conf

系统配置

sudo vim  /etc/fwknop/fwknopd.conf

服务端log

sudo tail -f /var/log/messages

 

 

客户端初始化认证信息

./fwknop -A tcp/22 -a allowIP -D serverIP –save-packet  SPApcap  –key-gen –use-hmac –save-rc-stanza –v

./fwknop  -A  tcp/22  -n serverIP –verbose

sudo cat ~/.fwknoprc  生成的认证信息

 

 

NAT相关

1、 可通过NAT方式访问被SPA Server保护的内网服务。

图片1.png

2、 可控制内网用户通过SPA认证后访问互联网。

图片2.png

3、 Fwknop client在内网的情况:

1-R option:在生成rc文件时指定此选项会在文件中添加RESOLVE_IP_HTTPS字段,当使用-n发送SPA认证包时,程序先向fwknop官网发送HTTPS请求获取NAT地址,再将此地址作为allow IP写入到SPA中。

2-s option:在用-n发送SPA报文时指定此选项会使SPA中不包含allow IP,而是让fwknop Server自动放行SPA的来源IP,官方并不推荐使用此方式。

3)可能出现的问题:在某种网络环境下会影响SPA认证,比如出口IP不止只有一个,外网出口会经常变换,导致SPA认证和连接请求从两个不同的出口IP发出。 拟解决方案为使用TCP协议进行SPA认证,修改源码中对每个TCP连接1秒超时的限制,当某个socket通过SPA认证后,直接将此socket传给业务层。

 

TCP认证方式

需设置fwknopd.conf文件:

PCAP_FILTER port 62;

ENABLE_TCP_SERVER Y;

TCPSERV_PORT 62;

ENABLE_TCP_SERVER用来开放一个TCP端口,但这个端口只能用作接受TCP连接服务,不负责接收和处理SPA报文,每个连接1秒后失效。接收SPA报文由PCAP负责,所以PCAP_FILTER选项需将端口设置的和TCP端口一样。

 

https://github.com/weizn11/fwknop

打赏
0 comment

You may also like

Leave a Comment

*

code

error: Alert: Content is protected !!