配置Linux跳板机使用受限Shell的核心目标是建立轻量、可控、可审计的操作入口,而非绝对隔离;它需配合SSH强化、路径收束、日志审计与密钥管控等多重措施,方能有效降低误操作和初级横向移动风险。

配置Linux跳板机使用受限Shell,核心目标不是追求绝对隔离,而是建立一层轻量、可控、可审计的操作入口。它无法替代网络层隔离或权限精细化管理,但能有效降低误操作风险和初级横向移动可能。关键在“限制明确、路径收窄、行为可溯”。
选择合适受限Shell类型
不要只盯着rbash。它基础但脆弱,很多命令(如vim、less、python)可直接逃逸。推荐组合策略:
-
日常运维人员用 lshell:配置细粒度命令白名单、禁用符号(
;、|、&)、关闭scp/sftp,启用操作日志到独立syslog服务器 -
自动化任务账号用 rbash + PATH 锁定:仅保留
/home/monitor/bin在PATH中,该目录下只放curl、jq、ssh等必要二进制软链接,且所有文件属主为root、不可写 -
完全禁止交互式登录的账号,设为
/bin/false或自定义/bin/ftponly,避免shell层面任何入口
严格控制用户环境路径
受限Shell的安全性高度依赖PATH是否被真正收束。不能只靠rbash -r,必须配合环境初始化:
- 在用户
.bash_profile中强制重置PATH:export PATH="/home/$USER/.bin:/usr/bin:/bin",并unset LD_LIBRARY_PATH -
/home/username/.bin目录由root创建、chown root:username、chmod 750,内部只放管理员审核过的命令软链接(如ln -s /usr/bin/ssh .bin/ssh) - 禁止用户修改
.bashrc或.profile:执行chown root:username ~/.bashrc ~/.bash_profile && chmod 640 ~/.bashrc ~/.bash_profile
跳板机专属加固措施
跳板机不是普通服务器,需叠加网络与会话级控制:
- SSH配置强化:
/etc/ssh/sshd_config中对跳板用户启用ForceCommand,例如Match User jumpuser1后加ForceCommand /usr/bin/lshell --config /etc/lshell-jump.conf,绕过用户shell设置 - 会话超时与并发限制:
ClientAliveInterval 120+ClientAliveCountMax 2,配合pam_limits.so限制maxsyslogins为1 - 禁止端口转发与X11:
AllowTcpForwarding no、X11Forwarding no、PermitTunnel no - 日志单独落盘:
rsyslog将authpriv.*发往远程SIEM,本地日志仅保留7天,防止篡改
必须同步做的三件事
只配Shell是无效的。跳板机安全是系统工程:
-
SSH密钥强管控:所有跳板用户禁用密码登录;私钥必须带密码短语;公钥在
authorized_keys中绑定no-port-forwarding,no-X11-forwarding,command="lshell"等选项 -
目标主机免密登录走证书而非密钥:跳板机上用
ssh-keygen -t ed25519 -C "jump-$(hostname)"生成专用密钥,再通过CA签发短期证书,避免长期密钥泄露导致全线沦陷 -
定期审计命令白名单:每月检查
lshell.conf或.bin目录内容,确认无新增高危命令(如find -exec、awk system()、python -c),并验证其版本是否含已知逃逸漏洞


















