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,
- tecmint – uzaktaki sistemin kullanıcı adı.
- 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> pwd
Remote working directory: /
sftp> ls
tecmint
Burada tecmint
ana dizindir. tecmint dizinine kopyalayın ve istediğiniz dosya veya klasörleri oluşturun.
sftp> cd tecmint
Remote working directory: /
sftp> 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.