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
a /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