禅达啊 2024-06-05 10:08 采纳率: 0%
浏览 14
已结题

单包授权fwknop的使用

请教一下fwknop的两个问题,我的webserver和spaserver部署在统一局域网,有什么办法让不在该局域网的客户机能够成功单包授权吗?还有客户端生成密钥文件时,一定要指定客户端IP吗?
补充:webserver与spaserver是同一内网上的两台机器,spaserver同时作为webserver的反向代理,同时部署在公网上,我想达成的效果是客户机可由任意网络对spaserver进行敲门访问,并且能否实现将该客户机生成的配置拿到其他客户机进行使用

  • 写回答

25条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-05 10:08
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    要解决您的问题,首先我们需要了解fwknop的基本概念。FWKnop是一个用于NAT穿透的安全工具,它允许外部主机通过发送特定的UDP数据包到防火墙(通常是内网服务器的端口)来临时打开防火墙上的端口。这通常用于远程管理目的,比如SSH访问。

    对于您的第一个问题,如何让不在同一局域网的客户机能够成功进行单包授权,您可以通过以下几个步骤实现:

    1. 在Web server上配置fwknopd服务。
    2. 在路由器上设置端口转发规则。
    3. 客户端生成密钥并配置fwknop客户端。

    以下是详细的步骤:

    步骤1:在Web server上安装和配置fwknopd

    确保Web server上已经安装了fwknopd。如果没有,可以使用以下命令(基于Debian/Ubuntu系统)进行安装:

    sudo apt-get update
    sudo apt-get install fwknopd
    

    然后编辑/etc/fwknop/fwknopd.conf文件,添加一个新的策略。例如,为端口80创建一个策略:

    [Policy_1]
    Command = /usr/bin/service apache2 restart
    Port = 80
    Protocol = tcp
    AllowedHosts = *
    

    保存并退出后,启动fwknopd服务:

    sudo service fwknopd start
    

    步骤2:在路由器上设置端口转发规则

    在您的路由器上,将公网端口(例如,你可以选择56789)映射到内部网络中的Web server的端口(80)。具体操作取决于您的路由器型号,通常可以在路由器的管理界面找到“端口转发”或“虚拟服务器”选项。

    步骤3:在客户端生成密钥并配置fwknop

    在客户端机器上,同样需要安装fwknop。然后使用以下命令生成密钥文件,并提供Web server的公共IP地址以及之前定义的策略名:

    fwknop-genkey -H <public_ip_of_web_server> -P Policy_1 > client_key_file.key
    

    接下来,配置fwknop客户端。安装完成后,运行以下命令以连接到Web server并执行策略中的命令:

    fwknop-client -H <public_ip_of_web_server> -P Policy_1 -f client_key_file.key
    

    这样,当客户端执行上述命令时,会向Web server发送一个UDP数据包,触发策略中定义的服务重启。

    至于您的第二个问题,客户端生成密钥文件时,不一定非得指定客户端IP。在上面的示例中,我们没有指定客户端IP,而是使用了*作为通配符,这意味着任何主机都可以使用这个密钥来触发策略。然而,为了提高安全性,您可以将AllowedHosts字段设置为允许的特定IP列表。例如:

    [Policy_1]
    Command = /usr/bin/service apache2 restart
    Port = 80
    Protocol = tcp
    AllowedHosts = 192.168.1.100,192.168.1.101
    

    在这个例子中,只有来自192.168.1.100和192.168.1.101的请求会被接受。

    注意:在实际生产环境中,为了安全考虑,建议使用SSL/TLS加密通信,并且限制密钥文件的权限,仅允许被信任的用户访问。同时,定期更换密钥也是一个好的实践。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 修改了问题 6月5日
  • 创建了问题 6月5日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画