Batasi Akses Pengguna SSH ke Direktori Beranda Menggunakan Chrooted Jail


Ada beberapa alasan untuk membatasi sesi pengguna SSH ke direktori tertentu, terutama di server web, namun yang paling jelas adalah keamanan sistem. Untuk mengunci pengguna SSH pada direktori tertentu, kita dapat menggunakan mekanisme chroot.

mengubah root (chroot) pada sistem mirip Unix seperti Linux, merupakan cara untuk memisahkan operasi pengguna tertentu dari sistem Linux lainnya; mengubah direktori root yang terlihat untuk proses pengguna yang sedang berjalan dan proses turunannya (induk) dengan direktori root baru yang disebut chrooted jail.

Dalam tutorial ini, kami akan menunjukkan cara membatasi akses pengguna SSH ke direktori tertentu di Linux. Perhatikan bahwa kami akan menjalankan semua perintah sebagai root, gunakan perintah sudo jika Anda masuk ke server sebagai pengguna biasa.

Langkah 1: Buat Penjara Chroot SSH

1. Mulailah dengan membuat chroot jail menggunakan perintah mkdir di bawah ini:

mkdir -p /home/test

2. Selanjutnya, identifikasi file yang diperlukan, sesuai dengan halaman manual sshd_config, opsi ChrootDirectory menentukan nama jalur direktori yang akan di-chroot setelah otentikasi . Direktori harus berisi file dan direktori yang diperlukan untuk mendukung sesi pengguna.

Untuk sesi interaktif, ini memerlukan setidaknya shell, biasanya sh, dan node /dev dasar seperti perangkat null, zero, stdin, stdout, stderr, dan tty:

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Sekarang, buat file /dev seperti berikut menggunakan perintah mknod. Pada perintah di bawah ini, flag -m digunakan untuk menentukan bit izin file, c berarti file karakter dan dua angka tersebut adalah angka mayor dan minor yang ditunjuk oleh file .

mkdir -p /home/test/dev/		
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

4. Setelah itu, atur izin yang sesuai pada chroot jail. Perhatikan bahwa chroot jail dan subdirektori serta subfilenya harus dimiliki oleh pengguna root, dan tidak dapat ditulis oleh pengguna atau grup biasa mana pun:

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

Langkah 2: Siapkan Shell Interaktif untuk SSH Chroot Jail

5. Pertama, buat direktori bin lalu salin file /bin/bash ke direktori bin menggunakan perintah cp sebagai berikut:

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Sekarang, identifikasi bash yang diperlukan untuk libs bersama, seperti di bawah ini, dan salin ke direktori lib:

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Langkah 3: Buat dan Konfigurasikan Pengguna SSH

7. Sekarang, buat pengguna SSH dengan perintah useradd dan tetapkan kata sandi yang aman untuk pengguna tersebut:

useradd tecmint
passwd tecmint

8. Buat direktori konfigurasi umum chroot jail, /home/test/etc dan salin file akun yang diperbarui (/etc/passwd dan /etc/group) ke dalam direktori ini sebagai berikut:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Langkah 4: Konfigurasikan SSH untuk Menggunakan Penjara Chroot

9. Sekarang, buka file sshd_config.

vi /etc/ssh/sshd_config

dan tambahkan/ubah baris di bawah ini dalam file.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Simpan file dan keluar, dan mulai ulang layanan SSHD:

systemctl restart sshd
OR
service sshd restart

Langkah 5: Menguji SSH dengan Chroot Jail

10. Pada titik ini, uji apakah pengaturan chroot jail berfungsi seperti yang diharapkan:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Dari tangkapan layar di atas, kita dapat melihat bahwa pengguna SSH terkunci di jail yang di-chroot, dan tidak dapat menjalankan perintah eksternal apa pun (ls, date, uname, dll).

Pengguna hanya dapat menjalankan bash dan perintah bawaannya seperti (pwd, history, echo, dll) seperti yang terlihat di bawah:

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Langkah 6. Buat Direktori Beranda Pengguna SSH dan Tambahkan Perintah Linux

11. Dari langkah sebelumnya, kita dapat melihat bahwa pengguna terkunci di direktori root, kita dapat membuat direktori home untuk pengguna SSH seperti berikut (lakukan ini untuk semua pengguna di masa mendatang):

mkdir -p /home/test/home/tecmint
chown -R tecmint:tecmint /home/test/home/tecmint
chmod -R 0700 /home/test/home/tecmint

12. Selanjutnya, instal beberapa perintah pengguna seperti ls, date, dan mkdir di direktori bin:

cp -v /bin/ls /home/test/bin/
cp -v /bin/date /home/test/bin/
cp -v /bin/mkdir /home/test/bin/

13. Selanjutnya, periksa perpustakaan bersama untuk perintah di atas dan pindahkan ke direktori perpustakaan jail yang di-chroot:

ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Langkah 7. Menguji SFTP dengan Chroot Jail

14. Lakukan tes akhir menggunakan sftp; periksa apakah perintah yang baru saja Anda instal berfungsi.

Tambahkan baris di bawah ini pada file /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Simpan file dan keluar. Kemudian restart layanan SSHD:

systemctl restart sshd
OR
service sshd restart

15. Sekarang, uji menggunakan SSH, dan Anda akan mendapatkan kesalahan berikut:

ssh [email 

Coba gunakan SFTP sebagai berikut:

sftp [email 

Itu saja untuk saat ini! Pada artikel ini, kami menunjukkan kepada Anda cara membatasi pengguna SSH di direktori tertentu (chrooted jail) di Linux. Gunakan bagian komentar di bawah untuk memberi kami pendapat Anda tentang panduan ini.