Vyhledávání na webu

Jak omezit uživatele SFTP na domovské adresáře pomocí chroot Jail


V tomto tutoriálu budeme diskutovat o tom, jak omezit uživatele SFTP na jejich domovské adresáře nebo konkrétní adresáře. To znamená, že uživatel má přístup pouze ke svému příslušnému domovskému adresáři, nikoli k celému systému souborů.

Omezení domovských adresářů uživatelů je zásadní, zejména v prostředí sdíleného serveru, aby neoprávněný uživatel nenahlédl do souborů a složek jiného uživatele.

Důležité: Upozorňujeme také, že účelem tohoto článku je poskytnout pouze přístup SFTP, nikoli přihlášení SSH. Podle tohoto článku budete mít oprávnění k přenosu souborů, ale není povoleno provádět vzdálenou relaci SSH.

Doporučená četba: Omezte přístup uživatelů SSH k určitému adresáři pomocí chráněného vězení

Nejjednodušší způsob, jak toho dosáhnout, je vytvořit prostředí chrootované věznice pro přístup SFTP. Tato metoda je stejná pro všechny operační systémy Unix/Linux. Pomocí chrootovaného prostředí můžeme omezit uživatele buď do jejich domovského adresáře, nebo do konkrétního adresáře.

Omezit uživatele na domovské adresáře

V této sekci vytvoříme novou skupinu s názvem sftpgroup a přiřadíme správné vlastnictví a oprávnění uživatelským účtům. Existují dvě možnosti, jak omezit uživatele na domovské nebo konkrétní adresáře, v tomto článku uvidíme oba způsoby.

Vytvořte nebo upravte uživatele a skupiny

Omezme stávajícího uživatele, například tecmint, na jeho domovský adresář s názvem /home/tecmint. Chcete-li to provést, musíte vytvořit novou skupinu sftpgroup pomocí příkazu groupadd, jak je znázorněno:

groupadd sftpgroup

Dále přiřaďte uživatele ‘tecmint’ do skupiny sftpgroup.

usermod -G sftpgroup tecmint

Můžete také vytvořit nového uživatele pomocí příkazu useradd, například senthil a přiřadit uživatele do skupiny sftpusers.

adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint

Upravte konfigurační soubor SSH

Otevřete a přidejte následující řádky do konfiguračního souboru /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Uložte a ukončete soubor, restartujte službu sshd, aby se nové změny projevily.

systemctl restart sshd
OR
service sshd restart

Pokud chrootujete více uživatelů do stejného adresáře, měli byste změnit oprávnění domovského adresáře každého uživatele, abyste zabránili všem uživatelům procházet domovské adresáře ostatních uživatelů.

chmod 700 /home/tecmint

Ověřte přihlášení uživatelů SSH a SFTP

Nyní je čas zkontrolovat přihlášení z místního systému. Zkuste ssh vzdálený systém z místního systému.

ssh [email 

Tady,

  1. tecmint – uživatelské jméno vzdáleného systému.
  2. 192.168.1.150 – IP adresa vzdáleného systému.
Ukázkový výstup:
[email 's password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Poté přistupte ke vzdálenému systému pomocí SFTP.

sftp [email 
Ukázkový výstup:
[email 's password: 
Connected to 192.168.1.150.
sftp>

Zkontrolujeme aktuální pracovní adresář:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Zde je tecmint domovským adresářem. Cd do adresáře tecmint a vytvořte soubory nebo složky podle svého výběru.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Omezit uživatele na konkrétní adresář

V našem předchozím příkladu omezíme stávající uživatele na domovský adresář. Nyní uvidíme, jak omezit nového uživatele na vlastní adresář.

Vytvořit skupinu a nové uživatele

Vytvořte novou skupinu sftpgroup.

groupadd sftpgroup

Dále vytvořte adresář pro skupinu SFTP a přidělte oprávnění pro uživatele root.

mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/

Dále vytvořte pro každého uživatele nové adresáře, ke kterým bude mít plný přístup. Například pomocí následující řady příkazů vytvoříme uživatele tecmint a jeho nový domovský adresář se správným skupinovým oprávněním.

adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/

Nakonfigurujte SSH pro přístup SFTP

Upravte nebo přidejte následující řádky na konec souboru:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Uložte a ukončete soubor. Restartujte službu sshd, aby se uložené změny projevily.

systemctl restart sshd
OR
service sshd restart

To je vše, můžete to zkontrolovat přihlášením ke vzdálenému serveru SSH a SFTP pomocí kroku uvedeného výše v části Ověřit přihlášení SSH a SFTP.

Mějte na paměti, že tato metoda zakáže přístup k shellu, tj. nemůžete přistupovat k relaci shellu vzdáleného systému pomocí SSH. Ke vzdáleným systémům můžete přistupovat pouze prostřednictvím SFTP a provádět přenos souborů do az místních a vzdálených systémů.

Závěr

Nyní víte, jak omezit domovské adresáře uživatelů pomocí prostředí Chroot v Linuxu. Pokud to považujete za užitečné, sdílejte tento článek na svých sociálních sítích a dejte nám vědět v sekci komentářů níže, pokud existují nějaké jiné způsoby, jak omezit domovské adresáře uživatelů.