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.