我有一个旧的 Linux 系统,可以通过公共 IP 地址访问。
当您连接到 SSH 端口时,您可以使用任何密码以 root 身份登录。唯一的限制是密码长度至少为 1 个字符。
在(遥远的)过去,当开发此系统时,这是可以的,因为系统始终位于具有其自己的身份验证的拨号调制解调器后面。
几年以来,该系统通过 ADSL 连接并具有公共 IP 地址(无 VPN)......奇迹般地没有人关心 SSH 端口......直到上周......
上周一个中国IP地址通过SSH端口连接,用root账户登录,更改了一些系统设置(包括root密码),然后注销...我可以看到这个,/var/log/messages
我可以通过另一个端口进行检索。
如何为root账户设置真正的密码?
我尝试使用passwd
提供新密码的命令来设置它,但之后我仍然可以使用任何随机密码登录(重启之前和之后)
其中/etc/shadow
关于 root 账户的内容如下:
root:8ZGWAPs9N9EJQ::::::
我/etc/ssh/sshd_config
看到以下行被注释掉了:
#PermitRootLogin yes
由于“是”是默认值,所以我认为这没有什么问题。
有关该系统的一些信息:
登录显示:
BusyBox v1.00-pre9 (2004.07.09-11:06+0000) Built-in shell (ash)
cat /proc/version
得到:
Linux version 2.4.31 (<emailaddress>) (gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)) #4 Thu Sep 22 09:13:06 CEST 2005
我现在关闭了 ADSL 调制解调器防火墙中的 SSH 端口,因此无法再进行远程访问,这给了我一些时间来解决这个问题
我想给 root 账户一个真正的密码,该密码必须在任何 SSH 连接中使用,最好无需重置系统
我相信这是可能的,因为系统上周没有重新启动并且所有进程仍在运行,但我无法再使用任何密码登录 root 帐户。
[编辑]
正如 pingz 所怀疑的,这似乎是nullok
由/etc/pam.d/system-auth
是否可以编辑此文件并加载新设置而不必停止任何正在运行的进程?
节目的第一句台词/etc/pam.d/system-auth
:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
如果我现在nullok
从这个文件中删除它,并且在将来的某个时候系统重新启动,它会nullok
恢复吗,或者我的更改会保留吗?
答案1
有一种方法可以禁用用户密码,即 PAM 中的 nullok 模块。
查看此链接了解更多信息:
http://www.cyberciti.biz/tips/linux-or-unix-disable-null-passwords.html
如果是这种情况,只需更改这个奇怪的配置。
====================================================
对于您的其他问题,对 PAM 配置文件的任何更改都会立即生效,这可能会导致您被错误地锁定在系统之外。因此,RHEL 提供了 authconfig/authconfig-tui 工具来执行此操作,如注释所述。如果您运行它,它将为您重置配置。在运行它之前,请检查 authconfig 手册页。