Jak mohu chrotit uživatele SSH pouze pro sftp do svých domovů?

112

Chci dát klientovi přístup na svůj server, ale chci omezit tyto uživatele na jejich domovské adresáře. Vložím všechny soubory, které chci vidět.

Vytvořil jsem uživatel nazvanýbob a přidal ho do nové skupiny s názvemsftponly. Mají domovský adresář na adrese/home/bob. Změnil jsem jejich shell na/bin/false a zastavil přihlašování SSH. Zde je jejich řádek/etc/passwd:

bob:x:1001:1002::/home/bob:/bin/false

Také jsem změnil/etc/ssh/sshd_config, aby zahrnoval následující:

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

Když se pokouším přihlásit jako je, je to, co vidím

$ sftp bob@server
bob@server's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

Pokud komentujem řádekChrootDirectory, mohu použít SFTP, ale pak mají volnou kontrolu nad serverem. Zjistil jsem, žeChrootDirectory /home funguje, ale stále jim dává přístup k libovolnému domovskému adresáři. Zkoušel jsemChrootDirectory /home/bob, ale to také nefunguje.

Co dělám špatně? Jak mohu omezitbob na/home/bob/?

---- EDIT -----

Dobře, tak jsem se podíval na/var/log/auth.log a viděl jsem to:

May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May  9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob

Nejsem si úplně jistý, co se tam děje, ale naznačuje, že v adresáři uživatelů není něco v pořádku. Zde je výstupls -h /home:

drwxr-xr-x 26 oli      oli      4096 2012-01-19 17:19 oli
drwxr-xr-x  3 bob      bob      4096 2012-05-09 14:11 bob
    
dané Oli 09.05.2012 15:43

4 odpovědi

111

Tato bolest je díky několika bezpečnostním problémům popsána zde jako zde popsáno . V podstatě adresář chrootu musí vlastnitroot a nemůže být jakýkoli přístup pro zápis do skupiny. Půvabný. Takže musíte v podstatě udělat chroot do držáku a že můžete mít upravitelný obsah.

sudo chown root /home/bob
sudo chmod go-w /home/bob
sudo mkdir /home/bob/writable
sudo chown bob:sftponly /home/bob/writable
sudo chmod ug+rwX /home/bob/writable

A bam, můžete se přihlásit a napsat v/writable.

    
odpověděl Oli 09.05.2012 16:21
52

Chcete-li chrotit adresář SFTP, musíte

  1. Vytvoření uživatele a vynucení kořenového vlastníka

    cd /home
    mkdir john
    useradd -d /home/john -M -N -g users john
    sudo chown root:root /home/john
    sudo chmod 755 /home/john
    
  2. Změňte umístění subsystému na / etc / ssh / sshd_config:

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

    a vytvořte uživatelskou sekci na konci souboru (ssh může umírat respawning pokud je umístěn po řádku subsystému):

    Match User john
        ChrootDirectory /home/john
        ForceCommand internal-sftp
        AllowTCPForwarding no
        X11Forwarding no
    
odpověděl josircg 25.10.2012 19:54
5

Celý den jsem se snažil dostat síťový podíl na můj maliník. Chtěl jsem uzamknout uživatele, aby nebyl schopen procházet celým systémem souborů, žádný ssh přihlašovací přístup a chtěl jsem mít přístup k zápisu do síťové sdílené složky.

A tady jsem pracoval:

Nejdříve jsem vytvořil uživatele:

sudo useradd netdrive

Potom jste upravili/etc/passwd a ujistili jste se, že má uživatel/bin/false, takže linka byla:

netdrive:x:1001:1004:Net Drive User,,,:/home/netdrive:/bin/false

Upravil (a)/etc/ssh/sshd_config a zahrnul:

Match User netdrive
  ChrootDirectory /home/netdrive
  ForceCommand internal-sftp
  AllowTcpForwarding no
  X11Forwarding no

Změnil vlastníka a oprávnění domovského adresáře:

sudo chown root:root /home/netdrive/
sudo chmod 755 /home/netdrive/

Ok, takže po tom všem jsem se připojil pomocísshfs, ale v režimu pouze pro čtení. Co musím udělat, abych získal zapisovatelný adresář:

sudo mkdir -p /home/netdrive/home/netdrive/
sudo chown netdrive:netdrive /home/netdrive/home/netdrive/
sudo chmod 755 /home/netdrive/home/netdrive/

To bylo, že fungovalo bez dalších změn. Všimněte si, že pro uživatele mám pouze zapisovatelná oprávnění, nikoliv skupinu jako mnoho dalších řešení online. Byl jsem schopen vytvořit / odstranit / upravit / přejmenovat soubory / složky bez problémů.

Při přístupu pomocísshfs uživateli netdrive kvůli konfiguraci chrootu bych viděl pouze věci uložené v adresáři/home/netdrive/ serveru, perfektní. Opakovaná struktura adresáře/home/netdrive/home/netdrive/ je pro mě tím, že mi pomáhá mít čisté chroot ssh zapisovatelné řešení.

Nyní vám vysvětlím níže uvedené problémy:

Pravděpodobně byste neměli provádět následující odstavce :

Po pohledu na výše uvedená řešení (a mnoho dalších na síti, které dokonce používaly acl (seznamy řízení přístupu)) Stále jsem nemohla fungovat, protože to, co jsem udělal, bylo:

Následující postup NOT funguje pro mě:

sudo mkdir /home/netdrive/writable/
sudo chown netdrive:netdrive /home/netdrive/writable/
sudo chmod 755 /home/netdrive/writable/

Protože uživatel netdrive stále nebyl schopen psát v tomto adresáři/home/netdrive/writable/, i když vlastní složku a má oprávnění. Pak jsem:     sudo chmod 775 / home / netdrive / zapisovatelný / A teď mohu vytvořit adresář a odstranit ho, ale nebyl jsem schopen ho upravit, protože byl vytvořen bez skupinových oprávnění pro zápis. Z toho, co jsem viděl na internetu, používajíacl k opravě. Ale nebyl jsem s tím šťastný, protože jsem musel nainstalovatacl, pak nakonfigurovat připojovací body atd. Také nemám tušení, proč bych potřeboval group oprávnění napsat do složky vlastněné stejného uživatele.

Zdá se, že z nějakého důvodu, že jste vytvořili/home/netdrive/home/netdrive a dali jste vlastnictví poslednímu složcenetdrive, bylo možné, že vše funguje, aniž by došlo ke změně oprávnění group .     

odpověděl mihai.ile 18.07.2015 19:58
0

Sledoval jsem článek, ale to nefungovalo. Začala fungovat poté, co jsem provedla tuto změnu (doporučená ve výše uvedených odpovědích):

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

Navíc jsem vytvořil domovský adresář s kořenovým adresářem, pod kterým jsem měl zapisovatelný podadresář (jak je popsáno výše).

Nová a užitečná věc, kterou chci přidat s touto odpovědí, je, že můžete jednoduše konfigurovat jednoduchým zadáním% h jako domovského adresáře uživatele:

ChrootDirectory %h

Zjistil jsem to díky tomuto odkazu.

    
odpověděl user109764 19.09.2018 00:06