2013-05-09 84 views
0

如何使用ejabberd实现bot?用ejabberd创建一个bot类配置?

这个想法是,在我的(Debian 7.0 Wheezy)VPS上,我正在运行ejabberd,在那里我有一个特殊的机器人Jabber用户,他可以运行有限的一组命令。让我们称他为[email protected]

在另一台电脑(比如,我的Android手机),我有可能在第三方服务器连接到我的帐户Jabber客户端。我们称之为[email protected]

现在我想ejabberd到:

  • 只允许一个特定的Jabber ID,[email protected]永远与这个 [email protected]通信。

  • 一切都输入到聊天[email protected]传递到壳并执行 作为命令,有可能在一个或chroot的另一受保护的环境(例如,使用一个 特定的受限用户)。 (和标准输出+ STDERR返回的答复,当然。)

我的理解有可能存在安全隐患,但现在我只是想知道这是否要走的路。

回答

1

你可以简单地写在任何语言中的机器人,并把它连接到XMPP服务器作为客户端。清单XMPP client libraries can be found here

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

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

与对任何系统一样,您是对的,安全是一个问题。多年的努力已经使ssh获得了安全,偶尔还会出现问题。

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

最后,即使他们没有支持加密服务器到服务器的链接...谷歌本身在技术上有发送邮件,你的能力,你的手机也将是一个潜在的薄弱点。

隔离目标进程会删除大量的安全问题。如果服务器在Linux上运行,那么LXC containers可能是一个很好的解决方案。

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