我想build立一个非常简单的基于PHP的基于Web的控制面板来添加和删除用户,并添加和删除/从我的linode vps(Ubuntu 8.04 LTS)的nginxconfiguration文件的部分。
根据基于Web的控制面板的input,以root身份执行命令最安全的方法是什么?
我不喜欢以root身份运行PHP(即使在IP桌面防火墙后),原因很明显。
build议欢迎。 它必须是可能的,因为几个商业(和我的需要臃肿)控制面板提供类似的function。
谢谢
无论你做什么,它总会是一个可能的安全漏洞。
一些build议:
上述内容似乎没有比以“root”方式运行“控制面板”更安全(绝对不是简单的)。 而大多数“控制面板”软件包(如webmin )完全绕过这一切,并以root身份运行。
为Web服务器运行的用户创build一个sudo规则,因此它只能运行特定的命令。 例如,要编辑一个文件,您可以让Web服务器在一个目录中复制一个目录,并且只能由Web服务器写入(这样恶意的本地用户就不能在中间进程中进行更改),并且有一个sudo规则将编辑的文件复制到位。 您可以lockingsudo规则,以便只能处理具有特定参数的那些命令。
此外,请确保您正在对用户进行身份validation,并确保您清理了用户的任何input,以阻止任何shell元字符或类似内容。例如,在添加用户时,您可能会validationinput是否在最大长度内只包含字母和数字。 使用sudo可以防止大部分事情,但多层保护是好的。 用户input不可能太偏执。 ;)
或者只安装Webmin。 🙂
在Python中写一个CGI脚本,我想这可能更容易。 尽pipe如Massimo所言,安全性要高得多。
我认为你可以把这些项目结合起来,达到很好的安全性:
另外,虽然我更喜欢上面的方法,但我有一个客户端,简单地将操作转储到文件,然后用脚本处理这些操作。 脚本每5分钟通过cron运行。
这需要公共访问吗? 如果没有,使用IPtables和Apache自己的Authconfig来防止滥用。
有cPannel和WebMin这样做,他们也是臭名昭着的不安全。 黑客攻击造成的后果也非常严重,你会丢失整个系统,当你被黑客入侵时你将不得不重新安装。
就像你不想使用telnet一样,你不想使用http。 确保你使用HTTPS,并购买一个真正的证书,毕竟把你的root密码通过networking是一个严重的错误,你想确保它去正确的服务器。
编辑:你可以在chroot中运行cPannel,所以即使它被破坏,你也可以做一个新的chroot。 它也是一个填充监狱,可以让你确切地定义根访问。
你可以将这些文件符号链接到一个web-root文件夹,半安全的htaccess(在你的php auth之上),编写一个脚本来改变它。然后你只需要在文件改变的时候重新启动nginx进程。
http://www.cyberciti.biz/faq/freebsd-configure-nginx-php-fastcgi-server/
你可以使用类似下面的内容来监视变化,当他们改变(发生变化)时向你发送电子邮件,并通过脚本重新启动nginx进程。
http://inotify-tools.sourceforge.net/
当你可以通过cron每分钟检测到它时,可能会过度杀伤..
想法1:使用木偶将更改引导到您的configuration文件。
如果您需要编辑这些文件,请尝试:创build一个编辑它自己的本地副本的PHP脚本。 然后这被检入到一个本地的SVN仓库。 然后使用svn-externals,你必须做的唯一的事情就是在nginxconfiguration文件(当然你已经签入了SVN)和你的设置中进行svn update
。
更新脚本可以在cron作业上运行。