GNU/Linux >> Belajar Linux >  >> Linux

Cara mengatur jail chroot Linux

Istilah penjara chroot pertama kali digunakan pada tahun 1992, dalam sebuah artikel oleh peneliti keamanan terkemuka, Bill Cheswick, (yang menarik jika Anda menyukai hal semacam itu, Anda dapat menemukan artikelnya di sini). Penjara Chroot mulai muncul pada tahun 2003, dengan aplikasi seperti IRC dan FTP. Pada tahun 2005, Sun memperkenalkan teknologi "Containers" yang disebut Zones, yang merupakan pendahulu dari konsep namespaces , yang merupakan teknologi inti yang digunakan dengan container.

Dasar-dasar Chroot

Chroot memungkinkan administrator untuk mengontrol akses ke layanan atau sistem file sambil mengontrol eksposur ke lingkungan server yang mendasarinya. Dua contoh umum yang mungkin Anda temui adalah selama urutan boot dan "shell darurat" di sistem Red Hat/CentOS/Fedora, dan di Secure FTP (SFTP).

Perintahnya terlihat seperti ini:

chroot <newroot> [[command][arguments]]

Mirip dengan sudo perintah, chroot perintah mengubah lingkungan dari perintah berikut. Dengan kata lain, itu akan mengubah Anda menjadi newroot direktori, dan juga menjadikan direktori tersebut sebagai direktori "berfungsi". command kemudian dijalankan di lokasi itu, yang berguna untuk hal-hal seperti menyelamatkan sistem yang tidak mau boot.

Tidak seperti sudo , Anda akan berada "di" direktori tersebut. Praktik ini, sekali lagi, berguna jika Anda melakukan booting dari media eksternal tetapi perlu mengakses sistem file atau perintah "lokal" untuk melakukan pekerjaan.

Penggunaan umum lainnya dari chroot adalah untuk membatasi layanan atau pengguna dengan menggunakan wrapper untuk menyembunyikan sisa sistem file, oleh karena itu membatasi pandangan pengguna jarak jauh terhadap data pengguna lain. Implementasi populer menggunakan pendekatan SFTP ini.

Contoh

Sebelum mulai mengerjakan contoh ini, Anda harus memastikan bahwa Anda memiliki cadangan. Dalam hal ini, cadangkan /etc/ssh/sshd_config file karena Anda akan membuat perubahan pada file tersebut secara khusus:

[root@showme1 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Untuk saat ini, Anda hanya akan membatasi pengguna SFTP ke direktori beranda mereka di server. Persyaratan ini berarti Anda harus menambahkan pengguna dan memasukkannya ke dalam grup:

[root@showme1 ~]# useradd -g sftpusers -s /sbin/nologin -p nick nick

Perhatikan bahwa melakukan ini akan menetapkan nick akun tanpa shell login. Teknik ini praktis dan praktik keamanan yang baik:Jika dia hanya menggunakan SFTP, dia seharusnya tidak memiliki hak login. Saya akan membahas menyediakan shell untuk pengguna jarak jauh di artikel berikutnya.

Sekarang, Anda perlu memberi tahu ssh service apa yang harus dilakukan ketika pengguna SFTP login. Buka /etc/ssh/sshd_config file dan tambahkan berikut ini di akhir:

Subsystem sftp internal-sftp

Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no

Anda harus menambahkan setelan ini sebagai kumpulan entri yang terpisah, dan Anda menggunakan Match sintaks untuk menunjukkan bahwa bagian ini hanya berlaku untuk pengguna dalam grup ini. Jika Anda membuat perubahan pada entri yang ada, perubahan tersebut akan berlaku untuk semua pengguna SSH, yang dapat merusak akses jarak jauh.

Baris konfigurasi dipecah sebagai berikut:

  • ForceCommand membuat ssh pilih fasilitas bawaannya untuk menyediakan layanan SFTP (yang dapat Anda kontrol secara mandiri).
  • ChrootDirectory memberitahu sshd tempat untuk membatasi pengguna.
  • Subsystem sftp internal-sftp memberitahu sshd untuk memuat sftp internal layanan dan membuatnya tersedia.

Anda mungkin perlu memastikan bahwa Subsystem . ini belum ditentukan dengan mengomentari baris ini sebelumnya di file konfigurasi:

# override default of no subsystems
# Subsystem sftp /usr/libexec/openssh/sftp-server

Setelah Anda membuat perubahan dan memeriksa ejaannya, lanjutkan dan simpan perubahannya. Kemudian, mulai ulang sshd :

[root@showme1 ~]# systemctl restart sshd

Uji pengguna baru:

[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> ls
accounting   ansible   fred   jason   kenny   lisa    
nick
sftp> pwd
Remote working directory: /
sftp> exit

Ups, tunggu sebentar:Sepertinya Anda dapat melihat semua direktori pengguna lain juga. Namun, Anda tidak dapat membuka direktori tersebut:

sftp> cd fred
sftp> ls
remote readdir("/fred"): Permission denied

Anda dapat mengarahkan pengguna chroot ke direktori home mereka sendiri dengan mengubah ChrootDirectory baris di sshd_config file seperti ini:

ChrootDirectory /

Perubahan cepat ini membuat Nick seolah-olah berada di direktori home-nya sendiri, dan dia tidak akan dapat melihat file pengguna lain:

sftp> pwd
Remote working directory: /home/nick
sftp>
sftp> exit
[skipworthy@milo ~]$ touch test.txt
[skipworthy@milo ~]$ sftp nick@showme
nick@showme's password:
Connected to nick@showme.
sftp> put test.txt
Uploading test.txt to /home/nick/test.txt
test.txt 100% 0 0.0KB/s 00:00
sftp> ls
test.txt
sftp>

Kemana perginya? Lihat ini:

[root@showme1 ~]# ls /home/nick
test.txt

Perhatikan bahwa chroot jail adalah tidak dianggap sebagai pembatasan keamanan yang memadai dengan sendirinya. Meskipun mencegah pengguna keluar dari direktori terbatas, ada beberapa cara untuk mengatasi hal ini (gagasan umum dirujuk dalam chroot(2) halaman manual, yang harus Anda lihat jika Anda mempertimbangkan untuk menggunakan trik ini dalam konteks produksi atau bisnis yang kritis.)

Menutup (untuk saat ini)

Jadi, Anda dapat melihat bahwa chroot bisa menjadi alat yang cukup berguna. Di bagian 2, saya akan melihat lebih jauh dalam menetapkan direktori khusus untuk pengguna, dan menyediakan lingkungan shell untuk pengguna jarak jauh tanpa memaparkan server lainnya.

Baru mengenal container? Unduh Containers Primer dan pelajari dasar-dasar container Linux.


Linux
  1. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  2. Cara Mengatur atau Mengubah Zona Waktu di Linux

  3. Cara Mengatur Variabel $Path di Linux

  1. Menyelam lebih dalam ke penjara chroot Linux

  2. Cara mengatur server SFTP di Arch Linux

  3. Cara Setup Chroot SFTP di Linux (Izinkan Hanya SFTP, bukan SSH)

  1. Cara mengatur printer Anda di Linux

  2. Cara Mengatur Pekerjaan Cron di Linux

  3. CentOS / RHEL :Cara mengatur SFTP jail chroot