密码学敲门:防止对特定的网络服务进行探测和扫描 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
testcaoy7
V2EX    奇思妙想

密码学敲门:防止对特定的网络服务进行探测和扫描

  •  
  •   testcaoy7 2023-08-10 10:42:13 +08:00 1846 次点击
    这是一个创建于 862 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在逛 Arch Wiki 的时候(虽然我不是 Arch 用户),看到了一个有意思的 Topic:Port Knocking

    然后文章的最底下提到了一个叫 fwknopd 的程序,它可以实现基于发送单个数据包,完成用户身份认证,并让防火墙自动开放端口

    然后很巧的是,这个程序 Ubuntu/Debian 都有打包,用 apt 安装就是了,于是乎就拿来玩一下,以下是过程:

    1 、在客户端执行:fwknop -D 11.22.33.44 -k --use-hmac --save-rc-stanza
    -D ,即服务器地址,可以是域名,也可以是 ip
    -k ,生成密钥
    --use-hmac ,生成消息认证码
    --save-rc-stanza ,保存参数到配置文件(.fwknoprc )

    2 、在服务器上编辑/etc/fwknop/access.conf 文件
    首先在文件靠近底部的地方有填写密钥和消息认证码的地方,把客户端刚刚生成的 BASE64 编码的密钥和 HMAC 都填写进去;然后在下面再加一行 FW_ACCESS_TIMEOUT 3600;(注意;符号不要漏掉),不加的话,默认敲门后只开门 30 秒

    3 、在服务器上编辑/etc/fwknop/fwknopd.conf 文件
    在文件的末尾加上 PCAP_INTF ens5; 这是设置监听的网卡,如果要保护服务的网卡不是 eth0 ,则要加

    4 、配置防火墙默认丢弃数据包(这里要保护的协议/端口是 tcp/443 )
    iptables -I INPUT 1 -i ens5 -p tcp --dport 443 -j DROP
    iptables -I INPUT 1 -i ens5 -p tcp --dport 443 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    5 、在服务器运行 fwknop 服务器( fwknopd ),可以用 fwknopd -S 来检查服务器是否已运行

    6 、敲门前,在客户端运行 nmap -sS -p 443 11.22.33.44 ,由于没有敲门,结果应该是 filtered

    7 、敲门,在客户端运行 fwknop -n 11.22.33.44 -A tcp/443 -s
    -n 查询.fwknoprc 文件中的主机名
    -A 要访问的协议和端口
    -s 告诉服务器在敲门成功的情况下为敲门数据包的来源地址开门

    敲了门之后运行在 11.22.33.44 ,tcp/443 上的服务应该可以被正常访问了,按照之前的设置,3600 秒之后需要重新敲门,所以可以用 crontab 每小时敲门

    fwknop 默认使用 UDP/62201 进行敲门,可以配置为其他协议( tcp, tcp_raw_socket, icmp ),以及其他端口,具体可以看 manpage

    这里需要特别说明,敲门时指定的参数-s 相当于告诉服务器,只要身份核验通过,就为敲门数据包的来源地址放行,方便,但可以被 MiTM 攻击,当很清楚自己的出口 ip 的时候,应该将-s 参数替换为 -a <自己的公网 ip>
    2 条回复    2023-08-11 01:37:15 +08:00
    iqoo
        1
    iqoo  
       2023-08-10 22:45:13 +08:00
    其实都不用客户端命令,Web 版都可以实现: https://www.etherdream.com/port-knocking/
    azio7
        2
    azio7  
       2023-08-11 01:37:15 +08:00
    很老的技术了,几年在一本旧书上见过
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2707 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 02:30 PVG 10:30 LAX 18:30 JFK 21:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86