SFTP Kullanıcılarını chroot Jail Kullanarak Ana Dizinlerle Kısıtlama


Bu eğiticide SFTP kullanıcılarının ana dizinleriyle veya belirli dizinleriyle nasıl kısıtlanacağını tartışacağız. Bu, kullanıcının dosya sisteminin tamamına değil, yalnızca kendi ana dizinine erişebileceği anlamına gelir.

Yetkisiz bir kullanıcının diğer kullanıcının dosyalarına ve klasörlerine gizlice göz atmaması için, kullanıcıların ana dizinlerini kısıtlamak özellikle paylaşılan bir sunucu ortamında hayati öneme sahiptir.

Önemli: Lütfen bu makalenin amacının SSH girişlerini değil, yalnızca SFTP erişimini sağlamak olduğunu unutmayın, bu makaleyi takip ederek dosya aktarımı yapma izinlerine sahip olacaksınız, ancak uzaktan SSH oturumu yapmasına izin verilmiyor.

Önerilen Okuma: Chrooted Jail Kullanarak SSH Kullanıcısının Belirli Dizine Erişimini Kısıtlama

Bunu yapmanın en basit yolu, SFTP erişimi için chroot edilmiş bir jail ortamı oluşturmaktır. Bu yöntem tüm Unix/Linux işletim sistemleri için aynıdır. Chroot'lu ortamı kullanarak kullanıcıları kendi ana dizinleriyle veya belirli bir dizinle sınırlayabiliriz.

Kullanıcıları Ana Dizinlerle Sınırla

Bu bölümde sftpgroup adında yeni bir grup oluşturup kullanıcı hesaplarına doğru sahiplik ve izinleri atayacağız. Kullanıcıları ana sayfayla veya belirli dizinlerle sınırlamak için iki seçenek vardır; bu makalede her iki yolu da göreceğiz.

Kullanıcıları ve Grupları Oluşturun veya Değiştirin

Mevcut kullanıcıyı, örneğin tecmint'i, /home/tecmint adlı ana dizini ile sınırlayalım. Bunun için gösterildiği gibi groupadd komutunu kullanarak yeni bir sftpgroup grubu oluşturmanız gerekir:

groupadd sftpgroup

Daha sonra, 'tecmint' kullanıcısını sftpgroup grubuna atayın.

usermod -G sftpgroup tecmint

Ayrıca useradd komutunu kullanarak yeni bir kullanıcı oluşturabilir, örneğin senthil ve kullanıcıyı sftpusers grubuna atayabilirsiniz.

adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint

SSH Yapılandırma Dosyasını Değiştirin

Aşağıdaki satırları /etc/ssh/sshd_config yapılandırma dosyasına açın ve ekleyin.

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

Dosyayı kaydedip çıkın, yeni değişikliklerin yürürlüğe girmesi için sshd hizmetini yeniden başlatın.

systemctl restart sshd
OR
service sshd restart

Birden fazla kullanıcıyı aynı dizine chroot yaparsanız, tüm kullanıcıların diğer kullanıcıların ana dizinlerine göz atmasını önlemek için her kullanıcının ana dizininin izinlerini değiştirmelisiniz.

chmod 700 /home/tecmint

SSH ve SFTP Kullanıcılarının Girişini Doğrulayın

Şimdi, yerel bir sistemden giriş bilgilerini kontrol etme zamanı. Uzak sisteminizi yerel sisteminizden ssh etmeye çalışın.

ssh [email 

Burada,

  1. tecmint – uzaktaki sistemin kullanıcı adı.
  2. 192.168.1.150 – Uzak sistemin IP adresi.
Örnek çıktı:
[email 's password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Daha sonra SFTP kullanarak uzaktaki sisteme erişin.

sftp [email 
Örnek çıktı:
[email 's password: 
Connected to 192.168.1.150.
sftp>

Mevcut çalışma dizinini kontrol edelim:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Burada tecmint ana dizindir. tecmint dizinine kopyalayın ve istediğiniz dosya veya klasörleri oluşturun.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Kullanıcıları Belirli Bir Dizine Kısıtlayın

Önceki örneğimizde mevcut kullanıcıları ana dizinle sınırlandırdık. Şimdi yeni bir kullanıcıyı özel bir dizine nasıl kısıtlayacağımızı göreceğiz.

Grup ve Yeni Kullanıcılar Oluşturun

Yeni bir grup sftpgroup oluşturun.

groupadd sftpgroup

Daha sonra SFTP grubu için bir dizin oluşturun ve kök kullanıcıya izinler atayın.

mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/

Daha sonra, her kullanıcı için tam erişime sahip olacakları yeni dizinler oluşturun. Örneğin, aşağıdaki komut dizisini kullanarak tecmint kullanıcısını ve doğru grup iznine sahip yeni bir ana dizini oluşturacağız.

adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/

SFTP Erişimi için SSH'yi Yapılandırma

Dosyanın sonuna aşağıdaki satırları değiştirin veya ekleyin:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Dosyayı kaydedip çıkın. Kaydedilen değişikliklerin etkili olması için sshd hizmetini yeniden başlatın.

systemctl restart sshd
OR
service sshd restart

İşte bu kadar, yukarıdaki SSH ve SFTP girişini doğrulama bölümünde verilen adımı kullanarak uzak SSH ve SFTP sunucunuza giriş yaparak kontrol edebilirsiniz.

Bu yöntemin kabuk erişimini devre dışı bırakacağını unutmayın; yani uzak sistemin kabuk oturumuna SSH kullanarak erişemezsiniz. Uzak sistemlere yalnızca SFTP üzerinden erişebilir, yerel ve uzak sistemlere dosya aktarımı yapabilirsiniz.

Çözüm

Artık Linux'ta Chroot ortamını kullanarak kullanıcıların ana dizinlerini nasıl kısıtlayacağınızı biliyorsunuz. Bunu yararlı bulursanız, bu makaleyi sosyal ağlarınızda paylaşın ve kullanıcıların ana dizinlerini kısıtlamanın başka yöntemleri varsa aşağıdaki yorum bölümünde bize bildirin.