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.