如何限制指定账户不能SSH只能SFTP在指定目录

近来,我司线上搞了一台文件中转办事器,用于sftp上传下载一些文件(包括测试日志之类),然则引导盼望用的人只能在特定目录上传下载,不能获取Linux shell之类。运维安然部钻研了一番之后,搞了一个规划,可以限定特定组内的用户只能sftp 连接上去至指定目录,ssh 连接就提示只吸收sftp 连接,总算是满意了引导的要求。现在总结一下,和大年夜家分享一下, 测试与阐发如下。

0×01 测试情况设置设置设备摆设摆设

比如以限定sftpgroup 组的用户都只能在自己的家目录sftp 上传下载,不能ssh 连接获取shell为例进行阐明,假设zhangsan 是被限定的账户之一

1、新建一个sftpgroup,以组为单位进行限定

groupadd sftpgroup

2、 新建一个账户zhangsan,加入sftpgroup

useradd -d /home/zhangsan -s /usr/sbin/nologin -M -N -gsftpgroup zhangsan

这里shell 设置为/usr/sbin/nologin, 使其无法获取交互式shell,着实这里设置成啥都无所谓,关键点在4节中的ForceCommand internal-sftp 设置设置设备摆设摆设,稍后会解释。

3、zhangsan账户以公钥要领认证,额外设置设置设备摆设摆设如下

mkdir -p /home/zhangsan/.ssh

chown zhangsan:sftpgroup /home/zhangsan/.ssh

chmod 700 /home/zhangsan/.ssh

cat xxx.pub >/home/zhangsan/.ssh/authorized_keys

chown zhangsan:sftpgroup /home/zhangsan/.ssh/authorized_keys

chmod 700 /home/zhangsan/.ssh/authorized_keys

4、 设置设置设备摆设摆设sshd_config

设置设置设备摆设摆设如下:

这里有3点必要解释:

Subsystem sftp /usr/lib/openssh/sftp-server 更为 internal-sftp,这两者有什么差别呢?

简单的说默认sftp 进程由零丁的二进制文件:/usr/lib/openssh/sftp-server启动,而internal-sftp 则无需外部二进制文件额外启动一个进程,整合在sshd进程内了。

internal-sftp相较于 /usr/lib/openssh/sftp-server 优点在于:

机能好,无需额外进程了嘛;

安然性好,无需用户登录shell,且可应用ChrootDirectory 限定sftp行径活动的目录;

sftp-server 的存在主如果向后兼容。

综上,斟酌internal-sftp的安然性,故变动为internal-sftp。

Match指令是用来干什么的?

Match指令主要用于前提匹配,比如上图:

Match group sftpgroup

这奉告sshd 进程,sftpgroup 用户组中的用户适用下面的限定:

ChrootDirectory %h # 限定sftp的活动目录在其Home 目录;

X11Forwarding no # 禁止X11转发;

AllowTcpForwarding no # 禁止tcp转发。

ForceCommand internal-sftp

ForceCommand internal-sftp 是什么意思?

防止用户履行他们自己自定义的敕令,限定用户敕令履行高低文为sftp(可以理解为用户的’shell’便是sftp 那个高低文情况), 即:用户除了能履行sftp中容许的敕令外,其他敕令啥也履行不了

0×02 测试验证

1、ssh 连接掉败

ssh 连接提示只吸收sftp connection,这便是0×02提到的ForceCommand internal-sftp 设置设置设备摆设摆设的效果,假如设置设置设备摆设摆设了这个,不管zhangsan这个用户的登录shell是啥都不好使。 假如去掉落0×02提到的ForceCommand internal-sftp 设置设置设备摆设摆设,则ssh连接时刻提示如下:

2、sftp连接被吸收,但活动目录受限

只能sftp连接,且限定在了/home/zhangsan这个目录下。

参考

https://serverfault.com/questions/660160/openssh-difference-between-internal-sftp-and-sftp-server

https://man.openbsd.org/sshd_config

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包