我们希望解决业务问题,即如何在远程 FTP 服务器(注意:z/OS)上安排自动密码更新,在密码过期之前,我们没有管理控制权。例如,每月一次更新用户 JDoe 的密码,包括本地更新和远程 FTP 服务器 ftp.abc.com 更新。
我们的业务流程需要使用协议 FTPS 来传输文件到远程 FTP 服务器(注:z/OS)。一个单独的组织管理这个远程 FTP 服务器,为我们的团队提供用户帐户,但没有服务器级管理控制。FTP 服务器策略会在一段时间后自动使用户帐户密码过期。发生这种情况时,FTP 服务器工作人员会要求与指定帐户绑定的人员致电其 FTP 服务器帮助台,以验证其身份。验证成功后,FTP 服务器帮助台工作人员会重置密码,要求用户在下次登录时选择新密码。FTP 服务器允许用户通过命令行重置密码,方法是将密码设置为字符串“oldpw/newpw/newpw”;随后,用户仅使用“newpw”登录。
FTP 服务器管理员不会将 FTP 用户密码设置为永不过期。
几年前,一位现已退休的团队成员创建了一个内部应用程序来执行此任务,使用 Rebex 提供的 FTPS 功能。根据资源限制,我们更希望找到一种无需内部维护的解决方案。注意:如果可能的话;如果内部维护是可行的方法,那就这样做吧。
我们怎样才能做得更好?
答案1
背景
每个 FTP 服务器实现决定是否/如何调用访问控制,根据文件传输协议 (FTP) 技术规范RFC 959:
2.2. TERMINOLOGY ... access controls Access controls define users' access privileges to the use of a system, and to the files in that system. Access controls are necessary to prevent unauthorized or accidental use of files. It is the prerogative of a server-FTP process to invoke access controls.
自从密码策略代表一种访问控制形式,并且 RFC 959 没有指定密码重置机制,因此可以合理地得出以下结论每个 FTP 服务器实现决定是否/如何支持 FTP 客户端发起的密码重置。
实际上,这代表我们看到的:
某些服务器(例如 Titan FTP 服务器)支持 SITE PSWD 命令:
SITE PSWD "<old_password>" "<new_password>"
其他服务器,例如 WS_FTP Server,支持 CPWD 命令:
CPWD <new_password> Yet another
变体是:
SITE CPWD <new_password>
IBM Z/OS FTP 服务器密码重置机制
IBM z/OS FTP 服务器扩展文件传输协议 (FTP) 命令“经过",授予 FTP 用户通过 FTP 客户端启动密码更改的权限。
具体来说,在 FTP 客户端字段“密码”中输入“oldpass/newpass/newpass”(分别用实际的旧密码和新密码替换“oldpass”和“newpass”,保留正斜杠分隔符)。成功登录后,这将触发 FTP 服务器随后在远程服务器上更改 FTP 用户密码。后续登录仅要求 FTP 用户提供新密码。存在其他限制;请参阅 IBM FTP 命令“经过”文档以了解完整详细信息。
自动重置 IBM Z/OS 密码
自动化依赖于 FTP 服务器密码重置机制和适合自动化的 FTP 客户端。
我们目前使用 Ipswitch WS_FTP Professional Client v12:
ONERROR GOTO end1 ;(Goes to the end1 label and ends the script)
TRACE SCREEN ;(sends a trace of the script to the screen - you can modify this line to point to a trace files so that any errors can be viewed after the script is run)
LOG SCREEN ;(sends the log file to the screen you can modify this line to point to a trace files so that any errors can be viewed after the script is run)
USER test ;(username command)
PASS oldpw/newpw/newpw ;(password command)
CONNECT 127.0.0.1 21 ;(connects to the remote site)
CLOSE ;(closes the connection)
LABEL end1