【问题标题】:Creating a bot-like configuration with ejabberd?使用 ejabberd 创建类似机器人的配置?
【发布时间】:2013-05-09 10:06:27
【问题描述】:

如何使用 ejabberd 实现机器人?

我的想法是,在我的 (Debian 7.0 Wheezy) VPS 上,我正在运行 ejabberd,并且我有一个特殊的 bot Jabber 用户,他可以运行的命令集有限。让我们称他为 butler@myvps.foo。

在另一个盒子(比如我的安卓手机)上,我有一个 Jabber 客户端连接到我的帐户,可能是第三方服务器。让我们称之为 me@somewhere.bar。

现在我希望 ejabberd:

  • 只允许一个特定的 Jabber ID,me@somewhere.bar 与之通信 butler@myvps.foo。

  • 将所有输入到与 butler@myvps.foo 聊天的内容传递给 shell 并执行 作为命令,可能在 chrooted 或其他受保护的环境中(例如,使用 特定的受限用户)。 (当然,STDOUT + STDERR 作为回复返回。)

我知道可能存在安全风险,但现在我只想知道这是否可行。

【问题讨论】:

    标签: xmpp ejabberd


    【解决方案1】:

    您可以简单地用任何语言编写一个机器人,然后让它作为客户端连接到 XMPP 服务器。 XMPP client libraries can be found here的列表。

    机器人可以检查它接收到的消息的“发件人”属性中的 JID 以验证身份。通常不可能在 XMPP 中伪造 JID,因为服务器对它们的客户端以及彼此进行身份验证。但实际上,它仅与所使用的身份验证方法一样安全(并且服务器不包含错误)。

    要执行命令并读取结果,PTY 是一个很好的简单解决方案。有多种语言的 PTY 库,包括 PythonRubyLua

    您说得对,安全是一个问题,就像任何系统一样。多年来一直在努力确保 ssh 的安全,但偶尔仍会出现问题。

    值得注意的是,Google 的 XMPP 服务器不支持服务器到服务器连接的加密,因此您的 XMPP 服务器和 Google 之间的网络上的某人将能够看到您的消息,并可能修改和/或伪造它们完全。

    最后,即使他们确实支持服务器到服务器链接的加密...... Google 本身在技术上也有能力像你一样发送消息,而你的手机也将成为一个潜在的弱点。

    隔离目标进程将消除很多安全问题。如果服务器在 Linux 上运行,LXC containers 可能是一个不错的解决方案。

    希望这涵盖了您问题的所有方面!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2010-10-07
      • 2010-10-06
      相关资源
      最近更新 更多