ChrootDirectory ile OpenSSH SFTP chroot()

OpenSSH versiyon 4.8p1 den itibaren bazı yeni ayar özellikleri eklendi: ChrootDirectory.

Bu yeni özellik sshd bağlantılı olarak yeni SFTP altsistemi bağlantısını  sağlamış oldu.

Bu sayede şifreleme ayarlarında zorluk çıkarmadan ve/veya uğraştırmadan pasif FTP ile ve bir NAT yönlendiricisinden geçen aktif düğümlerde basit FTP servislerini değiştirmek kolay oldu. Bu aynı zamanda rssh, scponly veya other patches paketlerinden daha basittir, çünkü; kurma ve bir chroot ortamında bakım yapma (güvenlik güncellemleri) gibi gereksinimi yoktur.

Etkinleştirmek için, yeni sersiyon 4.8p1 ve sonrası paketlere ihtiyacınız vardır. Şuanki süründe  Debian GNU/Linux 5.0 (codename lenny) OpenSSH 5.1p1-5 ‘dir ve fazladan birşey yapmanıza gerek yoktur. Ben kendim Debian GNU/Linux 5.0 kullanıyorum ve bende düzgün olarak çalışmaktadır.

/etc/ssh/sshd_config :

OpenSSH ‘ın kendi iç SFTP altsistemini kullanmak için ayarlarını yapmamız gerekir.

Subsystem sftp internal-sftp

Sonrasında, uygun kuraldaki chroot()ayarlanır.

Match group sftponly
         ChrootDirectory /home/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp

chroot() dizini sahibi root kullanıcısı olmak zorundadır. chroot() çağırdıktan sonra, sshd ev dizinini yeni root dizinine göre göreceli olarak yeni ev dizinini değiştirir. / ‘ı ev dizini olarak kulanmamızın sebebi budur.

# chown root.root /home/user
# usermod -d / user
# adduser user sftponly

Beklendiği gibi çalışmaktadır:

$ sftp user@host
Connecting to host...
user@host's password:
sftp> ls
build               cowbuildinall       incoming            johnbuilderclean
sftp> pwd
Remote working directory: /
sftp> cd ..
sftp> ls
build               cowbuildinall       incoming            johnbuilderclean

Burada unutulan bir tek şey kaldı oda dosya transferinde loglama, yazının devamında loglama ile ilgili böümü bulabilirsiniz. ChrootDirectory ile OpenSSH loglama

Referanslar :