Az SFTP kulcsalapú hitelesítés beállítása

A digitális korban az adatok biztonságos továbbítása kritikus fontosságú. Legyen szó weboldal fájljainak feltöltéséről, szerverek közötti adatcseréről vagy érzékeny céges dokumentumok megosztásáról, a megbízható és titkosított átvitel elengedhetetlen. Ebben a kontextusban az SFTP (SSH File Transfer Protocol) kiemelkedő szerepet játszik, mint a biztonságos fájlátvitel egyik alappillére. Bár sokan jelszóval hitelesítik magukat az SFTP-kapcsolatok során, a valódi biztonságot és kényelmet a kulcsalapú hitelesítés nyújtja. Ez a cikk részletesen bemutatja, hogyan állíthatja be az SFTP kulcsalapú hitelesítést, lépésről lépésre, átfogóan és érthetően.

Miért éppen kulcsalapú hitelesítés? A Jelszavak Korlátai

Kezdjük az alapoknál: miért érdemes kulcsalapú hitelesítésre váltani, amikor a jelszóval történő bejelentkezés is működik? A válasz egyszerű: biztonság és kényelem. A hagyományos jelszavas hitelesítés számos kockázatot rejt:

  • Brutális erő támadások: A támadók automatizált programokkal próbálgatják a jelszavakat, amíg meg nem találják a helyeset. Minél gyengébb a jelszó, annál könnyebb feltörni.
  • Adathalászat és Man-in-the-Middle támadások: A jelszavak ellophatók hamis weboldalakon vagy lehallgatott hálózati forgalom révén.
  • Jelszókezelés: Nehéz erős, egyedi jelszavakat megjegyezni minden szolgáltatáshoz, ami sokszor gyenge, újrahasznált jelszavakhoz vezet.

Ezzel szemben a kulcsalapú hitelesítés egy kriptográfiai kulcspár használatán alapul: egy nyilvános kulcs és egy titkos kulcs. A nyilvános kulcs a szerveren tárolódik, míg a titkos kulcs az ügyfél gépén marad, gondosan védve. A kapcsolat létrejöttekor a szerver kihívást küld, amit csak a hozzá tartozó titkos kulccsal lehet megválaszolni, anélkül, hogy valaha is elküldenénk a titkos kulcsot a hálózaton. Ez a módszer rendkívül biztonságos, mivel:

  • A titkos kulcsot nem lehet „kitalálni” vagy brutális erővel feltörni a modern kriptográfiai algoritmusoknak köszönhetően.
  • A kommunikáció titkosított, így a kulcsok cseréje biztonságos.
  • Lehetőség van a titkos kulcsot egy jelszóval (passphrase) tovább védeni, dupla biztonságot nyújtva.

Most, hogy megértettük az előnyöket, nézzük meg, hogyan valósítható meg ez a gyakorlatban.

Előkészületek: Amit Tudnia Kell a Kezdés Előtt

Mielőtt belekezdenénk a beállításba, győződjön meg róla, hogy a következő előfeltételek teljesülnek:

  • SSH/SFTP szerver: Rendelkeznie kell egy működő SSH szerverrel (pl. OpenSSH), amelyre SFTP-kapcsolaton keresztül szeretne csatlakozni. Ez általában alapértelmezetten telepítve van a legtöbb Linux alapú szerver disztribúción.
  • SSH kliens: Szüksége lesz egy SSH kliensre (pl. PuTTY, OpenSSH kliens, FileZilla, WinSCP), amely támogatja a kulcsalapú hitelesítést.
  • Alapszintű parancssori ismeretek: A beállítások nagy részét parancssorban fogjuk elvégezni.

1. Lépés: SSH Kulcspár Létrehozása

Az első és legfontosabb lépés a kulcspár generálása. Ezt a folyamatot a kliens gépén (arról a gépről, ahonnan csatlakozni szeretne) kell elvégezni. A legtöbb Linux és macOS rendszeren az ssh-keygen parancs áll rendelkezésre, Windows alatt az OpenSSH kliens részeként, vagy PuTTYgen segítségével tehető meg.

Linux/macOS (OpenSSH klienssel)

Nyissa meg a terminált, és futtassa a következő parancsot:

ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/sftp_id_ed25519
  • -t ed25519: Meghatározza a kulcs típusát. Az ED25519 egy modern, biztonságos és hatékony algoritmus. Alternatívaként használhatja az rsa-t is, ekkor a -b 4096 paraméterrel adhatja meg a kulcs hosszát (4096 bit ajánlott RSA esetén).
  • -f ~/.ssh/sftp_id_ed25519: Megadja a kulcsfájlok nevét és helyét. A ~/.ssh/ alapértelmezett, biztonságos hely a kulcsok tárolására. Ez a parancs két fájlt hoz létre:
    • sftp_id_ed25519: Ez a titkos kulcs (private key). SOHA ne ossza meg senkivel!
    • sftp_id_ed25519.pub: Ez a nyilvános kulcs (public key). Ezt kell feltölteni a szerverre.

A parancs futtatásakor a rendszer rákérdez egy jelszóra (passphrase):

Enter passphrase (empty for no passphrase):

Erősen ajánlott egy erős jelszót megadni! Ez a jelszó titkosítja a titkos kulcsát, így ha valaki hozzáfér a titkos kulcsához, akkor is szüksége lesz erre a jelszóra a használatához. Minél hosszabb és komplexebb a jelszó, annál biztonságosabb. Gondoljon rá úgy, mint egy extra védelmi rétegre.

Windows (PuTTYgen-nel)

Ha PuTTY-t vagy WinSCP-t használ Windows-on, akkor a PuTTYgen programmal generálhat kulcspárt:

  1. Indítsa el a PuTTYgen-t.
  2. Válassza ki a kulcs típusát (pl. ED25519, vagy RSA 2048/4096 bit).
  3. Kattintson a „Generate” gombra, és mozgassa az egeret a programon belül a véletlenszerűség generálásához.
  4. A „Key passphrase” és „Confirm passphrase” mezőkben adjon meg egy erős jelszót a titkos kulcsához.
  5. Mentse el a nyilvános kulcsot (Save public key) sftp_id_ed25519.pub néven, majd mentse el a titkos kulcsot (Save private key) sftp_id_ed25519.ppk néven (ez a PuTTY saját formátuma).

2. Lépés: A Nyilvános Kulcs Átvitele a Szerverre

Most, hogy rendelkezik a kulcspárral, a nyilvános kulcsot (sftp_id_ed25519.pub) át kell másolnia a szerverre, ahová csatlakozni szeretne. A szerveren az adott felhasználó (akin keresztül SFTP-zni szeretne) home könyvtárában, a .ssh mappában kell elhelyezni, egy authorized_keys nevű fájlba.

A) Ajánlott módszer: ssh-copy-id (Linux/macOS)

Ez a legegyszerűbb és legbiztonságosabb módszer. A ssh-copy-id parancs automatikusan átmásolja a nyilvános kulcsot, és beállítja a megfelelő jogosultságokat.

ssh-copy-id -i ~/.ssh/sftp_id_ed25519.pub user@your_server_ip_or_hostname

A parancs futtatásakor meg kell adnia a szerver felhasználónevének jelszavát (ha még nem állított be kulcsalapú hitelesítést). Ezután a nyilvános kulcsa hozzáadódik a szerveren lévő felhasználó ~/.ssh/authorized_keys fájljához.

B) Manuális átvitel (minden rendszer)

Ha a ssh-copy-id nem áll rendelkezésre, vagy PuTTYgen-nel generált kulcsot, manuálisan is átviheti a kulcsot.

  1. Másolja át a nyilvános kulcsot a szerverre: Használjon scp-t vagy egy SFTP klienst (jelszóval hitelesítve, ideiglenesen):
    scp ~/.ssh/sftp_id_ed25519.pub user@your_server_ip_or_hostname:/tmp/sftp_id_ed25519.pub
  2. Jelentkezzen be a szerverre SSH-val:
    ssh user@your_server_ip_or_hostname
  3. Hozza létre a .ssh könyvtárat és az authorized_keys fájlt (ha még nem léteznek):
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

    FONTOS: A jogosultságok rendkívül fontosak! A .ssh könyvtárnak 700 (csak a tulajdonos olvashat, írhat, futtathat), az authorized_keys fájlnak pedig 600 (csak a tulajdonos olvashat, írhat) jogosultsággal kell rendelkeznie. Helytelen jogosultságok esetén a kulcsalapú hitelesítés nem fog működni.

  4. Adja hozzá a nyilvános kulcsot az authorized_keys fájlhoz:
    cat /tmp/sftp_id_ed25519.pub >> ~/.ssh/authorized_keys
    rm /tmp/sftp_id_ed25519.pub

3. Lépés: Az SFTP Szerver Konfigurálása (sshd_config)

Most, hogy a nyilvános kulcs a helyén van, ellenőriznünk kell, hogy az SSH szerver (sshd) megfelelően van-e konfigurálva a kulcsalapú hitelesítés engedélyezéséhez.

  1. Jelentkezzen be a szerverre SSH-val.
  2. Nyissa meg az sshd_config fájlt szerkesztésre:
    sudo nano /etc/ssh/sshd_config
  3. Keresse meg és ellenőrizze a következő sorokat:
    • PubkeyAuthentication yes: Ez engedélyezi a kulcsalapú hitelesítést. Győződjön meg róla, hogy nincs kikommentálva (nincs # jel előtte).
    • AuthorizedKeysFile .ssh/authorized_keys: Ez az alapértelmezett beállítás, ami megmondja az SSH szervernek, hol keresse a nyilvános kulcsokat.
  4. Biztonsági javaslat: Jelszóalapú hitelesítés tiltása

    Miután meggyőződött róla, hogy a kulcsalapú hitelesítés működik, és tesztelte a kapcsolatot, erősen ajánlott letiltani a jelszóalapú hitelesítést a további biztonság érdekében:

    PasswordAuthentication no

    Figyelem: Ezt csak akkor tegye meg, ha 100%-ig biztos abban, hogy a kulcsalapú hitelesítés megfelelően működik! Különben kizárhatja magát a szerverről.

  5. Mentse el a változtatásokat és zárja be a szerkesztőt.
  6. Indítsa újra az SSH szolgáltatást a változtatások érvényesítéséhez:
    sudo systemctl restart sshd

    Vagy régebbi rendszereken:

    sudo service ssh restart

4. Lépés: Csatlakozás SFTP Klienssel

Most jött el az igazság pillanata! Próbáljon meg csatlakozni SFTP-n keresztül a frissen generált kulcsokkal.

Parancssori SFTP kliens (Linux/macOS)

Nyissa meg a terminált a kliens gépen, és futtassa a következő parancsot:

sftp -i ~/.ssh/sftp_id_ed25519 user@your_server_ip_or_hostname
  • -i ~/.ssh/sftp_id_ed25519: Megadja a használni kívánt titkos kulcsfájl elérési útját.

Ha a titkos kulcsot jelszóval védte, a rendszer kérni fogja azt. Sikeres hitelesítés esetén egy SFTP parancssorba jut, ahonnan fájlokat tölthet fel, le, stb.

GUI SFTP Kliensek (FileZilla, WinSCP)

A népszerű grafikus SFTP kliensek is támogatják a kulcsalapú hitelesítést.

  • FileZilla:
    1. Lépjen az „Edit” (Szerkesztés) > „Settings” (Beállítások) > „SFTP” menüpontra.
    2. Kattintson az „Add keyfile…” (Kulcsfájl hozzáadása…) gombra, és válassza ki a titkos kulcsfájlt (sftp_id_ed25519, vagy .ppk fájlt Windows esetén).
    3. Ezután a „Site Manager” (Oldalmenedzser) > „New Site” (Új oldal) menüpontban adja meg a szerver adatait (Host, Port, User), és a „Logon Type” (Bejelentkezési típus) opciót állítsa „Interactive” vagy „Normal” értékre. A kulcsot automatikusan fel fogja használni.
  • WinSCP:
    1. Indítsa el a WinSCP-t.
    2. Hozzon létre egy „New Site” (Új oldal) kapcsolatot.
    3. Adja meg a „Host name” (Gazdagépnév), „User name” (Felhasználónév) mezőket.
    4. Kattintson az „Advanced…” (Haladó…) gombra, majd a bal oldali menüben válassza az „Authentication” (Hitelesítés) lehetőséget.
    5. A „Private key file” (Titkos kulcsfájl) mezőben tallózza be a titkos kulcsfájlját (sftp_id_ed25519.ppk vagy konvertált sftp_id_ed25519).
    6. Kattintson az „OK”, majd a „Login” gombra.

5. Lépés: Haladó Beállítások és Legjobb Gyakorlatok

Jelszó (Passphrase) a Titkos Kulcshoz

Ahogy már említettük, a passphrase használata a titkos kulcs védelmére rendkívül fontos. Ha valaki hozzáfér a titkos kulcsfájljához, anélkül, hogy ismerné a jelszót, nem tudja felhasználni. Ezt a jelszót minden alkalommal meg kell adnia, amikor a titkos kulcsot használja. A modern operációs rendszerekben és SSH ügynökökben (pl. ssh-agent) van lehetőség a jelszó cache-elésére egy munkameneten belül, így csak egyszer kell begépelnie.

SFTP felhasználók korlátozása (Chroot Jail)

Amikor csak SFTP hozzáférésre van szüksége egy felhasználónak, és nem SSH shell hozzáférésre, érdemes az ún. „chroot jail” beállítást alkalmazni. Ez azt jelenti, hogy a felhasználó SFTP-n keresztül csak egy meghatározott könyvtárba férhet hozzá, és nem láthatja a szerver többi részét. Ez jelentősen növeli a SFTP biztonságot.

Az /etc/ssh/sshd_config fájlban hozza létre a következő beállítást a felhasználóhoz:

Match User sftpuser
    ForceCommand internal-sftp
    ChrootDirectory /var/www/sftpuser_root
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no
  • Match User sftpuser: Ez a blokk csak az sftpuser felhasználóra vonatkozik.
  • ForceCommand internal-sftp: Ez biztosítja, hogy a felhasználó csak az SFTP szolgáltatást használhassa, shell hozzáférést nem kap.
  • ChrootDirectory /var/www/sftpuser_root: Ez a felhasználó „gyökér” könyvtára lesz. Az SFTP felhasználó ezen a könyvtáron kívül nem láthat semmit.

Fontos jogosultsági megkötések a ChrootDirectory-ra:

  1. A ChrootDirectory-nak és az annak útvonalában lévő összes könyvtárnak (egészen a gyökérkönyvtárig) a root felhasználó tulajdonában kell lennie, és csak a root írhatja (root:root, chmod 755 vagy 750).
  2. A felhasználó számára írható könyvtárat a chrootolt könyvtáron belül kell létrehozni (pl. /var/www/sftpuser_root/uploads), és ennek a könyvtárnak már a felhasználó tulajdonában lehet lennie.
# Példa a chroot directory jogosultságokra
sudo chown root:root /var/www/sftpuser_root
sudo chmod 755 /var/www/sftpuser_root
sudo mkdir /var/www/sftpuser_root/uploads
sudo chown sftpuser:sftpuser /var/www/sftpuser_root/uploads
sudo chmod 700 /var/www/sftpuser_root/uploads

Ne felejtse el újraindítani az SSH szolgáltatást a változtatások után!

Több kulcs kezelése

Érdemes minden egyes felhasználóhoz vagy szolgáltatáshoz külön kulcspárt generálni. Ez növeli a biztonságot: ha egy kulcs kompromittálódik, csak azt kell visszavonni, anélkül, hogy az összes hozzáférést érintené. Az authorized_keys fájlba több nyilvános kulcsot is beírhat, mindegyiket új sorba.

Kulcsok rotációja

A kulcsok rotációja, azaz a kulcsok rendszeres időközönkénti cseréje egy jó biztonsági gyakorlat. Ezzel minimalizálható a kockázata annak, hogy egy potenciálisan kompromittált kulcs túl sokáig maradjon érvényes.

Gyakori Hibák és Hibaelhárítás

Ha a kulcsalapú hitelesítés nem működik, az alábbi pontokat ellenőrizze:

  • Jogosultságok: Ez a leggyakoribb hiba. Ellenőrizze a ~/.ssh (700) és ~/.ssh/authorized_keys (600) jogosultságait a szerveren. Győződjön meg arról is, hogy a felhasználó home könyvtárának és az egész útvonalnak megfelelő jogosultságai vannak (általában 755 vagy 700).
  • Kulcsfájl tartalma: Győződjön meg róla, hogy a nyilvános kulcs tartalma pontosan ugyanaz az authorized_keys fájlban, mint az eredeti .pub fájlban. Nincsenek extra szóközök, sortörések.
  • sshd_config: Ellenőrizze, hogy a PubkeyAuthentication yes be van-e kapcsolva, és újraindította-e az SSH szolgáltatást a változtatások után.
  • Hibaüzenetek: Nézze meg a szerver SSH logjait (pl. /var/log/auth.log vagy journalctl -u sshd), ezek sokat segíthetnek a probléma azonosításában.
  • Passphrase: Győződjön meg róla, hogy a helyes jelszót adta meg a titkos kulcshoz.

Összefoglalás

Az SFTP kulcsalapú hitelesítés beállítása kulcsfontosságú lépés a biztonságos fájlátvitel felé. Bár elsőre bonyolultnak tűnhet, a befektetett idő megtérül a megnövekedett biztonság és a jelszókezeléssel járó gondok elkerülése formájában. Kövesse a fenti lépéseket gondosan, ügyeljen a jogosultságokra és a szerver konfigurációjára, és élvezze a robosztusabb és kényelmesebb fájlátviteli élményt. A biztonságos fájlátvitel nem luxus, hanem alapvető szükséglet, és a kulcsalapú hitelesítés az egyik legerősebb eszköz ennek eléréséhez.

Leave a Reply

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük