应首选lshell构建受限shell环境:需安装配置、禁用逃逸通道、严格命令白名单、锁定路径与path、启用审计日志,并叠加pam组限制、ssh forcecommand及密钥管控等多层防护。

为系统用户配置受限 Shell 环境,关键不是“选一个壳”,而是构建一层可验证、难绕过、行为可追溯的执行边界。单改 /etc/passwd 里的 shell 字段毫无意义——rbash 可被 vim !/bin/bash 逃逸,/bin/false 挡不住 ssh user@host command=...,lshell 配错一行就形同虚设。
优先选用 lshell,而非 rbash 或 rssh
rbash 依赖环境变量和用户配置文件生效,PATH 被污染、.bashrc 里加个 exec /bin/sh 就失效;rssh 已停止维护、不兼容新系统、功能僵硬且存在已知漏洞,主流发行版(RHEL 8+/CentOS Stream、Ubuntu 22.04+)默认不提供。生产跳板或系统账户应首选 lshell:
- RHEL/CentOS:运行
yum install lshell;Ubuntu/Debian:运行apt install lshell - 确认路径:
which lshell(通常为/usr/bin/lshell),并确保该路径已写入/etc/shells(否则 SSH 登录会拒绝) - 测试可用性:临时切换测试用户
chsh -s /usr/bin/lshell $USER,新开终端登录,验证基础命令(ls、pwd)是否可执行
收紧 /etc/lshell/lshell.conf 的核心项
默认配置极宽松,必须手动精简。原则是“只开必需,其余全禁”:
一款AI演示文稿工具,主要用于DeepSeek AI加持,输入主题生成专业PPT,支持Word/PDF等45种文档导入,职场汇报、教学提案轻松搞定,适合需要提升相关任务效率的用户。
- 关闭所有逃逸通道:
scp: 0、sftp: 0、overssh: [](防rsync -e bash类绕过) - 命令白名单严格限定:
allowed: ['ls', 'pwd', 'cd', 'cat', 'tail', 'journalctl', 'sudo']——不包含bash、sh、python、perl、vim、less等任何可交互式逃逸的程序 - 禁用命令拼接与变量展开:
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=/bin/sh、ssh -o "RemoteCommand=/bin/bash" 等方式。必须叠加访问控制:
- 创建专用组(如
jumpuser):groupadd jumpuser,将目标用户加入:usermod -aG jumpuser ops - 在
/etc/lshell/lshell.conf中按组定义策略,例如[jumpuser]段下单独配置allowed和path - 编辑
/etc/pam.d/system-auth,插入两行规则(放在其他 auth 行之前):auth [success=ok default=bad] pam_succeed_if.so user ingroup jumpuserauth [default=die] pam_deny.so
此配置使属于jumpuser组的用户无法启动任何交互式 shell,无论其/etc/passwd中 shell 字段为何值
同步加固底层执行环境
跳板机安全是系统工程,以下三项必须同步完成:
-
SSH 强制命令兜底:在
/etc/ssh/sshd_config中对跳板用户启用ForceCommand,例如:Match User opsForceCommand /usr/bin/lshell --config /etc/lshell-jump.conf
这能绕过用户自行修改的 shell 设置,所有连接强制走指定配置 -
禁用密码登录 + 密钥强管控:所有跳板用户禁用密码登录(
PasswordAuthentication no);公钥在authorized_keys中绑定no-port-forwarding,no-X11-forwarding,command="lshell"等限制 -
家目录权限与文件属主锁定:用户家目录权限设为
750;.bashrc、.profile等文件由root拥有且不可写(chown root:username ~/.bashrc && chmod 640 ~/.bashrc);必要时对/etc/shells执行chattr +i防篡改










