突然间(阅读:没有更改任何参数)我的 netbsd 虚拟机开始运行异常。症状与 ssh 隧道有关。
我从我的笔记本电脑启动:
$ ssh -L 7000:localhost:7000 user@host -N -v
Run Code Online (Sandbox Code Playgroud)
然后,在另一个外壳中:
$ irssi -c localhost -p 7000
Run Code Online (Sandbox Code Playgroud)
ssh 调试说:
debug1: Connection to port 7000 forwarding to localhost port 7000 requested.
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip: listening port 7000 for localhost port 7000, connect from 127.0.0.1 port 53954, nchannels 3
Run Code Online (Sandbox Code Playgroud)
我还尝试使用 localhost:80 连接到(远程)Web 服务器,结果相同。
远程主机运行 NetBSD:
bash-4.2# uname -a
NetBSD host 5.1_STABLE NetBSD 5.1_STABLE (XEN3PAE_DOMU) …Run Code Online (Sandbox Code Playgroud) 经过几个月的疏忽、电子邮件火焰和管理斗争,我们当前的系统管理员被解雇并将“服务器凭据”交给我。此类凭据仅包含 root 密码,仅此而已:没有程序、没有文档、没有提示,什么也没有。
我的问题是:假设他留下了诱杀装置,我如何在尽可能少的停机时间的情况下优雅地接管服务器?
以下是详细信息:
假设两台服务器都已打补丁并且是最新的,所以除非有充分的理由(即可以向高层管理人员解释),否则我宁愿不尝试入侵。
生产服务器托管了一些网站(标准的 apache-php-mysql)、一个 LDAP 服务器、一个 ZIMBRA 电子邮件套件/服务器,据我所知还有一些正在运行的 vmware 工作站。不知道里面发生了什么。一个可能是 LDAP 主机,但这是一个疯狂的猜测。
内部服务器有一个内部 wiki/cms、一个从生产服务器复制凭据的 LDAP 从属服务器、更多的 vmware 工作站和正在运行的备份。
我可以去服务器场的管理员,指向服务器,告诉他们“请sudo关闭该服务器”,以单用户模式登录并按照我的方式进行。内部服务器也一样。尽管如此,这将意味着停机,高层管理人员不高兴,老系统管理员回击我说'看到了吗?你不能做我的工作和其他麻烦事,最重要的是我可能不得不失去几周的无薪时间。
在频谱的另一端,我可以只以 root 身份登录并通过服务器来尝试了解正在发生的事情。所有引发意外的风险都被抛在脑后。
我正在寻找中间的解决方案:尝试让一切保持原样运行,同时了解正在发生的事情和方式,最重要的是避免触发任何遗留的陷阱。
你有什么建议?
到目前为止,我考虑过使用内部服务器“练习”,断开网络连接,使用 live cd 重新启动,将根文件系统转储到 USB 驱动器中,然后将其加载到断开连接的隔离虚拟机上,以了解以前的系统管理员方式思考(a-la '了解你的敌人')。可以在生产服务器上实现同样的壮举,但完整的转储会引起人们的注意。也许我可以以 root 用户身份登录,检查 crontab,检查 .profile 中启动的任何命令,转储 lastlog,以及任何想到的。
这就是我在这里的原因。任何提示,无论多么小,都将不胜感激。
时间也是一个问题:可能会在几个小时或几周内触发。感觉就像那些糟糕的好莱坞电影之一,不是吗?
我需要绑定到 OpenLDAP 服务器来对用户进行身份验证,但我不希望这个低权限或“委派管理员”能够看到比严格必要的更多的属性。
如何使用白名单减少绑定用户可以看到的属性?哪些属性是对用户进行身份验证所必需的?
例如,这个特定的绑定用户不需要查看NTPassword,我想其他属性,如主目录等。
这是我到目前为止所做的:
我已禁用匿名绑定:
# disable anon bind
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon
dn: cn=config
changetype: modify
add: olcRequires
olcRequires: authc
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc
Run Code Online (Sandbox Code Playgroud)我创建了一个“应用程序”OU 和一个“gitlab”用户:
# file: applications.ldif
dn: ou=Applications,dc=example,dc=com
objectclass: top
objectClass: organizationalunit
ou: Applications
dn: cn=gitlab,ou=Applications,dc=example,dc=com
cn: gitlab
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {CRYPT}.....
Run Code Online (Sandbox Code Playgroud)要创建用户,我使用了 LDAP 管理员用户:
ldapadd -xvvv -f applications.ldif -D 'cn=admin,dc=example,dc=com' -W
Run Code Online (Sandbox Code Playgroud)为了限制“gitlab”权限,我试过这个:
# file: give-applications-access.ldif
dn: cn=config
changetype: modify
# allow …Run Code Online (Sandbox Code Playgroud)我们以前的系统管理员从全职变成了“按需”,给我留下了管理部分本地网络的“任务”。我的工作之一是更改用户的密码(除非出于某种原因,他们无法自己更改 LDAP 管理员密码)。据我所知,有一个主 LDAP 服务器用于对无数帐户的用户进行身份验证:ssh、redmine、samba、zimbra 等。
他指示我更改用户密码的程序包括:
因为我没有 Windows,所以发现将 VM 用于更改 LDAP 的密码是很愚蠢的。我自己也很固执,我拒绝相信这是唯一的出路。我不熟悉 LDAP,但我几乎可以肯定它从未打算以这种方式使用!
我的问题:你推荐什么工具来完成这项工作?
我为 OSX 尝试了 LDAPManager,但它没有“更改密码”按钮。我尝试更改 SambaPassword 字段(和其他..)但无济于事。这位前系统管理员说他已经尝试了所有可用的工具,并且只有 windows 版本允许您设置密码。[在此处插入WTF]
到目前为止我尝试了什么:
phpldapadmin 安装在服务器上,但我认为它配置错误,因为一旦我登录,我什至看不到正确的域名ldapadmin 在酒下,但它非常不稳定 ldappasswd 但无法理解发生了什么,它总是给我:
请输入您的密码:ldap_sasl_interactive_bind_s:凭据无效 (49)
无论我尝试什么。
现在,LDAP 对我来说有点黑魔法。几年前我在做系统管理员工作时,我从来没有配置过。现在我不明白我是否做错了什么,服务器是否配置不当,或者更改用户网络密码的唯一方法是否真的是依赖 Windows 专用工具(有点拒绝相信)。
所以我问大家:我该怎么办?而且,有必要这么复杂吗?我们这里只有 10 个人,为这样一个无法使用的系统浪费所有时间和精力真的有意义吗?
注意:我知道有脚本每隔几分钟运行一次“以保持 LDAP 密码和其他密码同步”,但我没有服务器的 root 访问权限,也不会在任何时候获得。
ldap ×2
connection ×1
netbsd ×1
networking ×1
openldap ×1
password ×1
security ×1
ssh ×1
ubuntu ×1