2011-08-23 106 views
3

我正在编写管理nginx(域,重写等),svn和其他服务的面板。为此,我正在编写将在root上工作的后端(更改nginx配置,重新加载它们,更改用户密码等)以及客户端(控制台客户端和Web应用程序)。使用python后端的客户端授权

应用程式适用于Unix套接字,和我做了非常简单的协议吧:

\0\0\0\0user\0key\0module\0command\0data\0 

好了,这是很简单的。客户端发送命令和数据到后端,例如:

\0\0\0\0morsik\0\0nginx\0add_domain\0www.domain.tld something\0 

问题是,如何验证用户真的是morsik?对于Web界面,我不必 - 网页有自己的授权,所以我可以发送一些密钥,这将适用于任何人都不知道的用户。 问题是如果有人有权访问ssh。然后他可以编写简单的客户端来欺骗用户名,然后他可以更改其他用户配置。

那么,我怎样才能为用户做出正确的授权?

+1

你可能想学习书“应用密码学”,由布鲁斯,第一。很有可能你必须使用同一个密钥的HMAC。 – Keith

+0

HMAC看起来很有趣,但如果密钥会被公众所知,那么欺骗数据仍然存在。因为这是python脚本,所以必须公开...或者有其他方法来存储密钥? – morsik

+0

读这本书。 ;-) – Keith

回答

1

不要重新发明轮子。 ;)我发现这个讨论有启发性:

+0

这对我没有多大帮助。我知道在python中使用unix auth。问题是如果数据包没有输入密码而没有被破坏(如果sb登录到ssh,他可能不想输入密码......),如何进行认证。 – morsik

+0

第一篇链接的文章恰好讨论了这一点。 –

+0

根据您的第一个链接: >>“在这种情况下,客户端程序 - ”取消“或”lp“,或任何使用libcups作为其打印对话框的程序,例如Evince文档查看器 - 可以传递其UID(数字ID对应于用户名)通过域套接字连接到服务器 所以UID可能在这里被欺骗。“<<或者我错了?这里有什么安全措施来防止UID /用户名? – morsik

相关问题