Linux sistemlerde güvenli dosya transferi için SSH sunucu üzerindeki scp/sftp özelliği sık sık kullanılmaktadır. SSH kullanıcı yetkilendirmesinde işletim sistemi üzerindeki kullanıcıları kullanmaktadır. Bilindiği gibi SSH bir çok alt sistemi ve fonksiyonu olan bir yazılım. SSH ile yapılabilecek işlemlerin bir kısmı şu şekildedir :
  • uzaktan terminal ve grafik arayüz erişimi sağlanabilir, 
  • basit seviyede bir VPN özelliği kullanılarak tüm trafik şifreli olarak ssh sunucu üzerinden yönlendirilebilir, 
  • socks proxy olarak kullanılabilir, 
  • güvenli dosya transferi yapılabilir 
Listeyi bu şekilde uzatmak mümkün. SSH sunucu sadece güvenli dosya transferi için kullanılmak istendiğinde diğer özellikleri kapatmak ihtiyacı ortaya çıkmaktadır. Bu kısıtlamaları yapmak için genel olarak şu adımları uygulamak gerekmektedir :
  1. SCP için ayrı bir kullanıcının oluşturulması
  2. SCP için kısıtlı shell olan scponly paketinin kurulması
  3. sshd_config dosyası içinde gerekli ayarların yapılması
  4. Dosya transferi için dizin oluşturulması
Bu adımları sıra ile açıklayalım.

1. SCP için ayrı bir kullanıcının oluşturulması

Linux sistemlerde kullanıcı oluşturmak için:

#useradd scpuser

ardından oluşturulan kullanıcının şifresini verelim:

#passwd scpuser

Linux altında kullanıcı işlemleri ile ayrıntılı işlemleri "Linux kullanıcı işlemleri" isimli yazımıza başvurulabilir.

2. SCP için kısıtlı shell olan scponly paketinin kurulması

Oluşturmuş olduğumuz kullanıcının sadece scp işlemini yapabilmesi için kullanıcının shell erişimini bash yerine daha kısıtlı olan ve sadece scp işlemlerini yapmaya izin veren paketin kurulması gerekmektedir. scponly paketini kurmak için:

#apt-get install scponly

komutunu vermemiz yeterli olacaktır. Paket kurulduktan sonra 1. adımda oluşturmuş olduğumuz kullanıcının shell'ini scponly olarak değiştirmek gerekmektedir. Bu işlemi /etc/passwd dosyasını doğrudan edit ederek veya aşağıdaki komut yardımıyla yapabiliriz:

#usermod -s /usr/bin/scponly scpuser

3. sshd_config dosyası ayarları

Oluşturulan kullanıcının sadece scftp/scp ile kısıtlanabilmesi için son olarak sshd_config dosyası içinde değişiklik yapılması gerkemektedir. Öncelikli olarak metin editörü ile sshd_config dosyası açılarak

Subsystem sftp /usr/lib/openssh/sftp-server

satırı bulunur ve aşağıdaki satır ile değiştirilir.

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Görüleceği gibi burada mevcut sftp subsistemini iptal ederek yerine internal-sftp isminde bir subsistem oluşturduk. Ardından sshd_config dosyasının en sonuna gelinerek aşağıdaki satırlar eklenir:

Match User scpuser
ChrootDirectory /home/scpuser
ForceCommand internal-sftp

Ardından sshd_config dosyası kaydedilerek dosyadan çıkılır.
Bu işlemden sonra ssh servisinin yeniden başlatılması gerekmektedir:

#service ssh restart

Bu işlem sonunda scpuser kullanıcısının shell hakkı kaldırılmış ve sadece scp/sftp yapmasına izin verilmiştir. Ek olarak scpuser kullanıcısı kendi ev dizinine chroot mekanizması ile hapsedilerek sadece kendi ev dizinini görmesi sağlanmıştır.

4. Dosya transferi için dizin oluşturulması

Chroot işlemi sonucunda scpuser kullanıcısı sadece ev dizinine ulaşacağı ve shell erişimi olmadığı için yeni bir klasör oluşturamayacaktır. Bunun için kullanıcının dosya upload edebileceği bir dizine ihtiyaç vardır. Bu dizini scpuser kullanıcısının ev dizini altına elle oluştırmamız gerekmektedir.

#mkdir /home/scpuser/dosyalar

Ardından yeni oluşturulan dizin için scpuser kullanıcısına erişim izni verilmesi gerekmektedir.

#chown -R scpuser:scpuser /home/scpuser/dosyalar
#chmod -R 777 /home/scpuser/dosyalar

5. Ayarların test edilmesi

Yapılan ayarlar Filezilla veya WinSCP ile kontrol edilebilir.

0 comments:

Post a Comment

 
Top