sftp chroot Jails

时间:2019-04-29 03:17:36  来源:igfitidea点击:

如何创建sftp chroot Jails

SFTP Chroot Jails是在Linux系统上创建可用于传输文件的安全区域的简便方法。SFTP chroot Jails允许您创建一个安全目录,该目录将用户限制在特定区域。

在下面的示例中,我们将创建一个SFTP chroot Jails,将用户限制在特定目录中。我们的远程服务器正在运行RHEL 6.6(Red Hat Enterprise Linux)。我们将从Ubuntu 15.04系统连接到sftp服务器。

SFTP Chroot Jails

修改文件 "/etc/ssh/sshd_config"
注释掉以Subsystem开头的行,并将其替换为以下行:

Subsystem       sftp    internal-sftp

在文件最底部添加下面行

Match Group sftpgroup
      ChrootDirectory %h
      ForceCommand internal-sftp
      AllowTcpForwarding no
      X11Forwarding no

文件/etc/ssh/sshd_config是OpenSSH守护进程配置文件。

以下是对上述参数的解释:

  1. Subsystem子系统选项允许配置外部子系统。 在我们的系统中,我们指定了internal-sftp,这允许我们实现一个进程中的sftp服务器。这用于简化ChrootDirectory的配置。

  2. Match被称为条件块。如果满足匹配行的所有条件,则使用它下面的行代替全局部分中的设置。

  3. 在我们的示例中,我们指定了一个名为sftpgroup的。也是是它下面的行只适用于指定组的成员。 您可以将此名称更改为与系统命名约定相匹配的名称。

  4. ChrootDirectory %h指定用户将被chroot到他们的主目录。

  5. force ecommand internal-sftp将强制执行internal-sftp子系统。

  6. AllowTcpForwarding no不允许TCP转发。默认设置是yes。请注意,禁用TCP转发并不能提高安全性,除非用户也被拒绝shell访问。

  7. X11Forwarding no指定不允许X11转发。

创建一个sftp用户和组

创建一个sftp组

groupadd sftpgroup

创建sftp用户帐户

useradd -G sftpgroup -s /sbin/nologin sftpuser

更改sftpuser的所有权和权限

chown root:root /home/sftpuser
chmod 755 /home/sftpuser/

为sftpuser创建目录结构

cd /home/sftpuser/

mkdir upload

mkdir download

chown sftpuser:sftpgroup upload

chown sftpuser:sftpgroup download

为sftpuser创建密码

passwd sftpuser

配置iptables防火墙规则

ssh和sftp的默认端口是22

查看防火墙是否打开端口22

service iptables status

如果没有打开,则添加

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

为Chroot Jails配置SELinux设置

如果打开了selinux,需要授予对chroot主目录的读/写访问权限。

[root@rhel01a ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

授予读/写权限

setsebool -P ssh_chroot_rw_homedirs on

测试对SFTP服务器的访问

john@ubuntu01-pc:~$ sftp [email protected]
[email protected]\'s password: 
Connected to 192.168.0.40.

sftp> pwd
Remote working directory: /
sftp> ls
download  upload    
sftp> cd upload/

sftp> lcd /home/john

sftp> put test.txt
Uploading test.txt to /upload/test.txt
test.txt                                      100%   15     0.0KB/s   00:00    
sftp> ls -l
-rw-r--r--    1 502      503            15 Jun  7 13:24 test.txt

sftp> cd ..
sftp> pwd
Remote working directory: /
sftp> cd download/
sftp> pwd
Remote working directory: /download

sftp> cd /
sftp> pwd
Remote working directory: /
sftp> quit