Chrooted Jail Kullanarak SSH Kullanıcısının Ana Dizine Erişimini Kısıtlama


Özellikle web sunucularında, SSH kullanıcı oturumunu belirli bir dizine kısıtlamanın birkaç nedeni vardır, ancak en bariz olanı sistem güvenliğidir. SSH kullanıcılarını belirli bir dizine kilitlemek için chroot mekanizmasını kullanabiliriz.

Linux gibi Unix benzeri sistemlerde kök değiştirme (chroot), belirli kullanıcı işlemlerini Linux sisteminin geri kalanından ayırmanın bir yoludur; halihazırda çalışmakta olan kullanıcı işlemi ve onun alt (üst) işlemi için görünen kök dizini, chrooted jail adı verilen yeni bir kök dizinle değiştirir.

Bu eğitimde size SSH kullanıcısının Linux'ta belirli bir dizine erişimini nasıl kısıtlayacağınızı göstereceğiz. Tüm komutları root olarak çalıştıracağımızı unutmayın, eğer sunucuya normal bir kullanıcı olarak giriş yaptıysanız sudo komutunu kullanın.

Adım 1: SSH Chroot Hapishanesi Oluşturun

1. Aşağıdaki mkdir komutunu kullanarak chroot hapishanesini oluşturarak başlayın:

mkdir -p /home/test

2. Daha sonra, sshd_config kılavuz sayfasına göre gerekli dosyaları tanımlayın, ChrootDirectory seçeneği kimlik doğrulama sonrasında chroot yapılacak dizinin yol adını belirtir . Dizin, kullanıcının oturumunu desteklemek için gerekli dosya ve dizinleri içermelidir.

Etkileşimli bir oturum için bu, en azından bir kabuk (genellikle sh) ve null, sıfır, stdin, stdout, stderr ve tty aygıtları gibi temel /dev düğümlerini gerektirir:

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

3. Şimdi mknod komutunu kullanarak /dev dosyalarını aşağıdaki gibi oluşturun. Aşağıdaki komutta -m bayrağı dosya izin bitlerini belirtmek için kullanılır, c karakter dosyası anlamına gelir ve iki sayı, dosyaların işaret ettiği büyük ve küçük sayılardır. .

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. Daha sonra chroot hapishanesinde uygun izni ayarlayın. Chroot hapishanesinin ve onun alt dizinlerinin ve alt dosyalarının kök kullanıcıya ait olması ve herhangi bir normal kullanıcı veya grup tarafından yazılamaması gerektiğini unutmayın:

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

Adım 2: SSH Chroot Jail için Etkileşimli Kabuk Kurulumu

5. Öncelikle bin dizinini oluşturun ve ardından /bin/bash dosyalarını kullanarak bin dizinine kopyalayın. cp komutu aşağıdaki gibidir:

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

6. Şimdi, paylaşılan lib'ler için gereken bash'ı aşağıdaki gibi tanımlayın ve bunları lib dizinine kopyalayın:

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/

3. Adım: SSH Kullanıcısını Oluşturun ve Yapılandırın

7. Şimdi useradd komutuyla SSH kullanıcısını oluşturun ve kullanıcı için güvenli bir şifre belirleyin:

useradd tecmint
passwd tecmint

8. Chroot jail genel yapılandırma dizinini /home/test/etc oluşturun ve güncellenen hesap dosyalarını (/etc/passwd ve <) kopyalayın. Strong>/etc/group) bu dizine aşağıdaki şekilde ekleyin:

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

Adım 4: SSH'yi Chroot Jail'i Kullanacak Şekilde Yapılandırma

9. Şimdi sshd_config dosyasını açın.

vi /etc/ssh/sshd_config

ve aşağıdaki satırları dosyaya ekleyin/değiştirin.

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

Dosyayı kaydedip çıkın ve SSHD hizmetlerini yeniden başlatın:

systemctl restart sshd
OR
service sshd restart

Adım 5: SSH'yi Chroot Jail ile test etme

10. Bu noktada chroot jail kurulumunun beklendiği gibi çalışıp çalışmadığını test edin:

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

Yukarıdaki ekran görüntüsünden SSH kullanıcısının chroot edilmiş hapishanede kilitli olduğunu ve herhangi bir harici komutu (ls, date, uname, vb.) çalıştıramadığını görebiliriz.

Kullanıcı aşağıda görüldüğü gibi yalnızca bash'ı ve onun (pwd, History, echo, vb.) yerleşik komutlarını çalıştırabilir:

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

6. Adım. SSH Kullanıcısının Ana Dizinini Oluşturun ve Linux Komutlarını Ekleyin

11. Önceki adımdan itibaren kullanıcının kök dizinde kilitli olduğunu fark edebiliriz, SSH kullanıcısı için şu şekilde bir ana dizin oluşturabiliriz (bunu gelecekteki tüm kullanıcılar için yapın):

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

12. Ardından, bin dizinine ls, date ve mkdir gibi birkaç kullanıcı komutunu yükleyin:

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

13. Ardından, yukarıdaki komutlar için paylaşılan kitaplıkları kontrol edin ve bunları chroot edilmiş hapishane kitaplıkları dizinine taşıyın:

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/

Adım 7. SFTP'yi Chroot Jail ile test etme

14. Sftp'yi kullanarak son bir test yapın; Yeni yüklediğiniz komutların çalışıp çalışmadığını kontrol edin.

/etc/ssh/sshd_config dosyasına aşağıdaki satırı ekleyin:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Dosyayı kaydet ve çık. Ardından SSHD hizmetlerini yeniden başlatın:

systemctl restart sshd
OR
service sshd restart

15. Şimdi SSH kullanarak test ettiğinizde aşağıdaki hatayı alırsınız:

ssh [email 

SFTP'yi aşağıdaki gibi kullanmayı deneyin:

sftp [email 

Şimdilik bu kadar! Bu yazımızda Linux'ta belirli bir dizindeki (chrooted jail) bir SSH kullanıcısını nasıl kısıtlayacağınızı gösterdik. Bu kılavuz hakkındaki düşüncelerinizi bize iletmek için aşağıdaki yorum bölümünü kullanın.