GNU/Linux >> Belajar Linux >  >> Linux

Bind mount pengguna SFTP setelah menggunakan chroot

Artikel ini ditujukan untuk administrator atau pengembang.

Mengikat pengguna Secure File Transfer Protocol (SFTP) tempat operasi chroot telah dilakukan pada server Red Hat® Enterprise Linux® (RHEL®) dan CentOS® 6 (OpenSSH adalah 4.9p1 atau lebih baru) Anda menciptakan kondisi berikut:

  • Pengguna hanya dapat menggunakan SFTP dan tidak memiliki akses shell penuh melalui Secure Shell (SSH).
  • Pengguna dipenjara ke direktori home mereka dan tidak memiliki cara untuk keluar darinya.
  • Dari sudut pandang pengguna, direktori home mereka ada di server.
  • Pemasangan bind ini sering diperlukan untuk pengembang yang mungkin memerlukan akses tulis ke satu (atau lebih) root atau root dokumen Apache® atau beberapa direktori lain untuk tujuan mengunggah atau mengedit konten web.

Artikel ini menjelaskan cara menggunakan operasi chroot untuk menyetel direktori home bagi pengguna dan membuat pengikatan mount di dalam direktori home tersebut untuk direktori eksternal (root dokumen) mana pun yang mereka perlukan aksesnya. Bind mount adalah satu-satunya cara untuk memberi pengguna akses ke data di luar direktori chroot mereka. Anda tidak dapat menggunakan tautan simbolik (symlink) ke data di luar direktori chroot ke dalamnya (misalnya, ln -s /home/user/http /var/www/http ). Setelah operasi chroot, sistem file tidak memiliki pengetahuan tentang data apa pun di luar direktori chroot. Kurangnya pengetahuan ini merusak symlink. Sebagai alternatif, Anda dapat memindahkan direktori root dokumen ke direktori home pengguna, dan kemudian menghubungkannya ke lokasi asli (misalnya, ln -s /var/www/html /home/user1/html ).

Daemon SSH (SSHD) menawarkan beberapa variabel dinamis dalam konfigurasi untuk operasi chroot:

  • %u :nama pengguna pengguna yang masuk
  • %h :$HOME pengguna yang masuk

SSHD sangat ketat tentang bagaimana Anda harus mengatur izin. Salah satu batasan ini adalah bahwa pengguna tidak dapat menulis ke tingkat teratas direktori chroot. Anda harus memilih tingkat atas yang sesuai untuk direktori chroot, seperti pengaturan berikut:

  • Setel ChrootDirectory ke %h :Pengguna tidak dapat menulis ke jalur asal mereka. Mereka memerlukan subfolder tempat mereka dapat menulis (misalnya unggahan), atau pengikatan mount ke lokasi lain tempat mereka dapat menulis (misalnya /var/www/html ).
  • Setel ChrootDirectory ke /home/chroot :Pengguna dapat menulis ke jalur asal mereka, tetapi tingkat teratas direktori chroot dilindungi dengan izin sistem file, bukan jail chroot.

Opsi pertama menggunakan direktori chroot untuk menjamin keamanan alih-alih mengandalkan izin sistem file. Opsi kedua memungkinkan penulisan ke direktori home tetapi berarti direktori chroot dibagikan dengan pengguna lain, dan hanya izin sistem file yang menghentikan pengungkapan informasi. Pilihan yang tepat tergantung pada kebutuhan Anda.

Ikat pasang pengguna SFTP setelah operasi chroot

Gunakan langkah-langkah berikut untuk mengikat mount pengguna:

  1. Buat grup tempat Anda akan menetapkan setiap pengguna yang perlu dipenjara ke direktori home mereka:

    # groupadd sftponly
    
  2. Buat pengguna. Setel shell ke /bin/false dan tetapkan pengguna ke grup yang Anda buat di atas:

    # mkdir -p /home/chroot/$NEWUSER
    # useradd -d /$NEWUSER -s /bin/false -G sftponly $NEWUSER    # Note: homedir is relative to the chroot
    # pass}wd $NEWUSER
    
  3. Perbarui /etc/ssh/sshd_config berkas:

    1. Beri komentar pada baris berikut:

       Subsystem       sftp    /usr/libexec/openssh/sftp-server
      
    2. Tambahkan baris berikut ke akhir file:

       Subsystem     sftp   internal-sftp
       Match Group sftponly
       ChrootDirectory /home/chroot   # OR     ChrootDirectory %h
       X11Forwarding no
       AllowTCPForwarding no
       ForceCommand internal-sftp
      
    3. Uji konfigurasi, lalu muat ulang SSHD:

       # sshd -t
       # service sshd reload
      

Mengatur homedir pengguna setelah operasi chroot

  1. Jika ChrootDirectory adalah /home/chroot , jalankan perintah berikut:

     # chmod 711 /home/chroot            # This prevents chrooted users from seeing other chrooted users' homedirs
     # chmod 755 /home/chroot/$NEWUSER
     # chown $NEWUSER:sftponly /home/chroot/$NEWUSER
    
  2. Jika ChrootDirectory adalah %h , jalankan perintah berikut:

     # chown root:root /home/chroot/$NEWUSER
    

Buat pengikatan mount ke jalur mana pun di luar direktori chroot yang pengguna perlu mengakses

  1. Tambahkan baris berikut ke /etc/fstab berkas:

     /var/www/html   /home/chroot/$NEWUSER/www        none    bind    0 0`
    
  2. Pasang direktori:

     # mkdir /home/chroot/$NEWUSER/www
     # mount /home/chroot/$NEWUSER/www
    

Perbarui izin

Perbarui izin sistem file pada direktori yang diakses pengguna. Pertimbangkan pengguna lain yang saat ini memiliki akses baca/tulis untuk memastikan Anda tidak menghapus izin mereka secara tidak sengaja. Anda dapat menyelesaikan langkah ini dengan beberapa cara berbeda, seperti mengubah kepemilikan pengguna, mengubah kepemilikan atau izin grup, atau menambahkan daftar kontrol akses file (FACL).

Contoh berikut menunjukkan perintah untuk menambahkan FACL:

     # setfacl -Rm u:$NEWUSER:rwX /home/chroot/$NEWUSER/www/
     # setfacl -Rm d:u:$NEWUSER:rwX /home/chroot/$NEWUSER/www/

Potensi masalah

Masalah berikut dapat terjadi.

Izin direktori

Izin direktori dapat menyebabkan masalah berikut:

  • Fungsi chroot bawaan SFTP sangat ketat tentang izin. Jika izin tidak cukup aman, Anda menerima kesalahan berikut saat mencoba masuk:

        root@ftp01[ ~ ]# sftp $NEWUSER@localhost
        Connecting to localhost...
        chroottest@localhost's password:
        Write failed: Broken pipe
        Couldn't read packet: Connection reset by peer
    
  • Anda mungkin dapat masuk, tetapi Anda tidak dapat mengunggah file. Dalam hal ini Anda menerima kesalahan berikut:

        sftp> put test
        Uploading test to /$NEWUSER/test
        Couldn't get handle: Permission denied
        In both cases the problem is directory permissions.  Here's what a known-good directory structure looks like:
        root@ftp01[ ~ ]# ls -ld / /home /home/chroot /home/chroot/$NEWUSERdrwxr-xr-x. 28 root     root     4096 Aug 22 10:31 /
        drwxr-xr-x. 18 root     root     4096 Oct 10 10:49 /home
        drwx--x--x   3 root     root     4096 Oct 10 10:49 /home/chroot
        drwxr-xr-x   3 $NEWUSER $NEWUSER 4096 Oct 10 11:40 /home/chroot/$NEWUSER
        root@ftp01[ ~ ]#
    

SCP tidak berfungsi

Jenis pengguna ini hanya bekerja dengan SFTP dan tidak bekerja dengan protokol lain (misalnya, remote shell (RSH), secure contain protect (SCP), atau File Transfer Protocol (FTP)).


Linux
  1. Cara mengatur jail chroot Linux

  2. Memasang direktori jarak jauh menggunakan SSHFS di Debian Jessie

  3. Ssh – Membatasi Pengguna Ssh/scp/sftp ke Direktori?

  1. Umount Rekursif Setelah Mount Rbind?

  2. Apakah Ada Kelemahan Dari Menggunakan Mount –bind Sebagai Pengganti Tautan Simbolik?

  3. Salin File yang Dimodifikasi Setelah Tanggal Tertentu Menggunakan Cp Switch?

  1. Untuk menampilkan jalur sumber mount pengikat untuk mount setelah v2.25.2

  2. Penggunaan / saat menggunakan cd

  3. Apakah ada alat vfs linux yang memungkinkan mengikat direktori di lokasi berbeda (seperti mount --bind) di ruang pengguna?