CentOS6u9 sftp专用帐户的部署加固

简单说明:

创建专门用于sftp的系统用户
该用户无法shell登录,只能用作sftp登录
该用户无法切换到家目录之外的目录
对其他正常添加的用户sftp功能和登录后目录切换权限无限制

服务端部署:

# 创建sftp用户的根目录
mkdir /var/ftp
chmod 755 /var/ftp

# 创建专门用于sftp传输文件的用户sftp
# 家目录放在/var/ftp/sftp
# 设置该用户无法登陆
useradd -m -d /var/ftp/sftp -s /sbin/nologin sftp
# 用于sftp传输文件时候的密码是sftp
echo sftp|passwd --stdin sftp
# 注意不能在useradd时候使用-p设置密码

# 更改sshd_config配置文件并重启sshd服务
sed -i 's/^Subsystem.*sftp.*$/# &/g' /etc/ssh/sshd_config
cat >>/etc/ssh/sshd_config<<EOF
Subsystem sftp internal-sftp
Match User sftp
    ChrootDirectory /var/ftp
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
EOF
# 此处注意,最好将该配置追加到配置文件末尾,并且不再其后追加其他非sftp的配置项
# 其他非sftp的配置项也会强制被解析成sftp的配置项,造成配置问题
/etc/init.d/sshd restart

目录权限分析:

sftp的根目录是/var/ftp,属于root用户,权限755
也就是说sftp用户对于它的根目录有查看和进入权限,无写权限
sftp的家目录是/var/ftp/sftp,对其有全部的权限
目录/var/ftp相当于/home,目录/var/ftp/sftp相当于/home/sftp
将目录切换锁在了/home之内,不能做根的跳转

测试使用:

# 对其他用户是没有限制的
sftp -oPort=22 root@192.168.77.10:/tmp

# 对新建的sftp用户做了登录限制和根分区跳转限制
sftp -oPort=22 sftp@192.168.77.10:/sftp

# 使用sftp必须要交互式输入密码,或者配置ssh免密登录
# 可以使用lftp脚本化非交互式文件传输
# 比如简单的将本地/tmp/test.txt上传到远程主机的/var/ftp/sftp脚本如下:
yum -y install lftp
touch /tmp/test.txt
lftp -u sftp,sftp sftp://192.168.77.10<<EOF
cd /sftp
put /tmp/test.txt
bye
EOF

用户添加:

# 如果要添加的用户sftp登录的系统用户
# 则需要添加用户,再次在sshd_config中添加配置,重启sshd服务
# 也可以根据用户组进行匹配:
useradd -g test,sftp -m -d /var/ftp/test -s /sbin/nologin test
cat >>/etc/ssh/sshd_config<<EOF
Match Group sftp
     ChrootDirectory /var/%u
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp
EOF
/etc/init.d/sshd restart

[TOC]

猜你喜欢

转载自blog.csdn.net/zwjzqqb/article/details/80280202
今日推荐