Fwknop SPA配置
确定iptables正严密地保护本地网络后,开始为spa_server系统配置fwknop服务进程(fwknopd),文件/etc/fwknop/fwknop.conf控制了重要的配置参数,如通过libpcap嗅探通讯的接口,fwknop发送警报信息和pcap过滤器语法(被设计为离线嗅探SPA包)的电子邮件地址,默认情况下,fwknop用UDP端口62201发送SPA包,因此在/etc/fwknop/fwknop.conf中pcap过滤器语法被设置为udp port 62201 ,但是SPA包可以通过任意端口和协议(甚至是ICMP)进行发送,过滤器语法必需要更新到能控制在其他端口/协议上的SPA通讯,在fwknop帮助中能找到更多信息,尽管在这个文件中的默认设置对于大多数部署都是行得通的,但对于你特定的安装你需要调整PCAP_INTF和EMAIL_ADDRESSES 变量。
文件/etc/fwknop/fwknop.conf是fwknop最重要的配置文件,它管理加密密钥以及访问控制权限(用于来自fwknop客户端有效的SPA包),下面的access.conf文件是本文用到的剩余部分:
[spa_server]# cat /etc/fwknop/access.conf
SOURCE: ANY;
OPEN_PORTS: tcp/22;
FW_ACCESS_TIMEOUT: 30;
KEY: LJ07p2rbga;
GPG_DECRYPT_ID: ABCD1234;
GPG_DECRYPT_PW: p2atc1l30p;
GPG_REMOTE_ID: 5678DEFG;
GPG_HOME_DIR: /root/.gnupg;
SOURCE变量定义fwknopd接受的SPA包的ip地址,值ANY表示可以从任意ip地址检查SPA包,但是它也可以受特定的ip地址或子网络限制,支持逗号分割的列表(如192.168.10.0/24,15.1.1.1)。OPEN_PORTS变量告诉fwknopd用来接收有效的SPA包的端口,在这个例子中,fwknopd将打开TCP端口22。
尽管上面没有列出,但fwknopd能被配置为允许fwknop客户端通过设置PERMIT_CLIENT_PORTS变量为Y而指定其他端口;FW_ACCESS_TIMEOUT指出了被添加到允许通过OPEN_PORTS 变量定义的通讯的iptables策略中的ACCEPT规则时间长度,因为在上面的firewall.sh脚本中的iptables策略利用由Netfilter提供的连接跟踪能力,一个SSH连接在初始化被fwknopd删除的ACCEPT规则后将继续保持连接。
剩下的变量为SPA包加密和解密定义参数,本文将阐述对称和非对称密码的用法,但fwknop只需要一种加密类型。
如果有KEY变量的话,所有的GPG_*变量可以被忽略,反过来也一样。KEY变量定义一个在fwknop客户端与fwknop服务端共享的密钥,这个密钥用来加密/解密SPA包,对于非对称加密,GPG_DECRYPT_ID定义本地fwknop服务器GnuPG密钥ID,这个密钥用于fwknop客户端通过一个由GnuPG支持的加密算法加密SPA包(如ElGamal算法)。
GPG_DECRYPT_PW联合fwknop服务端密钥一起进行解密,因为密码是以明文的形式放在access.conf文件中的,建议不要为服务器使用一个有价值的GnuPG密钥,应该为解密SPA包生成一个专用的密钥,fwknop客户端用一个在本地密钥环中的GnuPG密钥标记SPA包,用户从命令获取密码。永远不将其保存在一个文件中(下面我们将会看到),因此,任何GnuPG密钥能被fwknop客户端使用,如用一个有价值的密钥来加密敏感的电子邮件通讯。
GPG_REMOTE_ID变量定义一个密钥ID列表,fwknopd服务端将接受这个列表,任何用fwknopd服务端公共密钥加密的SPA包必须用一个由GPG_REMOTE_ID变量指定的私钥进行标记,这样就允许fwknopd通过强密码机制来限制人们访问一个受保护的服务(在我们的例子中是SSHD),在http://www.cipherdyne.org/fwknop/docs/gpghowto.html可以找到用fwknop创建GnuPG密钥的介绍。[参加附录A]
随着文件/etc/fwknop/access.conf的建立,可以在spa_server系统上开始fwknopd并执行fwknop了:
[spa_server]# /etc/init.d/fwknop start
* Starting fwknop ... [ ok ]