使用 ejabberd 创建类似机器人的配置?

Posted

技术标签:

【中文标题】使用 ejabberd 创建类似机器人的配置?【英文标题】:Creating a bot-like configuration with 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 作为回复返回。)

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

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

【讨论】:

以上是关于使用 ejabberd 创建类似机器人的配置?的主要内容,如果未能解决你的问题,请参考以下文章

是否有使用 webhooks 发送节的 ejabberd 模块?

ejabberd - BOSH 模块未启动

禁用ejabberd中的通信[关闭]

记一次机器socket连接数持续增长的问题

如何在 Ejabberd 16.09-4 Debian9 上启用 omemo?

如何创建可快速分发到本地机器的可定制环境?