OpenSSH, SCP için değil, 'internal-sftp' gibi bir şey?


16

Debian kararlı çalışıyorum ve 'sftponly' grubumdaki kullanıcılar için aşağıdaki ortamı kurmak istiyorum:

  • hapisteki
  • SFTP ile aktarabilir
  • SCP ile transfer edebilir
  • SSH ile etkileşimli olarak giriş yapamıyorum

Deneyim ve araştırmamdan, sshd_config'deki şu stanza beni% 90 oraya götürüyor gibi görünüyor:

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

Bu bana hapsedilmiş SFTP veriyor ve SSH yok, ki bu iyi. Ancak aynı zamanda ideal olandan daha az olan SCP'yi de devre dışı bırakır çünkü oldukça az sayıda istemci SFTP yerine değiştirilen SCP'yi kullanan eski, komut dosyasılı işlemlerdir (değiştirdiğimiz sunucu her iki protokolü de desteklediğinden) ve bu istemciler bizim kontrolümüz altında olmadığından ve kolayca modifiye edildiğinde, SCP'yi tamamen devre dışı bırakmak muhtemelen pratik değildir.

Bu yapılandırmanın SCP'yi devre dışı bırakması mantıklıdır, çünkü gelen SCP bağlantıları sshd'nin kullanıcının giriş kabuğu aracılığıyla bir kullanıcı olarak scp işlemini başlatmasına neden olur. Özel 'internal-sftp' işleyicisi için olmasa da normalde aynı şey SFTP için de geçerli gibi görünüyor.

Yani, sorum şu: scponly ve rssh gibi üçüncü taraf araçların kullanımına başvurmadan, SCP için, 'internal-sftp' ile aynı etkiyi elde etmenin bir yolu var mı? 'İnternal-sftp' ile ilgili gerçekten güzel bir şey, destek dosyalarıyla bir hapishane kurmayı veya potansiyel olarak sömürülebilir üçüncü taraf setuid ikili dosyaları ile uğraşmayı gerektirmemesidir (özellikle rssh'ın bir istismar geçmişi vardır).


1
İstemciler ssh anahtar dosyası kullanarak mı bağlanıyor veya parola kullanıyor mu? Bu bir anahtar dosyasıysa, yapabileceklerini kısıtlamak mümkündür.
Jenny D

Parolalarla bağlanıyorlar.
brianjcohen

Yanıtlar:


3

Bir sisteme sınırlı erişim sağlayan alternatif bir kabuk olan rssh'a bakın .

rssh, ssh (1) üzerinden bir ana bilgisayara sınırlı erişim sağlamak için kısıtlı bir kabuk olup, kabuğu rssh için yapılandırılmış bir kullanıcının scp (1), sftp (1) cvs (1) komutlarından birini veya daha fazlasını kullanmasına izin verir ), rdist (1) ve rsync (1) ve yalnızca bu komutları içerir.

Rssh.conf dosyasını kullanarak kullanıcı başına veya sistem genelinde hangi komutların kullanılabileceğini yapılandırabilirsiniz

Alternatif olarak, istediğinizi yapmak için scponly kullanabilirsiniz . Ssh paketine bir paket görevi görür ve dosya aktarımına izin verir ancak kabuk erişimine izin vermez.


2

Bunu ssh ile mi yapmanız gerekiyor?

EĞER bu durumda kabuklarını şu şekilde ayarlamayı deneyebilirsiniz:

/usr/libexec/openssh/sftp-server

Yukarıdakileri / etc / shell'e eklediğinizden emin olun

Yerleşik hesapları kullanmaktan ayırmak istiyorsanız proftpd'yi ayarlayabilirsiniz.

Proftpd kullanarak güvenli bir SFTP kurdum. proftpd şöyle derlendi:

./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp

Aşağıdaki bu makaleyi ve Google'ın nasıl kurulacağı hakkında daha fazlasını kullanabilir:

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html


2

Korkarım ki OpenSSH ile benzer şekilde kolay veya güvenilir bir şey yok, çünkü gözlemlediğiniz gibi yerleşik bir SFTP sunucusu var, ancak dahili SCP sunucusu yok.

Bir uyarı: Vince Berk'in önerisi birkaç nedenden dolayı kötü:

  1. Kabuğun başlangıç ​​dosyalarıyla ilgili davranışı, SSH'nin sunucu yapılandırmasına bağlı olarak uzaktan ayarlayabileceği ortam değişkenlerinden etkilenebilir.
  2. Kullanıcı sadece ssh / bin / bash komutunu çalıştırabilir ve bir kabuk alabilir. Bir tty olmayacak ve bu yüzden kullanmak rahatsız edici olacak, ama ne ... muhtemelen çalışmasını istemediğiniz diğer programlardan bahsetmiyorum.
  3. Eğer kullanıcı sadece "ssh host rm -f .bash_profile" yapabilirse, .bash_profile izinlerini değiştirmek iyi olmaz; giriş dizini izinleri hakkında hiçbir şey belirtilmedi.

... ve bunun gibi. Bu tür bir yaklaşım çok kırılgandır.


0

Bu üçüncü taraf bir araçtır, bu da sorunun kapsamı dışındadır, ancak yine de bir sözü hak ettiğini düşündüm.

Jailkit: https://olivier.sessink.nl/jailkit/

İkili ve kütüphaneleri hapishaneye kopyalamak ve hapishanenin içinden işletim sistemine işletim sistemini ayarlamak için kullanıcı hapishanelerinin kurulumunu kolaylaştırmak için bir araç koleksiyonuna sahiptir. Ben sftp / scp / rsync-only chroots oluşturdum.

Ayrıca jk_lsh, örneğin scp / sftp / rsync'e yalnızca chroot olmadan izin vermek istiyorsanız, bir kullanıcının çalıştırabileceği komutları sınırlamak için hapishanenin dışında kullanılabilen (jailkit sınırlı kabuk) ile birlikte gelir .


-1

İşte bu sunucu tarafında nasıl bir ipucu. Kullanıcıların kabuğunu, örneğin bash olarak ayarlayın:

usermod -S /bin/bash [username]

Şimdi homedirlerinde aşağıdaki satırla bir '.bash_profile' oluşturun:

[ -n "$PS1" ] && exit

Bu, etkileşimli olmayan oturumların ('scp' gibi) devam etmesine neden olur. Ancak, bir 'ssh' oturum açma girişiminde bulunurlarsa, 'exit' çağrılır ve bağlantı kapatılır.

Ev dizinlerine yeni bir '.bash_profile' yazamayacaklarından emin olun!

chown root:root .bash_profile

Umarım yardımcı olur!


Bu yaklaşım, hapishane gereksinimini dikkate almıyor gibi görünmektedir.
brianjcohen

Evet, ne yazık ki 'scp' tarafı için sshd_config içinde verilen chroot dizini ile çakışan manuel kısıtlama ortamı oluşturmanız ve kısıtlamak istediğiniz her kullanıcı için yukarıdaki numarayı yapmanız gerekir. 'Scp' dahili sftp sunucusuyla çalışmaz.
Vince Berk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.