如何设置Linux系统默认Shell为rssh受限模式增强身份验证安全性?
- 内容介绍
- 文章标签
- 相关推荐
本文共计742个文字,预计阅读时间需要3分钟。
将用户默认配置为+SSH是一种成熟、轻量且有效的身份验证手段——它不阻止登录,但明确限制用户只能使用SCP/SFTP等安全协议传输文件,完全禁用交互式命令行访问,从而最大程度缩小攻击面。
确认 rssh 已安装并合法注册
rssh 不是系统默认 shell,必须先安装并写入 /etc/shells,否则 chsh 或 usermod 会拒绝设置:
- Debian/Ubuntu:
sudo apt install rssh - RHEL/CentOS/Fedora:
sudo yum install rssh或sudo dnf install rssh - 安装后检查路径(通常为
/usr/bin/rssh或/usr/local/bin/rssh),再将其追加到/etc/shells中:echo "/usr/bin/rssh" | sudo tee -a /etc/shells
为指定用户启用 rssh 作为登录 Shell
推荐使用 usermod(需 root 权限),避免手动编辑 /etc/passwd 出错:
- 直接切换用户 shell:
sudo usermod -s /usr/bin/rssh backupuser - 若需批量配置,可配合
for循环:for u in user1 user2 backup; do sudo usermod -s /usr/bin/rssh "$u"; done - 验证是否生效:
getent passwd backupuser | cut -d: -f7应返回/usr/bin/rssh
精细化控制协议权限(通过 /etc/rssh.conf)
rssh 的核心优势在于可按需放开协议,而非“全有或全无”。编辑 /etc/rssh.conf(默认已注释示例):
- 只允许 SCP:
取消注释allowsftp和allowscp对应行,并确保其余如allowrsync、allowcvs保持注释状态 - 禁用所有协议(仅允许登录失败提示):
保留全部协议选项为注释,rssh 将拒绝任何操作 - 启用 chroot(需额外配置目录结构):
设置chrootpath = /var/chroot/backupuser,并确保该路径满足 chroot 环境最小依赖(如含/bin/bash、/usr/lib/openssh/sftp-server等)
测试与安全加固要点
配置完成后务必实测,同时关闭潜在绕过路径:
- 用目标用户 SSH 登录:
ssh backupuser@localhost,预期返回类似This account is restricted by rssh.并立即退出 - 尝试 SCP 上传:
scp file.txt backupuser@localhost:/upload/,应成功;若失败,检查服务端/upload/目录权限及 SELinux 上下文(如启用) - 禁止该用户使用
sudo或拥有/bin/bash等其他合法 shell 路径,防止降级绕过 - 确保
/etc/passwd中该用户 home 目录存在且可写(SCP 需要落点),但不要赋予执行权限(如chmod 755 ~backupuser即可)
本文共计742个文字,预计阅读时间需要3分钟。
将用户默认配置为+SSH是一种成熟、轻量且有效的身份验证手段——它不阻止登录,但明确限制用户只能使用SCP/SFTP等安全协议传输文件,完全禁用交互式命令行访问,从而最大程度缩小攻击面。
确认 rssh 已安装并合法注册
rssh 不是系统默认 shell,必须先安装并写入 /etc/shells,否则 chsh 或 usermod 会拒绝设置:
- Debian/Ubuntu:
sudo apt install rssh - RHEL/CentOS/Fedora:
sudo yum install rssh或sudo dnf install rssh - 安装后检查路径(通常为
/usr/bin/rssh或/usr/local/bin/rssh),再将其追加到/etc/shells中:echo "/usr/bin/rssh" | sudo tee -a /etc/shells
为指定用户启用 rssh 作为登录 Shell
推荐使用 usermod(需 root 权限),避免手动编辑 /etc/passwd 出错:
- 直接切换用户 shell:
sudo usermod -s /usr/bin/rssh backupuser - 若需批量配置,可配合
for循环:for u in user1 user2 backup; do sudo usermod -s /usr/bin/rssh "$u"; done - 验证是否生效:
getent passwd backupuser | cut -d: -f7应返回/usr/bin/rssh
精细化控制协议权限(通过 /etc/rssh.conf)
rssh 的核心优势在于可按需放开协议,而非“全有或全无”。编辑 /etc/rssh.conf(默认已注释示例):
- 只允许 SCP:
取消注释allowsftp和allowscp对应行,并确保其余如allowrsync、allowcvs保持注释状态 - 禁用所有协议(仅允许登录失败提示):
保留全部协议选项为注释,rssh 将拒绝任何操作 - 启用 chroot(需额外配置目录结构):
设置chrootpath = /var/chroot/backupuser,并确保该路径满足 chroot 环境最小依赖(如含/bin/bash、/usr/lib/openssh/sftp-server等)
测试与安全加固要点
配置完成后务必实测,同时关闭潜在绕过路径:
- 用目标用户 SSH 登录:
ssh backupuser@localhost,预期返回类似This account is restricted by rssh.并立即退出 - 尝试 SCP 上传:
scp file.txt backupuser@localhost:/upload/,应成功;若失败,检查服务端/upload/目录权限及 SELinux 上下文(如启用) - 禁止该用户使用
sudo或拥有/bin/bash等其他合法 shell 路径,防止降级绕过 - 确保
/etc/passwd中该用户 home 目录存在且可写(SCP 需要落点),但不要赋予执行权限(如chmod 755 ~backupuser即可)

