Tento článek ukazuje, jak vytvořit zabezpečené uživatele SSH File Transfer Protocol (SFTP), kteří jsou omezeni nebo uvězněni ve svých domovských adresářích.
UPOZORNĚNÍ :Nepokoušejte se uvěznit uživatele root. Uvězněte pouze další uživatele, abyste uživateli root nebránili ve správném provádění operací.
Než začnete, projděte si následující doporučené postupy:
-
Domovský adresář uživatele SFTP musí vlastnit
root:root
. Ostatní adresáře mohou (a měly by) vlastnit (a zapisovat) uživatelem. -
Je důležité zajistit, aby uživatel chroot měl přístup k zápisu do zadaného DocumentRoot.
-
Je důležité se přihlásit a vyzkoušet, zda uživatel SFTP funguje správně.
-
Je důležité zajistit, aby byl přidaný uživatel SFTP přidán do skupiny SFTP.
-
Tyto pokyny jsou pro přidání jedné domény (uživatele SFTP), ale můžete je potenciálně použít ke správě více domén.
Důležité :Kroky v tomto článku nefungují s RHEL® 7 nebo CentOS® 7. Stejně jako u každé správné operace chroot tato konfigurace neposkytuje přístup pro zápis do adresáře chroot. Zapisovatelné jsou pouze podadresáře chroot jail. Důvodem je způsob, jakým jsou interpretována oprávnění root v adresářích vyšší úrovně, ve kterých je uživatel SFTP obsažen.
Pomocí následujících kroků vytvořte zabezpečené uživatele SFTP, kteří jsou uvězněni ve svých domovských adresářích:
-
Přidejte skupinu SFTP, kterou chcete použít pro přístup SFTP, spuštěním následujícího příkazu:
groupadd sftponly
-
Přidejte uživatele SFTP spuštěním následujícího příkazu, nahraďte
myuser
s uživatelským jménem:useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
Vytvořte heslo pro uživatele spuštěním následujícího příkazu, nahraďte
myuser
s uživatelským jménem:passwd myuser
-
Otevřete
sshd_config
soubor, který obsahuje konfiguraci SSH a SFTP, spuštěním následujícího příkazu:nano /etc/ssh/sshd_config
-
Zakomentujte následující řádek přidáním symbolu hash (#) na začátek, jak ukazuje následující příklad:
#Subsystem sftp /usr/lib/openssh/sftp-server
-
Přidejte následující řádek přímo pod řádek, který jste právě okomentovali:
Subsystem sftp internal-sftp
-
Přidejte následující kód na konec souboru:
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
Spusťte
sshd
otestujte změny a poté službu restartujte.Důležité :Pokud tento krok provedete nesprávně, může dojít k narušení vaší konfigurace SSHD.
sshd -t service sshd restart
Ujistěte se, že oprávnění k souborům v systému souborů jsou správná
Dále musíte ověřit, že oprávnění k souborům v systému souborů jsou správná, aby vězení SFTP fungovalo správně.
-
Ověřte, že
SFTPROOT
adresář (domovský adresář, který jste nastavili při přidání uživatele SSH) má právouser:root group:root
oprávnění spuštěním následujícího příkazu:chown root:root /var/www/vhosts/mywebsite.com/
-
Chcete-li ověřit, že přihlášení SFTP funguje, připojte se k SFTP spuštěním následujícího příkazu, nahraďte
myuser
s uživatelem, kterého jste si vybrali, jak ukazuje následující příklad:sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
Otestujte výpis adresáře spuštěním následujícího příkazu:
sftp> ls -al
Výstup by měl být podobný následujícímu příkladu:
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
Poznámka :Použijte
cd
příkaz pro přechod do adresáře HTML (který se nachází na adrese/var/www/vhosts/mywebsite.com/html
protože web „documentroot“ je o jednu úroveň nižší nežroot
uživatele SSH SFTP adresář. Toto nastavení byste měli použít, protože mátewww-data
uživatelé (uživatelé webového serveru) mají rootuser:group
oprávnění k jeho souborům. -
Otestujte schopnost odesílat soubory spuštěním následujících příkazů:
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
Otestujte možnost stahování souborů spuštěním následujícího příkazu:
sftp> get test.php Fetching /test.php to test.php
-
Zobrazte aktuální pracovní adresář spuštěním následujícího příkazu:
sftp> pwd Remote working directory: /html
SFTP vidí pouze soubory v
/var/www/vhosts/mywebsite.com/
a považuje tento adresář za kořenový ('/') adresář nejvyšší úrovně. -
Pro připojení k SFTP a nastavení klienta SFTP použijte následující kroky:
- Nainstalujte Cyberduck®.
- Otevřete aplikaci Cyberduck.
- V horní části okna klikněte na ikonu Otevřít připojení .
- V rozbalovací nabídce vyberte možnost SFTP (SSH File Transfer Protocol) .
- Na Serveru zadejte adresu internetového protokolu (IP) serveru.
- Zadejte uživatelské jméno a heslo, které používáte k připojení k SFTP.
- Klikněte na Připojit .
Důležité :Po změně oprávnění souboru vždy otestujte svůj web.