Ubuntu'da kısıtlı bir SFTP sunucusu nasıl kurulur?


81

Giriş sırasında ortak anahtar kimlik doğrulaması gerektirmeyen kök, sudo, sftp-sadece kullanıcı hesaplarının nasıl ayarlanacağını bilmek istiyorum. diğer üst dizinlere erişemiyorum.

Yanıtlar:


91

Ubuntu kullanarak bir Ana bilgisayarda ssh hizmeti kurmaya başlamanıza yardımcı olacak en iyi kaynak OpenSSH Sunucusudur . Bu, bir İstemci makineden SSH üzerinden dosyalara erişmek, aktarmak ve yönetmek için SSH Dosya Aktarım Protokolü'nü (aynı zamanda Güvenli Dosya Aktarım Protokolü veya SFTP) kullanmanızı sağlar.

Çözüme Genel Bakış

  • Ubuntu'da OpenSSH serverbir Host makinesinde bir kurulum yapabilir ve bir kullanıcı sshyalnızca bir kullanıcı adı ve şifre kullanarak İstemciden Host sunucusuna bağlanmak için kullanabilir . Ancak, ortak anahtar kimlik doğrulamasının önerildiğini unutmayın.

" Bir SSH sunucusu kurmadan önce güçlü bir şifreniz olduğundan emin olun ( şifreleri tamamen devre dışı bırakmak isteyebilirsiniz )"

  • Ana Bilgisayarda oluşturulan Yönetici Kullanıcı Hesaplarında sudo ayrıcalıkları olacak, Ana Bilgisayarda oluşturulan Standart Kullanıcı Hesapları olmayacak.

OpenSSH Sunucunuzu Host cihazına kurun ve yapılandırın

Host'a bir OpenSSH sunucusu kurmak için:

sudo apt-get install openssh-server

Ana Bilgisayarınıza Statik IP adresi verin, böylece ona güvenilir bir şekilde bağlanabilirsiniz:

nm-connection-editor

OpenSSH sunucunuzu yapılandırmak için , "ilk önce, sshd_config dosyanızın yedeğini ev dizininize kopyalayarak veya / etc / ssh içinde salt okunur bir kopya yaparak::"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"Dosyanızı yedekledikten sonra sshd_config, örneğin herhangi bir metin düzenleyicide değişiklikler yapabilirsiniz:"

sudo -H gedit /etc/ssh/sshd_config

Bu değişikliklerin geçerli olması için ssh hizmetinizi Ana Bilgisayarda yeniden başlatmanız gerekir.

sudo service ssh restart

Aşağıdaki Güvenlik Önlemlerini dikkate alın

  • Yönlendiricinizde bağlantı noktası iletmeyi etkinleştirmeyin: Yönlendiricinizden yönlendiriciden Bağlantı Noktası 22'ye vb. Bağlanmasını istediğinde, yönlendiriciniz bağlantı noktası iletmeyi etkinleştirmediyseniz uymaz.
  • Kök girişini devre dışı bırak: Yorum yap PermitRootLogin without-password; PermitRootLogin noAna Bilgisayar'a ekle/etc/ssh/sshd_config
  • Standart olmayan SSH portu seçin: Yorum yaz Port 22; Port <new-port-number>Ana Bilgisayar'a ekle/etc/ssh/sshd_config
  • Yalnızca yerel bağlantılara izin ver: Ekle ListenAddress 192.168.0.10
  • Bazı kullanıcıların belirli bağlantı noktalarında bulunmasına izin ver: Ana Bilgisayarlara AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>veyaAllowUsers <username>@111.222.333.*/etc/ssh/sshd_config
  • Yalnızca RSA anahtarı (şifresiz) bağlantılarına izin ver: ~/.ssh/id_rsa.pubHer bir Müşterinin içeriğini yeni bir Ana Bilgisayar hattı olarak ekleyin ~/.ssh/authorized_keys. Ardından PasswordAuthentication noHost’a ekle/etc/ssh/sshd_config
  • Saldırganların çatlama girişimlerini yavaşlatın: Gelen bağlantıları 10 / dakika olarak sınırlamak için Host'ta ufw (karmaşık güvenlik duvarı) kullanın: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • Daha fazla fikir için, bkz. SSH Erişimini Güvenli Kalma

Yapmanız gerektiğini düşünüyorsanız PasswordAuthentication, sshd_configDosyanızı Etkinleştirin

İfade ile satırı bulun ve PasswordAuthenticationokunmasını sağlayın:

PasswordAuthentication yes

Yeni sshd_configdosyanızı kaydedin ve ardından Host sshhizmetini yeniden başlatın :

sudo service ssh restart

İnternet üzerinden herhangi bir yerden erişime ihtiyacınız varsa, trafiği OpenSSH sunucunuza yönlendirmek için yerel yönlendiricinizde Kurulum Bağlantı Noktası İletme

Bağlantı noktası Ana Bilgisayarının sshhizmetinin sshd_configdosyayı dinlediğini ve yönlendiricinizi bu bağlantı noktasını hedefleyen TCP / UDP trafiğini OpenSSH sunucunuzun IP adresine iletecek şekilde ayarladığını unutmayın.

Ana bilgisayara bağlanın ve komut satırı veya terminal aracılığıyla giriş yapın

  • Bir SFTP kabuk terminalini <username>Ana Bilgisayardaki gibi açmak için İstemcide bir Terminal açın ve 123.123.1.23Ana Bilgisayarın IP adresi ile değiştirerek aşağıdaki komutu girin :

    sftp <username>@123.123.1.23
    
    • Bağlantı noktası numarasını değiştirdiyseniz, Host'un OpenSSH sunucusu dinler:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • SSH kabuk terminalini <username>Host'ta olduğu gibi açmak için, Client üzerinde bir Terminal açın ve Host'un 123.123.1.23IP adresi ile değiştirerek aşağıdaki komutu girin :

    ssh <username>@123.123.1.23
    
    • Bağlantı noktası numarasını değiştirdiyseniz, Host'un OpenSSH sunucusu dinler:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

Dosya transferlerini etkinleştirmek için daha görsel SFTP erişimi için Host'a bağlanın ve GUI dosya yöneticisi (örn. Nautilus) ile giriş yapın.

  1. İstemcide Nautilus'u açın
  2. Dosya> Sunucuya Bağlan'ı seçin.
  3. Tür: SSH
  4. Sunucu: Ana Bilgisayarın IP adresini girin
  5. Port: Host sshd_configdosyasında belirtilen port numarası
  6. Kullanıcı adı: kullanıcı adı
  7. Şifre: şifre

görüntü tanımını buraya girin

14.04'te:

  1. İstemcide Nautilus'u açın
  2. Sunucuya bağlan
  3. Tür: `ssh @ 123.123.1.23:

Ana klasörde, kısıtlı dosya izinleriyle ana klasörlerinde Standart Kullanıcı Hesapları oluşturun

Ana Bilgisayarda bulunan uygun dosya izinleri, Ana Bilgisayar'da oluşturduğunuz her standart kullanıcının (sudo ayrıcalıkları olmadan) /home/new_userdizinine sahip olacağını, ancak dizin yapısının geri kalanıyla sınırlı izinlere sahip olacağını garanti eder .

  • Sınırlı izinler mutlaka dosya adlarını ve dizin yapısını göremedikleri anlamına gelmez.

Umarım bu yardımcı olur!


9
Bana öyle geliyor ki, çok kapsamlı görünmekle birlikte, aslında OP'lerin sorusunun en zor kısmını cevaplamakta başarısız oluyor: "üst düzeydeki diğer dizinlere erişemezler." Yukarıdaki gibi uygulanırsa, kullanıcı dizin yapısının büyük çoğunluğunu okuyabilir.
ostergaard

2
@ Ajostergaard'ın yorumuna genişletmek için, bu düzenli bir unix kullanıcısı oluşturur ve onlara SSH ve SFTP erişimine izin verir. Düzenli bir unix kullanıcısı (root değil) web sunucusu yapılandırması ve çok daha fazlası gibi çok sayıda hassas dosyaya erişebilir ve bunları görüntüleyebilir. Bu kesinlikle güvenli değildir ve OP tarafından istenen sınırlamayı kesinlikle karşılamaz.
Simon Woodside

50

Adım 1: Takılı değilse OpenSSH paketini kurun

sudo apt-get install openssh-server

Adım 2: SFTP kullanıcıları için ayrı grup oluşturun.

sudo addgroup ftpaccess

Adım 3: /etc/ssh/sshd_configDosyayı düzenleyin ve aşağıdaki gibi değişiklikler yapın. Çizginin altında bulun ve yorum yapın.

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

ve bu satırları dosyanın sonuna ekleyin.

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

Adım 4: sshd servisini yeniden başlatın.

sudo service ssh restart

Adım 5: ftpaccess grubu ile kullanıcı ekleyin ve şifre oluşturun.

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

Adım 6: Giriş dizini iznini değiştirme.

sudo chown root:root /home/paul

Adım 7: Yüklemek için ev içinde bir dizin oluşturun ve gruba izin verin.

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

Bu kadar .

Bakınız: ubuntu'da SFTP kurulumu


Bu doğru cevap gibi görünüyor. Test etmedim, ama en azından tarama yolunu kısıtlayan asıl zorluktan bahsetti.
Mohammed Noureldin

Test ettim ve 755 olan giriş klasöründeki varsayılan izinler nedeniyle çok izinliydi. Giriş klasöründe yaptım sudo chmod 711ve yalnızca www klasörüne ftp yapmama izin verdi. Şimdiye kadar iyi görünüyor ama belki başkaları
çınlayabiliyor

0

Denyhosts , bakmak isteyebileceğiniz "jtd" tarafından belirtilenlerin yanı sıra başka bir araçtır. SSH sunucunuzla tekrarlanan bağlantı girişimlerini otomatik olarak engelleyebilir. Ubuntu depolarına kurulabilir.


Paket denyhosts sadece berrak (10.04LTS) ve kesin (12.04LTS) için uygundur. packages.ubuntu.com/search?suite=all&keywords=denyhosts
AB

Denyhosts, Ubuntu depolarında artık bulunmamakla birlikte, yine de farklı bir yöntemle kurulabilir ancak uzun zamandan beri güncellenmedi. Bu nedenle, Denyhosts kullanmak akıllıca değil.
Faizan Akram Dar

0

Kullanıcıya Erişimi Sınırlandır

Burada sadece kullanıcının dosya transferi yapmasına izin vereceğiz ve terminal erişimini devre dışı bırakacağız.

Bunun için yapılandırma dosyasının altına aşağıdaki kodları ekleyin.

$ sudo nano /etc/ssh/sshd_config

Şimdi dosya açılacak ve kodu yapıştırınız.

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

filemgKullanıcı adınızla değiştirin . Sonra dosyayı kaydedin ve kapatın.

Bu kadar.

Referans: Ubuntu 16.04’de SFTP kullanımı

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.