GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit Chroot SFTP v Linuxu (povolit pouze SFTP, ne SSH)

Pokud chcete ve svém systému nastavit účet, který bude používán pouze k přenosu souborů (a nikoli k ssh do systému), měli byste nastavit SFTP Chroot Jail, jak je vysvětleno v tomto článku.

V typickém scénáři sftp (když není nastaven chroot sftp), pokud používáte sftp, uvidíte soubor root, jak je uvedeno níže.

Pokud chcete udělit sftp přístup ve vašem systému externím dodavatelům pro přenos souborů, neměli byste používat standardní sftp. Místo toho byste měli nastavit Chroot SFTP Jail, jak je vysvětleno níže.

Prostředí SFTP bez chrootu

V následujícím příkladu (typické prostředí sftp) může john sftp do systému a zobrazit složku /etc a stáhnout si odtud soubory.

# sftp [email protected]
john@thegeekstuff's password:
sftp> pwd
Remote working directory: /home/john

sftp> ls
projects  john.txt documents 

sftp> cd /etc
sftp> ls -l passwd
-rw-r--r--    0 0        0            3750 Dec 29 23:09 passwd

sftp> get passwd
Fetching /etc/passwd to passwd
/etc/passwd     100% 3750     3.7KB/s   00:00

Prostředí Chroot SFTP

V následujícím příkladu může john sftp do systému a zobrazit pouze adresář, který jste určili, aby john prováděl sftp (tj. /incoming).

Když se John pokusí provést „cd /etc“, zobrazí chybovou zprávu. Vzhledem k tomu, že SFTP je nastaven v prostředí chroot, John nemůže zobrazit žádné další soubory v systému.

# sftp [email protected]
john@thegeekstuff's password:
sftp> pwd
Remote working directory: /home/john

sftp> ls
sftp> cd /etc
Couldn't canonicalise: No such file or directory

Nyní, když víte, co je prostředí Chroot SFTP, pojďme se podívat, jak to nastavit.

1. Vytvořit novou skupinu

Vytvořte skupinu nazvanou sftpusers. Pouze uživatelé, kteří patří do této skupiny, budou v tomto systému automaticky omezeni na SFTP chroot prostředí.

# groupadd sftpusers

2. Vytvořit uživatele (nebo upravit existujícího uživatele)

Řekněme, že chcete vytvořit uživatele guestuser, který by měl mít povoleno provádět pouze SFTP v prostředí chroot a neměl by mít povoleno provádět SSH.

Následující příkaz vytvoří guestuser, přiřadí tohoto uživatele do skupiny sftpusers, udělá /incoming jako domovský adresář, nastaví /sbin/nologin jako shell (což uživateli neumožní ssh a získat přístup k shellu).

# useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# passwd guestuser

Ověřte, že byl uživatel správně vytvořen.

# grep guestuser /etc/passwd
guestuser:x:500:500::/incoming:/sbin/nologin

Pokud chcete upravit stávajícího uživatele a udělat z něj pouze uživatele sftp a umístit ho do vězení chroot sftp, proveďte následující:

# usermod -g sftpusers -d /incoming -s /sbin/nologin john

Související poznámka, pokud musíte přenést soubory z Windows do Linuxu, použijte kteréhokoli z klientů sftp uvedených v tomto seznamu 7 nejlepších klientů sftp.

3. Nastavte subsystém sftp-server v sshd_config

Měli byste instruovat sshd, aby pro sftp použil interní-sftp (místo výchozího sftp-serveru).

Upravte soubor /etc/ssh/sshd_config a zakomentujte následující řádek:

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

Dále přidejte následující řádek do souboru /etc/ssh/sshd_config

Subsystem       sftp    internal-sftp
# grep sftp /etc/ssh/sshd_config
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

4. Zadejte Chroot Directory pro skupinu

Do prostředí chroot jail chcete umístit pouze určité uživatele (tj. uživatele, kteří patří do skupiny sftpusers). Přidejte následující řádky na konec /etc/ssh/sshd_config

# tail /etc/ssh/sshd_config
Match Group sftpusers
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp

Ve výše uvedeném:

  • Match Group sftpusers – To znamená, že následující řádky budou pouze pro uživatele, kteří patří do skupiny sftpusers
  • ChrootDirectory /sftp/%u – Toto je cesta, která bude použita pro chroot po ověření uživatele. %u označuje uživatele. Takže pro Johna to bude /sftp/john.
  • ForceCommand internal-sftp – Toto vynutí provedení internal-sftp a ignoruje všechny příkazy, které jsou zmíněny v souboru ~/.ssh/rc.

5. Vytvořte domovský adresář sftp

Protože jsme výše zadali /sftp jako ChrootDirectory, vytvořte tento adresář (což je ekvivalent vašeho typického adresáře /home).

# mkdir /sftp

Nyní pod /sftp vytvořte jednotlivé adresáře pro uživatele, kteří jsou součástí skupiny sftpusers. tj. uživatelé, kteří budou moci provádět pouze sftp a budou v prostředí chroot.

# mkdir /sftp/guestuser

Takže /sftp/guestuser je ekvivalentní / pro hostujícího uživatele. Když guestuser sftp do systému a provede „cd /“, uvidí pouze obsah adresářů pod „/sftp/guestuser“ (a ne skutečné / systému). Toto je síla chrootu.

V tomto adresáři /sftp/guestuser tedy vytvořte libovolný podadresář, který chcete, aby jej uživatel viděl. Například vytvořte příchozí adresář, kde mohou uživatelé sftp své soubory.

# mkdir /sftp/guestuser/incoming

6. Nastavte příslušné oprávnění

Aby chroot správně fungoval, musíte se ujistit, že jsou v adresáři, který jste právě vytvořili výše, správně nastavena příslušná oprávnění.

Nastavte vlastnictví na uživatele a skupinu na skupinu sftpusers, jak je uvedeno níže.

# chown guestuser:sftpusers /sftp/guestuser/incoming

Oprávnění pro příchozí adresář bude vypadat následovně.

# ls -ld /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming

Oprávnění pro adresář /sftp/guestuser

bude vypadat následovně
# ls -ld /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser

# ls -ld /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp

7. Restartujte sshd a otestujte Chroot SFTP

Restartujte sshd:

# service sshd restart

Otestujte prostředí chroot sftp. Jak vidíte níže, když gusetuser provede sftp a udělá „cd /“, uvidí pouze příchozí adresář.

# sftp [email protected]
guestuser@thegeekstuff's password:

sftp> pwd
Remote working directory: /incoming

sftp> cd /
sftp> ls
incoming

Když guestuser přenese nějaké soubory do adresáře /incoming ze sftp, budou skutečně umístěny v adresáři /sftp/guestuser/incoming v systému.


Linux
  1. Jak povolit SFTP a zakázat SSH?

  2. Jak nastavit SSH bez hesla v systému Linux

  3. Jak nastavit Rsync s SSH na UNIX / Linux (rsync bez hesla)

  1. Jak nastavit Reverse SSH Tunnel v Linuxu

  2. Jak nastavit přihlášení SSH bez hesla v Linuxu

  3. Jak nastavit Rsync bez hesla s SSH na UNIX / Linux?

  1. Jak nastavit linuxové chroot vězení

  2. Jak nastavit klíče SSH pro přihlášení k ssh „bez hesla“ v systému Linux

  3. Jak povolit ssh s prázdnými hesly v Linuxu