Unix 对ps隐藏参数
我想对其他用户隐藏/伪装我的ssh命令 例如:Unix 对ps隐藏参数,unix,command-line,Unix,Command Line,我想对其他用户隐藏/伪装我的ssh命令 例如: ssh user@host -i /my/private/key 不幸的是,这将出现在ps列表中,其他用户将能够看到我正在使用的私钥文件。有办法解决这个问题吗 (他们以与我相同的用户身份登录)不允许他们知道私钥文件的位置并不是什么安全功能-他们真的不应该拥有对它的读取权限,所以他们是否知道它在哪里并不重要。一般来说,如果您可以控制应用程序的源代码,那么您可以覆盖包含命令行参数的内存位置,这样您就可以将它们修改为“无害的” strncpy(argv
ssh user@host -i /my/private/key
不幸的是,这将出现在ps列表中,其他用户将能够看到我正在使用的私钥文件。有办法解决这个问题吗
(他们以与我相同的用户身份登录)不允许他们知道私钥文件的位置并不是什么安全功能-他们真的不应该拥有对它的读取权限,所以他们是否知道它在哪里并不重要。一般来说,如果您可以控制应用程序的源代码,那么您可以覆盖包含命令行参数的内存位置,这样您就可以将它们修改为“无害的”
strncpy(argv[0], "mynewcmdlinehere", strlen(argv[0]));
不知道其他Unice,抱歉。隐藏命令行需要一个脚本,所以它是Catch-22,因为具有相同用户的其他ppl将有权访问该脚本
解决方案非常简单:使用带有密码短语的键。如果他们以您的身份登录,您基本上无法阻止他们学习这些信息。如果您在Linux上,他们可以访问您的/proc条目,并且可以轻松地了解这些信息 他们还可以:
- 删除所有文件
- 以你的名义发送邮件侮辱你公司的首席执行官
- 访问所有文件和命令行历史记录(如果有)
- 无数其他事情
这不是保护自己的可行方法。您需要首先解决相同的用户问题。从我的记忆中,我记得很久以前做过类似的事情 首先,创建一个名为ps的shell脚本,它运行ps并将grep除包含ssh(或匹配的内容)的行之外的所有行,并将其放在一个安全的位置(~/bin/ps) 将~/bin/添加到您的路径中,作为第一个要搜索的位置 当然,他们仍然可以显式地使用/usr/bin/ps(或其位置所在的任何地方)
作为一个警告,这都是从内存,我没有一个Unix的盒子来测试它。。。抱歉即使您隐藏了命令行,用户也可以运行lsof来查看ssh进程打开的所有文件,其中包括标识文件。如果隐藏命令行确实是最终目标,那么您可以启动一个密钥代理,将标识加载到代理中,然后使用该代理进行ssh。代理使用的套接字的路径由环境变量控制
不过,这绝不是安全问题。Pax是对的,“以同一用户身份登录”问题才是真正应该解决的问题。停止使用其他人的帐户。;) 您可以通过由0700保护的~/.ssh/config文件设置私钥。 下面是~/.ssh/config的示例:
Host myhost.com
IdentityFile /home/maxcohan/.ssh/github.com.id_rsa
即使在使用带有密码短语的密钥时,以同一用户身份运行的另一个进程也可以从ssh代理或ssh进程中读取密码短语和/或解密的密钥。没有针对使用相同uid运行的进程的安全措施。这不会阻止其他“用户”(出于未知的错误原因使用相同uid的用户)直接使用原始“ps”——也不可能阻止。注意:如果不想共享相同的机密,则不应共享相同的登录ID。用户ID是针对个人的,而不是针对团体的。他说每个人都使用相同的用户帐户。chmod不起作用,我不知道。很容易。非常感谢。我在linux上试过,但ps仍然显示
a.out
。我错过什么了吗?