Tur*_*lar 5 linux ssh shell passwords
我有一台主要用作邮件服务器的机器:
$ uname -a Linux myhost.com 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
我希望那些实际上没有登录机器(但使用它来验证和获取邮件)的用户能够更改自己的密码。如果我将 /usr/bin/passwd 放在 /etc/shells 中(所以 passwd 命令是一个有效的 shell),并为用户更改 shell 条目,如下所示:
someuser:x:557:557:Some User:/home/someuser:/usr/bin/passwd
Run Code Online (Sandbox Code Playgroud)
然后,如果他们通过 ssh 连接到主机,他们会得到如下信息:
$ ssh myhost.com
someuser@myhost.com 的密码:<输入他们当前的密码>
上次登录: 2013 年 9 月 25 日星期三 16:07:35 来自 some-ip
更改用户 someuser 的密码。
更改某个用户的密码。
(电流)的UNIX密码:<键入他们的电流再次密码>
新密码:<输入新密码>
重新输入新密码:<输入新密码再次>
-passwd:所有身份验证令牌成功更新。
与 myhost.com 的连接已关闭。
效果很好……但是它安全吗?他们是否有某种方法可以利用这一点并闯入真正的外壳?
谢谢。
PS 在我的环境中,假设用户已经拥有 ssh 是合理的——但是如果有一个简单的“更好”的密码更改替代方法,我想听听:)
允许众所周知的程序 (ssh) 远程访问 suid 程序原则上是不安全的。passwd 设置用户id,即提升权限。应谨慎使用 ssh,因为它还将防火墙管理委托给远程用户(端口转发等)。如果 sshd 是您唯一的远程访问选项,您只有一台服务器,并且您坚持使用该服务器作为更改密码和提供邮件服务的手段,那么限制 sshd 和邮件的所有选项,并通过删除来强化其余部分除了您需要的基本服务之外的一切:邮件和密码更改。
passwd 的源代码已经受到审查,但是您知道 Ken Thompson(unix 的创建者)在 C 编译器中所做的经典登录 hack 吗?阅读肯的《关于信任信任的反思》来决定信任谁。
归档时间: |
|
查看次数: |
1531 次 |
最近记录: |