Zahmetsiz SFTP erişimi


1

İnternetten birisi için yerel bir klasöre erişim sağlamaya çalışıyorum. Etrafta biraz gezindikten sonra, SFTP’nin güvenlik duvarı üzerinden İnternet’in kaotik ve kötü dünyasına maruz kalmasının en güvenli şey olduğu sonucuna vardım. Openssh-server'ı bu amaçla kullanmayı planlıyorum. Openssh'ın rastgele bir saldırganı durduracağına güvenmeme rağmen, birisi ssh ile bağlandıktan sonra bilgisayarımın güvenliğinden emin değilim.

Özellikle, o kişinin kullanıcı hesabına herhangi bir ayrıcalık vermese bile, “hiç kimseye” “su” diyebilir. Ve daha önce böyle şeyler için hiç endişelenmediğim için, bir noktada kimseye ılımlı ayrıcalıklar vermiş olabilirim (kesin haklar değil!).

Elbette en başta kimseye imtiyaz verme konusundaki yorumlarınıza değer veririm, ama asıl mesele bu değil. Amacım, SFTP'ye böyle bir sanal alandaki birine, bu tür şeyler için endişelenmeme gerek duymayacağım (en azından daha önce yapmam gerekenden çok değil) erişimini sağlamak.

Bu gerçekten mümkün mü? Saçmalıyor muyum yoksa boşuna endişeli miyim?


1
Aradığınızı düşünün, kullanıcıyı chroot etmek ve varsayılan kabuklarını (/ bin / bash'un tersine) SFTP'den başka komutları yerine getirmemek için değiştirmek mi?
James

@James kendi varsayılan kabuğunu değiştirmek güzel bir fikir, SFTP komutlarından başka hiçbir şeyi desteklemeyeceğini söyleyebileceğim bir kabuk önerebilir misiniz?
enobayram

Yanıtlar:


2

Muhtemelen sunucuyu hafifçe sertleştirmek istiyorsunuz. fail2ban ve bağlantı noktasını 22'den iyi bir başlangıç ​​olarak değiştirmek) ancak, sorunuzu doğru okuduğumu varsayarak, bir SFTP kullanıcısını chroot etmek ve yalnızca SFTP kullanabilmek için (diğer komutların yerine)

Bunu sunucularımdan birine aşağıdaki komut dosyasıyla uyguladım:

echo 'CREATING USER' $1

echo 'adding user ..'
sudo useradd -d /home/$1 -s /usr/lib/sftp-server -M -N -g sftponly $1
echo '..done'

echo '--------------'
echo 'set a password'
sudo passwd $1

echo 'creating dir structure ..'
sudo mkdir -p /home/$1/uploads /home/$1/.ssh
sudo chown $1:sftponly /home/$1/uploads /home/$1/.ssh
#
cd /home/$1
echo 'adding shares ..'
sudo mkdir -p {ebooks,misc,movies,music,tv}
echo 'ebooks' && sudo mount --rbind /home/media/ebooks /home/$1/ebooks -o ro
echo 'misc' && sudo mount --rbind /home/media/misc /home/$1/misc -o ro
echo 'movies' && sudo mount --rbind /home/media/movies /home/$1/movies -o ro
echo 'music' && sudo mount --rbind /home/media/music /home/$1/music -o ro
echo 'tv' && sudo mount --rbind /home/media/tv /home/$1/tv -o ro
#
echo '..done'

Bu ne yapar:

  1. Kullanıcıyı oluşturur, onları 'sftponly' grubuna ekler ve kabuğunu değiştirir
  2. Bu kullanıcının içine chroot yapması için bir dizin yapısı oluşturur
  3. Mevcut bir dosya ağacını yeni kullanıcılar eşdeğer klasörüne monte etmek için mount + rbind kullanır (salt okunur)

Kullanmadan önce, aşağıdakileri yaparak sistemi hazırlamanız gerekecektir:

Grup ekle

sudo addgroup sftponly

Sshd_config değiştir

/etc/ssh/sshd_config dosya ve aşağıdakileri ekleyin:

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

Aynı dosyada, şöyle bir şey okuyan satırı bulun Subsystem sftp /usr/lib/openssh/sftp-server ve değiştir Subsystem sftp internal-sftp

Kullanılabilir kabukları düzenle

sudo nano /etc/shells

aşağıdakini ekleyin:

/usr/lib/sftp-server

Sanırım bu bellekten. İşe yaramazsa haberim olsun. Asıl fikrim var solderintheveins.co.uk/2011/03/ubuntu-sftp-only-account-how-to bir süre önce ancak işlemi biraz otomatikleştirmek ve kullanıcı tarafından özyinelemeli dizin geçişine izin vermek istedi (bunlar orada ele alınmadı ancak --rbind ile yapıldı)
James

Vay, kapsamlı cevap, çok teşekkür ederim. Cevabınızı en kısa sürede kabul ediyorum (ki umarım yakındadır) Uygularım ve çalıştığını görürüm.
enobayram

Değerli cevabınız için teşekkür ederim, talimatlarınızı denedim ve onlar benim için çalıştı.
enobayram
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.