应首选rbash并同步加固环境:启用usermod -s /bin/rbash后,必须重置PATH、锁定.bashrc权限、禁用危险内置命令、限制可执行路径,并叠加auditd与SIEM日志审计,否则极易被vim!/bin/bash等绕过。

rbash 是 Bash 官方支持的受限模式,启用简单但极易被绕过——它不是开箱即用的安全方案,而是需要配合环境初始化、权限收紧和行为审计才能真正生效的执行边界。
rbash 基础启用与关键限制
rbash 通过 -r 参数或以 rbash 名称调用启动,会自动禁用以下能力:
- 不能执行含斜杠的命令(如
/bin/bash或./script.sh) - 无法使用
cd、exec、export、unset、env等危险内置命令 - 禁止重定向(
>、>>、<)、管道(|)和命令替换($()、`...`) - 不能修改
PATH、SHELL、BASH_ENV、ENV等关键环境变量
启用方式:运行 sudo usermod -s /bin/rbash username,并确保 /bin/rbash 已存在于 /etc/shells 中。注意:多数发行版中 rbash 是 /bin/bash 的符号链接,需确认存在且可执行。
必须同步做的环境加固
仅改 shell 字段毫无防护力——用户可通过 .bashrc 注入 exec /bin/sh、利用 vim !/bin/bash 逃逸,或通过 SSH 的 ssh user@host command=... 绕过。必须做以下三件事:
- 在家目录下创建
~/.bashrc,开头强制重置:export PATH="/usr/bin:/bin",并unset -f cd exec export unset eval - 设置
export ENV=/dev/null,防止加载额外配置;同时chmod 644 ~/.bashrc、chown root:username ~/.bashrc - 家目录权限设为
750,禁止组和其他用户写入;.bash_profile同样需锁定并由 root 管理
路径与命令白名单控制
rbash 不自带命令白名单,所有安全依赖 PATH 收束和目录权限。推荐做法:
- 在用户家目录建
~/bin(mkdir ~/bin && chmod 750 ~/bin),由 root 创建并维护 - 只放运维必需命令的软链接:
sudo ln -sf /usr/bin/ls ~/bin/ls、sudo ln -sf /usr/bin/journalctl ~/bin/journalctl - 在
~/.bashrc中设export PATH="$HOME/bin:/usr/bin:/bin",并unset LD_LIBRARY_PATH - 避免将
/home/username加入PATH,防止用户自建可执行文件绕过
日志与逃逸监控不可少
rbash 本身不记录命令执行,需叠加系统级审计:
- 启用
auditd监控 execve 系统调用:-a always,exit -F arch=b64 -S execve -F uid>=1000 - 配置
rsyslog将authpriv.*发往远程 SIEM,保留本地日志最多 7 天 - 定期检查用户家目录是否有异常脚本、临时文件或可疑软链接
- 对跳板类账号,建议搭配 SSH
ForceCommand兜底,例如ForceCommand /usr/bin/lshell --config /etc/lshell-readonly.conf


















