ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 开启sftp日志并限制sftp访问目录 [TOC] ## 1. 开启sftp日志 ### 1.1 修改sshd_config ``` vim /etc/ssh/sshd_config ``` 注释掉Subsystem行,然后写入新Subsystem,信息如下 ``` Subsystem sftp internal-sftp -l INFO -f local5 LogLevel INFO ``` 效果如下: ![enter description here](https://www.github.com/noah-luo/imags/raw/master/year/1542701037996.png) ### 1.2 修改syslogs ``` vim /etc/rsyslog.conf ``` 在最后增加如下配置 ``` auth,authpriv.*,local5.* /var/log/sftp.log ``` ###1.3 重启服务查看日志 ``` /etc/init.d/rsyslog restart /etc/init.d/sshd restart tailf /var/log/sftp.log ``` ## 2 限制sftp用户操作目录 ### 2.1 前提说明 如果要让sftp用户只能使用规定的目录,则需要再配置文件中开启**ChrootDirectory**,并限定目录作为sftp用户登录的根目录. 但这里规定的根目录,属主必须是root,文件夹权限只能是755,因此sftp用户对此根目录只有读取权限,需要再在根目录下创建一个属主为改sftp用户的文件夹,用于该用户上传数据 由此规则,可以产生两种sftp方案 ### 2.2 home目录做根目录 创建用户时,不指定-M参数,默认会在home目录下生产该用户的家目录,用户对该目录具有完全操作权限,且不能访问其他用户的家目录,因此适合作为sftp目录 - ChrootDirectory写法 - ChrootDirectory /home/ ### 2.3 单独创建目录做根目录 单独创建一个目录做根目录,然后再创建下级的操作目录,此方法需要按要求配置主目录及下级目录的权限和属主等信息 - 用户 - 创建用户 加-M参数 - 主目录 - 创建主目录 /data/sftp - 授权 755 - 属主 root.root - 下级目录 - 创建下级目录 /data/sftp/test_sftp - 授权 755 - 属主 test_sftp.test_sftp - ChrootDirectory写法 - ChrootDirectory /data/sftp/ ## 3 实操 ### 3.1方法1实操 - 创建用户 ``` useradd test_sftp && echo "123456"|passwd --stdin test_sftp ``` - 修改sshd_conf ``` vim /etc/ssh/sshd_config # 在最后增加以下关键字 Match User test_sftp ChrootDirectory /home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ``` **重要说明:配置在Match User字段中的用户,会被禁止使用ssh方式登录系统** - 重启sshd服务 ``` /etc/init.d/sshd restart ``` ### 3.2 方法2实操 - 创建用户 ``` useradd test_sftp && echo "123456"|passwd --stdin test_sftp ``` - 创建主目录并授权 ``` mkdir -p /data/sftp/ #chown -R root.root /data/sftp/ #chmod 755 /data/sftp/ ``` **说明:注释掉的命令默认不用执行,写出来是为了避免乱做其他授权** - 创建操作目录并操作 ``` mkdir -p /data/sftp/test_sftp chown -R test_sftp.test_sftp /data/sftp/test_sftp #chmod 755 /data/sftp/test_sftp ``` **说明:注释掉的命令默认不用执行,写出来是为了避免乱做其他授权** - 修改sshd_conf ``` vim /etc/ssh/sshd_config # 在最后增加以下关键字 Match User test_sftp ChrootDirectory /data/sftp X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ``` - 重启sshd服务 ``` /etc/init.d/sshd restart ```