导航:
- fwknop-server—安装1.0.0
- fwknop-client—安装1.0.1
- fwknop–配置1.0.2
上篇中说了我们如何去安装service、client 端,以及安装中的小问题解决。这里我们一块来讨论下配置吧。
跟上,这会以一个探索的脚步来进行···
整理好情绪,开始了!
开始前我们要先把我们的firewalld防火墙启动起来。
第一步:到我们的server端电脑找到fwknopd.conf 并进行配置
一般情况会在/etc/fwknop/
[root@192 fwknop]# cd /etc/fwknop/ && ls
[root@192 fwknop]# vim fwknopd.conf
拉到最下面,如果有兴趣的小伙伴可以看我一个具体的环境解释(书虫的方式哦,这是地址)
我们需要配置修改几个地方:
PCAP_INTF ens33;
ENABLE_FIREWD_COMMENT_CHECK N;
FIREWALL_EXE /usr/bin/firewall-cmd;
(这里解释一下:因为很多官方都给我们默认选择了不需要了,改一些自己不同的就行了)
注:PCAP_INTF 的名字查看
# ifconfig
显示:
ens33(这里是名字): flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
......
.......
FIREWALL_EXE位置我们可以
# find / -name firewall-cmd
查看一下,找到我们对应的填写上即可
配置好最后:wq 退出
第二步:打开我们的client端配置连接参数
注:root用户下
[root@192 fwknop]# fwknop -A tcp/22,tcp/993 -a 你的本地client地址192.168.1.102 -D 你的本地server地址192.168.1.102 --key-gen --use-hmac --save-rc-stanza
[+] Wrote Rijndael and HMAC keys to rc file: /root/.fwknoprc
[root@192 fwknop]# vim ~/.fwknoprc
[192.168.1.96]
ALLOW_IP 192.168.1.96
ACCESS tcp/22,tcp/993
SPA_SERVER 192.168.1.96
KEY_BASE64 H3EJJXuh6lcgX8wt0pPOFP2e9JdEw5udSSfEkYzi+bk=
HMAC_KEY_BASE64 L8bttFde+b1TldfTBfotA60zmSyQTnZXPJ/od3Uclm5slE2EFDOgDQ36EoCSDPOsuDeT9IZWvlRF/638HnXBqA==
USE_HMAC Y
第三步:将我们的KEY_BASE64、HMAC_KEY_BASE64 复制到server配置上
打开我们server的 /etc/fwknop(第一步所在的目录)
[root@192 fwknop]# vim access.conf
位置拉到最后,找到原本的配置,然后进行修改填充
SOURCE ANY
OPEN_PORTS tcp/22,tcp/993 #对应client端的配置写上这是成功后要打开的端口
EQUIRE_SOURCE_ADDRESS Y
KEY_BASE64 H3EJJXuh6lcgX8wt0pPOFP2e9JdEw5udSSfEkYzi+bk=
HMAC_KEY_BASE64 L8bttFde+b1TldfTBfotA60zmSyQTnZXPJ/od3Uclm5slE2EFDOgDQ36EoCSDPOsuDeT9IZWvlRF/638HnXBqA==
FW_ACCESS_TIMEOUT 240 #有效时间240秒
:wq退出
第五步:运行server端fwknopd服务
[root@192 fwknop]# fwknopd
查看日志:
[root@192 fwknop]# tail /var/log/messages
Dec 12 17:02:26 192 fwknopd[58419]: Added jump rule from chain: PREROUTING to chain: FWKNOP_PREROUTING
Dec 12 17:02:26 192 fwknopd[58419]: Sniffing interface: ens33
Dec 12 17:02:26 192 fwknopd[58419]: PCAP filter is: 'udp port 62201'
Dec 12 17:02:26 192 fwknopd[58419]: Starting fwknopd main event loop.
准备工作已经全部做完
测试
第六步:client敲门
1.切换到client端
# fwknop -n 192.168.1.100(第二步命令的地址--你的server地址)
2.切换到server端
#iptables -nL -line
Chain FWKNOP_INPUT (1 references)
target prot opt source destination
ACCEPT tcp -- 192.168.1.102 0.0.0.0/0 tcp dpt:22 /* _exp_1544608666 */
ACCEPT tcp -- 192.168.1.102 0.0.0.0/0 tcp dpt:4432 /* _exp_1544608666 */
到这里是恭喜你敲门成功!!!后续可以自行关闭相应端口进行敲门检测玩一下了,成功就可以不用看第七步了
友情提供:【server端】关闭端口【client端】再次敲门尝试一下连通ssh22端口吧
【server端】# iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -j DROP
【client端】# ssh root@192.168.1.96
但是博主想告诉你的是: 成功了就恭喜你,不成功没有关系,你现在不一定成功了,不成功不要高兴太早,我们以一个检测的方式来说吧,先说一点你要先按照我的步骤来,我之后告诉你为什么这样,除非你对于防火墙的机制比较清楚,那你就忽略第七步就可以了,自己直接就可以开心的玩了,不行的话看下面的吧。哈哈
第七步:检测下成果吧
1.准备检测环境
接上为例:我们检测的目标是22、4432
端口
【server端192.168.1.96】
1.禁用掉22、4432端口(这里就只禁用一个22,比较明显。大家都有)
注:22端口是ssh端口,你要有心理准备关闭了可就把自己的ssh客户端关门外面了,你要去你的虚拟机或者主机上去操作了
关闭22端口命令(其他端口模仿一下):
# iptables -I INPUT 1 -i ens33 -p tcp --dport 22 -j DROP
ens33是网络名:不知道网络名的去看上一篇文章,本门开头有连接
2.我们去虚拟机终端
fwknopd服务重启
# fwknopd -R
【client192.168.1.102】
我们已经禁用了22端口,我们先来看看我们是一个匿名机器我们来请求一下
# ssh root@192.168.1.96
ssh: connect to host 192.168.1.96 port 22: Connection timed out
我们看到是敲门敲不通的
(可跳过)
使用nmap扫描试一下
#nmap -sS -p 22 192.168.1.96 或 nmap -sS 192.168.1.96 -p 22
Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-13 10:00 CST
Nmap scan report for 192.168.1.96 (192.168.1.96)
Host is up (0.00029s latency).
PORT STATE SERVICE
22/tcp filtered ssh
MAC Address: XX:XX:XX:XX:XX:XX (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds
看到是连不通的
1.敲门试试看
# fwknop -n 192.168.1.96
2.再次连接
SSH连接
ssh root@192.168.1.96
root@192.168.1.96's password:
输入root密码登录
Last login: Thu Dec 13 09:54:08 2018
成功连通没有问题!!!
(可跳过)
查看状态:
[root@192 ~]# nmap -sS 192.168.1.96 -p 22
Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-13 10:05 CST
Nmap scan report for 192.168.1.96 (192.168.1.96)
Host is up (0.00032s latency).
PORT STATE SERVICE
22/tcp open ssh
MAC Address: XX:XX:XX:XX:XX:XX (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
抱着0信任的思想考虑我们去其他电脑或者其他虚拟机终端请求server的ssh22端口
[root@192 ~]# ssh root@192.168.1.96
ssh: connect to host 192.168.1.96 port 22: Connection timed out
依旧如此看到是无法连通的这下我们就放心了
为什么让大家这么步骤走?问题点在于一个防火墙小问题,你在做完第六步的时候不知道你有没有发现,你的一切成果和我都是一样的,但是当你自己真正检测是否可用时候,发现依旧不能连通像这样:
# ssh root@192.168.1.96
ssh: connect to host 192.168.1.96 port 22: Connection timed out
这里有一个点,简单讲下小原理iptables,规则会逐条进行检验,
1.第一条命令是我们的不接受所有连接,那么只有你的电脑自己能连接,当第一条不通过就走第二条
2.这样我们考虑我们的问题,如果我们上来加上22端口不通过,好么,一下22端口的都干死了,不走你的敲门成功添加的规则了
3.思考:把我们的链放到第一个就ok了。
4.既然如此,我们最简单的方式就是:在所有的防火墙不动了之后,再启动我们的fwknopd服务,这样我们的FWKNOP_INPUT链会在第一条,这样就会进行先行检验我们的规则,看是否通过了
5.如果所有都不通过,走下面的22端口禁用策略直接拦在门外了
iptables
这个问题是一个防火墙的问题,可以看我一篇针对于防火墙的简单介绍你就可以完全理解了,对防火墙比较熟悉的朋友也能轻松理解
持续下篇·····
希望防火墙比较熟悉的朋友来交流一下,可以微博私聊我
友情提示命令:
Usage: fwknopd [options]
-a, --access-file - 指定accss配置文件
-c, --config-file - 指定config配置文件备用地址
-f, --foreground - 在前台运行fwknopd(不要成为后台守护进程)。
-i, --interface - 指定监听传入SPA包的接口。
-C, --packet-limit - 当达到这个限制时,限制要处理和退出的候选SPA包的数量。
-d, --digest-file - 指定替代摘要。缓存文件。
-D, --dump-config - 转储当前fwknop配置值。
-K, --kill - 杀死当前正在运行的fwknopd。
-l, --locale - 提供系统默认设置以外的地区设置。
-O, --override-config - 指定一个包含配置项的文件,该文件将覆盖fwknop .conf中的配置项
-p, --pid-file - 指定一个备用fwknopd.pid文件。
-P, --pcap-filter - 指定Berkeley包过滤器语句来覆盖fwknop .conf中的PCAP_FILTER变量。
-R, --restart - 强制当前正在运行的fwknopd重新启动。
--rotate-digest-cache
- 通过将文件重命名为具有-old后缀的相同路径来旋转摘要缓存文件。
-r, --run-dir - 设置路径到本地状态运行目录。
- 通过将摘要缓存文件重命名为“-old”来旋转它,并启动一个新文件。
-S, --status - 显示任何正在运行的fwknopd进程的状态。
-t, --test - 测试模式,处理SPA包,但不做任何防火墙修改。
-U, --udp-server - 设置UDP服务器模式。
-v, --verbose - 设置冗余模式。
--syslog-enable - 即使设置了前台模式,也允许将消息发送到syslog。
-V, --version - 打印版本号。
-A, --afl-fuzzing - 运行在美国模糊Lop (AFL)模糊模式,使明文SPA数据包通过stdin被接受。
-h, --help - 打印此使用消息并退出。
--dump-serv-err-codes - 列出所有服务器错误代码(仅测试套件需要)。
--exit-parse-config - 解析配置文件并退出。
--fault-injection-tag - 启用错误注入标记(仅测试套件需要)。
--pcap-file - 从现有的pcap文件中读取潜在的SPA包。
--pcap-any-direction - 默认情况下,fwknopd处理发送到嗅探接口的数据包,但是这个选项支持处理来自接口的数据包(例如在转发情况下)。
--fw-list - 列出fwknop创建的所有防火墙规则然后退出
--fw-list-all - 列出完整策略中的所有防火墙规则,包括那些与fwknop无关的规则。
--fw-flush - 刷新fwknop创建的所有防火墙规则。
--gpg-home-dir - 指定GPG主目录(这通常在访问中完成。conf文件)。
--gpg-exe - 指定到GPG的路径(这通常在访问中完成。conf文件)。
--sudo-exe - 指定到sudo的路径(默认路径是/usr/bin/sudo)。
--no-firewd-check-support
- 禁用“防火墙cmd…”- c的支持。
--no-ipt-check-support -禁用“iptables -C”支持的测试。