如何安装和配置FWKNOP(使用EnGarde Linux)
介绍
在校园战争期间,秘密碰撞声已经被用来作为识别朋友或敌人的简单和幼稚的目的。 兄弟会将这些碰撞声传授给他们进入社会的仪式,在我们的安全领域,我们可以实现这一层次的安全锁定SSH服务器。
FireWall KNock操作员(fwknop)是一个优秀的端口碰撞实现,将加密端口碰撞与被动操作系统指纹打印结合在一起。 这使得可以明确地定义哪些Linux系统被允许访问您的SSH服务器。 fwknop将其功能与iptables规则和日志消息相结合,以授予或拒绝对SSH守护程序的访问。
本文将介绍读者通过fwknop的EnGarde Secure Linux实现,从最初的iptables规则设置到在服务器端和客户端部署fwknop。在本文结尾,用户将能够将EnGarde Secure Linux SSH守护程序的所有访问权限显式关闭,仅限于具有fwknop凭据的用户。先决条件
你会需要:
- 一台机器做你的开发。 这些命令不应该在生产服务器上运行,因为示例防火墙实现会关闭对您的SSH守护程序的所有访问!
- 一个单独的客户机实际连接到服务器。 为了保持一切同步,这也可能是另一个EnGarde Secure Linux机器。
- EnGarde安全社区3.0.18或以上
一旦您拥有以上所有内容,您可以以root身份登录,转换到sysadm_r,并禁用SELinux:
[spa_server]# newrole -r sysadm_r
Authenticating root.
Password:
[spa_server]# setenforce 0
在整个HowTo中,服务器将被称为spa_server ,客户机称为spa_client。
安装fwknop
由于其Guardian数字安全网络(GDSN),EnGarde Secure Linux使fwknop的安装变得轻而易举。 您可以通过命令行安装软件包:
[spa_server]# apt-get install fwknop
...或登录到WebTool并从WebTool GDSN界面安装包。
这也应该在spa_client机器上重复。
在配置iptables策略后,我们将围绕fwknop进行设置
iptables规则设置
由于iptables安装在EnGarde Secure Linux上,我们将为您提供一个简单的shell脚本来执行以打开防火墙。 请记住,此脚本将关闭对SSH守护程序的访问。
[spa_server]# cat firewall.sh
#!/bin/sh
IPTABLES=/sbin/iptables
$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
$IPTABLES -A INPUT -i ! lo -j LOG --log-prefix "DROP "
$IPTABLES -A INPUT -i ! lo -j DROP
$IPTABLES -A FORWARD -i ! lo -j LOG --log-prefix "DROP "
$IPTABLES -A FORWARD -i ! lo -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "[+] EnGarde Secure Linux iptables policy activated"
exit
确保将地址更改为公网接口的地址。
运行此脚本之前,请确保使其可执行:
[spa_server]# chmod +x firewall.sh
然后,我们可以在服务器上运行Nmap扫描,以查看我们在系统上打开的内容:
[spa_client]# nmap <spa_server>
...
PORT STATE SERVICE
...
22/tcp open ssh
...
Nmap finished: 1 IP address (1 host up) scanned in 0.474 seconds
如您所见,默认情况下会有一定数量的开放端口,包括SSH端口。
在spa_server上运行防火墙脚本...
[spa_server]# ./firewall.sh
[+] EnGarde Secure Linux iptables policy activated
从您的客户端,您可以运行Nmap扫描,现在看到所有端口都关闭:
[spa_client]# nmap <spa_server>
Note: Host seems down. If it is really up, but blocking our ping probes, try -P0
Nmap finished: 1 IP address (0 hosts up) scanned in 3.012 seconds
此时,您已将防火墙配置为阻止对SSH守护进程的所有访问。 我们现在可以设置fwknop,以便您可以通过下一节中的端口碰撞访问。
Sssh,我想告诉你一个秘密...(设置fwknop和访问)
回到服务器端,使用你最喜欢的编辑器修改/etc/fwknop/fwknop.conf文件。 我们对以下可调参数感兴趣:
EMAIL_ADDRESSES
HOSTNAME
EMAIL_ADDRESSES应该是要使fwknop服务器发送反馈的电子邮件地址。 此反馈包括可在配置文件中其他位置指定的错误消息和其他日志记录变量。 HOSTNAME变量将是spa_server计算机的主机名。
接下来,我们编辑/etc/fwknop/access.conf文件并更改KEY变量:
KEY:<enter key here>
这是您尝试从客户端访问fwknop服务器时将被提示的关键。 出于安全考虑,此密钥应至少为8个字符,并且是字母数字字符的组合,不能为空格。
这些密钥的示例包括:
fBs1(q^rV%)*
mY^&k3#3egT9
b!r3@kPh@3T^
您现在可以启动fwknop服务器:
[spa_server]# /etc/init.d/fwknop start
[ SUCCESSFUL ] fwknop Daemons
敲敲...谁在那里? (水疗客户)
现在,从客户端服务器,我们可以尝试访问fwknop服务器。 在下面的示例中,将1.2.3.4替换为您的spa_client计算机的地址,并将5.6.7.8替换为您的spa_server计算机的地址:
[spa_client]# fwknop -A tcp/22 -a 1.2.3.4 -k 5.6.7.8
[+] Starting fwknop client.
[+] Enter an encryption key. This key must match a key in the file
/etc/fwknop/access.conf on the remote system.
Encryption Key:
...此时输入您在spa_server机器上的/etc/fwknop/access.conf文件中指定的密钥。
[+] Building encrypted single-packet authorization (SPA) message...
[+] Packet fields:
Random data: 9469687736864299
Username: root
Timestamp: 1196458361
Version: 1.8.2
Action: 1 (access mode)
Access: 1.2.3.4,tcp/22
MD5 sum: THfoIDCAPeWZBjoh0JMPaA
[+] Sending 171 byte message to 1.2.3.4 over udp/62201.
您现在只有30秒的窗口通过SSH连接到服务器:
[spa_client]# ssh root@spa_server
root@spa_server's password:
Last login: Fri Nov 30 15:38:12 2007 from spa_client
[root@spa_server ~]#
恭喜! 您已经在服务器和客户端成功实施了fwknop!
请记住,这是fwknop的基本设置之一。 您可以通过修改/etc/fwknop/fwknop.conf来进一步实现GPG密钥,更改端口设置等。 fwknop研究的一个很好的资源是Michael Rash的“Linux防火墙”。 Rash包含了关于fwknop的几个章节,涵盖了理论和实现。 他甚至包括高级设置,任何人都希望真正微调他们的端口碰撞砖的实施!
为您的SSH守护进程实现新的安全层!
下一次我们将介绍PSAD的EnGarde Secure Linux实现 - 在这里,我们将向您介绍如何使用PSAD检测针对服务器的端口扫描!