不应直接改默认shell为rssh,因其已停止维护、兼容性差、功能受限且存在漏洞;应改用rbash、lshell或ssh forcecommand组合加固,并同步禁用密码登录、限制ip、挂载noexec家目录等。

直接把默认 Shell 改成 rssh 并不能真正提升跳板机安全,反而容易导致服务异常甚至系统不可用。rssh 是一个早已停止维护、功能严重受限且与现代 Linux 发行版兼容性差的旧工具,RHEL/CentOS 8+ 和大多数主流发行版已不再提供 rssh 包,也不推荐用于生产环境。
为什么不该用 rssh
rssh 仅支持极少数命令(如 scp、sftp、rsync、cvs、rdist),不支持 shell 登录,也不能执行任何交互式命令;它无法处理 systemd 用户会话、PAM 认证链或 SELinux 上下文,且对 SSH 的 command=、ForceCommand 或 AuthorizedKeysCommand 等机制无感知。更重要的是,rssh 本身存在已知漏洞,长期无更新,已被上游社区弃用。
真正有效的替代方案
跳板机的核心目标是:允许可控的命令执行(如运维跳转、文件传输),同时杜绝任意命令执行和横向移动。应组合使用以下三层机制:
-
用
rbash(受限 Bash)替代 rssh:它是 Bash 官方支持的受限模式,启用简单(usermod -s /bin/rbash username),配合PATH锁定、禁用 cd/eval/export 等内置命令、清空ENV变量,可快速构建轻量级受限环境 -
用
lshell做精细化控制:支持白名单命令、禁用特殊字符(;&|)、限制路径、配置别名、启用日志审计;适合需要为不同用户组定制策略的跳板机 -
用 SSH 强制命令(
ForceCommand)兜底:在/etc/ssh/sshd_config中为跳板用户指定ForceCommand /usr/local/bin/jump-wrapper.sh,该脚本校验来源 IP、目标主机白名单、超时时间,并调用ssh -o StrictHostKeyChecking=yes user@host跳转——所有连接行为可记录、可拦截、不可绕过
关键加固点(必须同步做)
单设受限 Shell 不够,跳板机还需满足以下条件才真正安全:
- 所有跳板用户禁止密码登录,只允许带 passphrase 的 Ed25519 密钥认证
- SSH 配置中启用
UsePAM yes,并配置pam_access.so限制登录源 IP 段(如仅允许运维网段) - 跳板用户主目录挂载为
noexec,nosuid,nodev,且家目录权限为750,.ssh为700 - 禁用所有非必要服务(
rsh、rlogin、telnet、ftp),确保sshd是唯一远程入口 - 开启
LogLevel VERBOSE并将日志转发至集中 SIEM,记录每次ForceCommand执行的完整参数
一个可用的 lshell 配置示例
适用于 RHEL 8+/CentOS Stream:
/etc/lshell.conf
[global]
logpath: /var/log/lshell/
loglevel: 2
[admin-jump]
allowed: ['ssh', 'scp', 'sftp', 'ls', 'pwd', 'exit']
forbidden: [';', '&', '|', '`', '$(', '\', 'cd', 'export', 'env']
warning_counter: 1
timer: 300
path: ['/home/jumpuser/.ssh', '/tmp', '/var/log']
scp: 1
sftp: 1
overssh: ['ssh', 'scp', 'sftp']
然后设置用户:usermod -s /usr/bin/lshell jumpuser,并确保 /usr/bin/lshell 已写入 /etc/shells。











