Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1734832
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: 网络与安全

2011-10-30 17:04:38

fwknop是个单数据包认证与授权(Single Packet Authorization)的软件,包括两部份:
fwknopd:服务器端,用于接收客户端的连接请求并创建iptables规则;
fwknop:客户端,用于发送认证数据包;

认证通过后,服务器会有30秒(可配置)时间允许接入,之后保持接入状态。

一、软件安装

下载:
安装前可能需要先装:

ubuntu : apt-get install libgdbm-dev
centos :
yum install -y yum install -y gdbm-devel.i686
yum install -y libpcap-devel

按照传统安装方式:

./configure && make sudo make install

二、配置

access.conf

SOURCE: ANY;
OPEN_PORTS: tcp/22,tcp/3306;
KEY: test;
REQUIRE_USERNAME: testuser;
FW_ACCESS_TIMEOUT: 30;

允许从任何IP地址以客户端上的testuser用户身份发起fwknop认证请求,认证密码为test。每次认证通过后,fwknopd为该客户端IP地址创建的一条iptables规则允许其连接sshd服务。fwknopd30秒后自动清除该iptables规则,已经连接上的数据链路不会被阻止,但是禁止新的ssh连接请求。最多允许打开,22、3306这两个端口。

fwknopd.conf

PCAP_INTF eth0;
MAX_SPA_PACKET_AGE    120;
ENABLE_SPA_PACKET_AGING Y;
IPT_INPUT_ACCESS ACCEPT, filter, INPUT, 1, FWKNOP_INPUT, 1;

fwknopd监控来自eth0的数据包信息,并且要求客户端发起认证请求后,必须在120秒内完成认证过程;否则本次认证就会被视为失败。(必须保证Client与Server的时间是同步的,建立使用NTP保持时间同步)
认证通过后在系统防火墙上建立一条iptables规则,允许客户端发起ssh连接。

三、测试

服务器端通过iptables防止除lo之外所有的INPUT连接

/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -X
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -i ! lo -j DROP

客户端尝试扫描服务器的开放端口(例如SSH),此时必然显示filtered,无法连接

nmap ServerIP -p 22

服务器端:
启动监控服务进程 /usr/local/sbin/fwknopd
停止监控服务进程 /usr/local/sbin/fwknopd -K

客户端:
初始化客户端环境运行
[testuser@linux ~]$/usr/local/bin/fwknop -f -v

客户端"敲门"

[testuser@linux ~]$/usr/local/bin/fwknop -A tcp/22 -a ClientIP -D ServerIP

这时客户端再尝试扫描服务器的22端口,则会显示开放,能够正常连接。
ssh ServerIP

四、技巧

1、如果用于透明网桥(bridge),要打开FORWARD链,可以简单将配置文件fwknop.conf中:

IPT_INPUT_ACCESS ACCEPT, filter, INPUT, 1, FWKNOP_INPUT, 1;

改成:

IPT_INPUT_ACCESS ACCEPT, filter, FORWARD, 1, FWKNOP_INPUT, 1;

2、总是提示"SPA data is too old"怎么办?

下面的配置就是对付这个问题的:

ENABLE_SPA_PACKET_AGING N;
阅读(2148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~