linux跳板机必须采用lshell多层防护:安装配置后禁用scp/sftp、设命令白名单与路径锁定、启用审计日志,再通过pam限制组权限、ssh forcecommand兜底,禁用密码登录。

配置Linux跳板机使用受限Shell,不是简单改个/etc/passwd里的shell路径就能生效的事。它必须是多层控制的组合:选对工具、锁死执行路径、禁用逃逸入口、记录所有操作,并切断底层绕过可能。单靠rbash或lshell任一环节,都容易被绕过。
优先选用 lshell 而非 rbash 或 rssh
rbash 依赖环境变量(如PATH、SHELL)和用户配置文件(如.bashrc)生效,一旦被污染或误配就失效;rssh 已停止维护、不兼容新系统、功能僵硬且存在已知漏洞,官方源中基本移除。生产跳板机应首选 lshell——它支持按用户/组差异化策略、命令白名单、特殊字符过滤、完整命令日志,且配置独立于用户环境。
- RHEL/CentOS:运行
yum install lshell;Ubuntu/Debian:运行apt install lshell - 确认安装路径:
which lshell(通常为/usr/bin/lshell),并确保该路径已加入/etc/shells(否则chsh或SSH登录会拒绝) - 测试可用性:
chsh -s /usr/bin/lshell $USER,新开终端登录,验证能否进入且基础命令(如ls、pwd)可执行
精细化配置 /etc/lshell/lshell.conf
核心原则是“只开必需,其余全禁”。默认配置极宽松,必须手动收紧:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 全局禁用高危能力:
scp: 0、sftp: 0、overssh: [](防rsync -e bash等逃逸) - 命令白名单严格限定:
allowed: ['ls', 'pwd', 'cd', 'cat', 'tail', 'journalctl', 'sudo']—— 不含bash、sh、python、perl等解释器 - 禁止命令拼接与变量展开:
forbidden: [';', '&', '|', '`', '$(', '\', '!', '*'] - 路径锁定仅限运维目录:
path: ['/home', '/etc', '/var/log', '/opt/scripts'],并显式设置env_path: ':/usr/bin:/bin'(冒号开头表示清空原有PATH) - 启用审计日志:
logpath: /var/log/lshell/,loglevel: 2(记录每条命令及参数)
绑定用户组 + PAM 层拦截,堵住常见绕过路径
仅改 shell 字段无法防御sudo -u user /bin/bash、ssh user@host command=或ssh -o "RemoteCommand=/bin/bash" user@host等绕过方式。必须叠加访问控制:
- 创建专用组(如
jumpuser),将跳板用户加入:usermod -aG jumpuser ops - 在
/etc/lshell/lshell.conf中按组配置策略,例如:[jumpuser]段下定义专属allowed和path - 在
/etc/pam.d/system-auth中添加PAM规则,禁止该组用户启动交互式shell:auth [success=ok default=bad] pam_succeed_if.so user ingroup jumpuserauth [default=die] pam_deny.so - 确保跳板用户家目录权限为
750,且.bashrc、.profile等由root拥有、不可写
配合 SSH 强制命令(ForceCommand)作为兜底机制
这是纵深防御中最关键的一环——即使lshell配置出错或被绕过,SSH层仍能拦截并重定向到可控逻辑:
- 在
/etc/ssh/sshd_config中为跳板用户指定:Match User opsForceCommand /usr/local/bin/jump-wrapper.sh -
jump-wrapper.sh需校验来源IP、目标主机白名单、超时时间,并调用ssh -o StrictHostKeyChecking=yes user@target完成跳转 - 确保
UsePAM yes启用,LogLevel VERBOSE开启详细日志,并将日志转发至SIEM系统 - 禁用密码登录:
PasswordAuthentication no,仅允许密钥认证










