GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit chrootovaný SFTP v Linuxu

Tato příručka vysvětluje, jak nastavit Chrooted SFTP v Linuxu, abyste omezili přístup uživatelů SSH k domovskému adresáři nebo libovolnému konkrétnímu adresáři. Jinými slovy, donutíme uživatele, aby vstoupili do konkrétního adresáře a nastavili jejich shell na /bin/nologin nebo nějaký jiný shell, který zakazuje přístup k přihlášení ssh. Jakmile je chrootovaný SFTP nakonfigurován, uživatelé mají přístup pouze ke svému přiřazenému domovskému adresáři, ale ne k celému souborovému systému

Povolení chrootovaného přístupu SFTP nabízí následující výhody:

  • Umožněte uživatelům připojit se pouze prostřednictvím SFTP, ale neumožněte jim připojení prostřednictvím SSH.
  • Omezit relaci uživatele SSH na jeho domovský adresář nebo konkrétní adresář podle vašeho výběru.
  • Omezit přístup SSH na určité uživatele a přesto jim umožnit přenášet soubory mezi místními a vzdálenými systémy.
  • Zakázat uživateli přístup k celému systému souborů.

Nyní pojďme do toho a nastavme Chrooted SFTP, abychom omezili uživatele SSH na domovský adresář a/nebo jakýkoli jiný adresář s vězením Chrooted v Linuxu.

Tato příručka je oficiálně testována na distribucích Debian 11 bullseye, Ubuntu 20.04 LTS a Ubuntu 18.04 LTS. Níže uvedené kroky by však měly fungovat na všech distribucích Linuxu, které podporují openSSH .

Nastavte Chrooted SFTP v Linuxu

Od verze 4.9 má openSSH funkci známou jako interní-sftp subsystém který umožňuje pouze SFTP přístup, ale ne SSH přístup. Uživatelé tedy mohou mít přístup pouze k datům ze serveru, ale nemohou k nim přistupovat pomocí SSH.

Vytvořit chrooted adresář

Nejprve vytvořte chrootovaný adresář pomocí příkazu:

$ sudo mkdir /sftp

Udělejte tento adresář plně vlastněným root uživatel pomocí příkazu:

$ sudo chown root:root /sftp/

V tomto adresáři vytvořte samostatné adresáře pro každého uživatele, například /sftp/user1 /sftp/user2 /sftp/user3 a tak dále.

Pro účely této příručky vytvořím adresář s názvem ostechnix pod /sftp adresář.

$ sudo mkdir /sftp/ostechnix

Toto je adresář, kam mohou uživatelé ukládat data. Uživatelé také nemohou překročit tento adresář. Je to jako jejich $HOME adresář.

Vytvořte skupinu sftp a přiřaďte do této skupiny uživatele

Nyní musíme vytvořit uživatele, kteří budou mít přístup k chrootovanému adresáři SFTP.

Vytvořte skupinu s názvem sftponly jak je znázorněno v následujícím příkazu:

$ sudo groupadd sftponly

Poté vytvořte nové uživatele SFTP nebo přiřaďte stávající uživatele k "sftponly" skupina, jak je uvedeno níže.

Dovolte mi vytvořit nového uživatele, například senthil a přiřaďte mu "sftponly" skupina. A pak nastavte jeho domovský adresář jako /sftp/ostechnix a výchozí shell je /sbin/nologin .

Můžeme to udělat pomocí následujícího online příkazu:

$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil

Nastavte heslo pro nově vytvořeného uživatele pomocí příkazu:

$ sudo passwd senthil

Chcete-li upravit stávajícího uživatele, použijte "usermod" místo "useradd" příkaz jako níže:

$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil

Přidělte chrootovanému adresáři správná oprávnění

Musíte přidělit správná oprávnění uživatelům SFTP pro přístup k jejich HOME adresáři, jak je uvedeno níže.

$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/

Ostatní uživatelé SFTP nemají k tomuto adresáři přístup.

Podobně přidělte příslušná oprávnění i všem ostatním uživatelům SFTP.

Doporučené staženíZdarma e-kniha:„Naučte se Linux za 5 dní“

Konfigurovat chrooted SFTP

Upravte /etc/ssh/sshd_config soubor:

$ sudo vi /etc/ssh/sshd_config

Najděte a okomentujte následující řádky (tj. přidejte před něj hvězdičku #, abyste je okomentovali).

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

V některých distribucích, například Ubuntu 18.04 LTS , najděte a okomentujte následující řádek:

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

Dále přidejte na konec souboru následující řádky:

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

Nakonfigurujte chrootovaný SFTP

Pokud chcete omezit uživatele na $HOME adresář, stačí nahradit /sftp pomocí /home ve výše uvedeném kódu. Ujistěte se, že jste zadali správnou cestu k adresáři sftp. Stiskněte ESC a zadejte :wq pro uložení souboru a ukončení.

Restartujte ssh služby pro aktualizaci změn.

$ sudo systemctl restart sshd

Nyní zkuste SSH do tohoto systému z jakéhokoli jiného systému v síti pomocí uživatele sftp (tj. v našem případě senthil).

$ ssh [email protected]1

Zobrazí se následující chybová zpráva.

[email protected]'s password: 
This service allows sftp connections only.
Connection to 192.168.122.181 closed.

Zde 192.168.122.181 je IP adresa mého vzdáleného systému Debian, kde jsem nakonfiguroval SFTP.

Ke vzdálenému systému můžete přistupovat pouze pomocí sftp jak je uvedeno níže.

$ sftp [email protected]
[email protected]'s password: 
Connected to 192.168.43.2.
sftp>

Vidět? Uživatel "senthil" se může připojit přes sftp, ale ne přes ssh.

Chcete-li zjistit aktuální pracovní adresář, použijte 'pwd' příkaz:

sftp> pwd
Remote working directory: /ostechnix
sftp>

Nastavení chrootovaného SFTP v Linuxu

Základní příkazy SFTP

Můžeme se připojit pomocí alternativního portu pomocí -p vlajka.

$ sftp -P <port_number> [email protected]_host

Chcete-li přenést vzdálený soubor do místního systému, postupujte takto:

sftp> get /path/remote_file

Lokální soubor můžeme přenést do vzdáleného systému pomocí příkazu:

sftp> put /path/local_file

Chcete-li přenést vzdálenou složku do místního systému rekurzivně:

sftp> get -R /path/remote_folder

Chcete-li zobrazit seznam souborů na místním počítači:

sftp> lls

Chcete-li zobrazit seznam souborů na vzdáleném počítači:

sftp> ls

Další podrobnosti o použití sftp naleznete na manuálových stránkách.

$ man sftp

Závěr

V této příručce jsme probrali, jak nakonfigurovat a nastavit chrootovaný SFTP v operačních systémech Linux, jako je Debian a Ubuntu.

Doporučené čtení:

  • Jak změnit výchozí port FTP na vlastní port
  • Nainstalujte server VSFTPD v Ubuntu
  • Zabezpečený server VSFTPD pomocí šifrování TLS/SSL v Ubuntu
  • Nastavte FTP server krok za krokem v CentOS
  • FTP_Manager:Jednoduchý skript pro instalaci a správu FTP serveru v CentOS

Linux
  1. Jak zpřístupnit sdílený adresář pomocí Sftp?

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

  3. Jak získat velikost adresáře v Linuxu

  1. Jak aktualizovat symbolický odkaz pro Linux

  2. Jak nahrávat nebo stahovat soubory/adresáře pomocí sFTP v Linuxu

  3. Jak nastavit linuxové chroot vězení

  1. Jak přejmenovat adresář v Linuxu

  2. Jak gzipovat adresář v Linuxu

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