[[oktatas:linux:távoli elérés|< Távoli elérés]] ====== stunnel4 ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2011-2020 * [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: http://szit.hu ===== Az stunnelről ===== Az stunnel egy több platformos, nyílt forráskódú szoftver, amely lehetővé teszi hálózati protokollok alagutaztatását, TLS kapcsolaton keresztül. Az adott hálózati alkalmazásnak egyáltalán nem kell ehhez ismernie a TLS protokollt. A hálózati forgalom így biztonságosan, titkosítva haladhat az Interneten. Használható Linux, Windows és Android rendszeren. Az stunnel segítségével egy privát hálózatban elérhető szolgáltatást az Interneten keresztül biztonságosan elérhetünk bárhonnan. A projekt weboldala: * https://www.stunnel.org/ Ehhez hasonló megoldás az SSH alagút. ===== Cél ===== Szeretnénk egy belső hálózat webszerverét elérni, titkosított alagúton keresztül. A webszerver csak a belső hálózatról érhető el. Az is célunk, hogy a szervert csak azonosítás után lehessen elérni. ===== Szerver oldalon ===== Telepítjük az stunnel4 csomagot: apt install stunnel4 Hozzunk létre egy tanúsítványt a titkosított kapcsolat számára: openssl req -new -x509 -nodes -days 365 \ -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem Hozzuk létre az stunnel.conf állományt a /etc/stunnel könyvtárban: [http] client = no accept = 8000 connect = 192.168.10.2:80 cert = /etc/stunnel/cert.pem ciphers = PSK PSKsecrets = /etc/stunnel/psk.txt * client * A client beállítással megmondhatjuk szervert vagy klienst hozunk létre * accept * Milyen porton fogadunk el a kliensektől kapcsolatot * connect * Milyen szolgáltatást akarunk alagutaztatni, kiszolgálni * a 192.168.10.2 a privát hálózat szolgáltatása * cert * A TLS tanúsítvány helye * ciphers * A hitelesítéshez módja * PSKsecrets * A hitelesítéshez használt állomány helye A ciphers és a PSKsecrets nélkül is működik, de akkor bárki beléphet. Hozzuk létre a psk.txt állományt, amiben leírjuk azokat a felhasználókat, akik beléphetnek. janos:01234567890123456789 mari:01234567890123456789 A kulcs rész (a kettőspont utáni rész), legyen véletlen karakterek sorozat. Itt most túl egyszerű számsort választottunk. A kulcsnak minimum 20 karakternek kell lennie. Minden kliens számára létrehozhatunk egy ilyen sort. A psk.txt állomány egy sorát átmásoljuk a kliensre. Lehet például az első sor psk1.txt fájlba. Állítsuk be, hogy csak a tulajdonos láthassa a fájlt: chmod 600 /etc/stunnel/psk.txt Az stunnelt ezek után kézzel indítjuk: stunnel Szerveroldalon célszerű beállítani, hogy alapértelmezetten elinduljon rendszerindításkor. Ha ezt szeretnénk, szerkesszük a /etc/default/stunnel4 állományt: nano /etc/default/stunnel4 Cseréljük le az ENABLED értékét 1-re: ENABLED=1 Ezek után a systemd rendszerben engedélyezzük: systemctl enable stunnel4 Ellenőrzés: Ellenőrzéshez használjuk a ps axf és/vagy a ss -lt parancsot: ps axf ss -lt ===== Kliens oldalon ===== A példában az stunnel szerver címe: 195.100.100.2, ahova saját címet kell behelyettesíteni. A beállításokat Linuxon írom le, de Windowson is megvalósítható. Telepítjük az stunnel4 csomagot: apt install stunnel4 Hozzunk létre egy tanúsítványt a titkosított kapcsolat számára: openssl req -new -x509 -nodes -days 365 \ -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem [http] client = yes accept = 9000 connect = 195.100.100.2:8000 cert = /etc/stunnel/cert.pem PSKsecrets = /etc/stunnel/psk1.txt A PSKsecrets csak akkor szükséges, ha szerver oldalon is be van állítva, de nélküle bárki elérheti a szervert. A psk1.txt állományban a szerveren lévő psk.txt nevű állomány egyik sorának kell szerepelnie. janos:01234567890123456789 Ne feledkezzünk meg, bonyolultabb kulcsot megadni. Állítsuk be, hogy csak a tulajdonos láthassa a fájlt: chmod 600 /etc/stunnel/psk1.txt Ellenőrzés: Ellenőrzéshez használjuk a ps axf és/vagy a ss -lt parancsot: ps axf ss -lt ===== Használat ===== Kliens oldalon indítsuk el az stunnel programot parancssorból: stunnel A kliens böngészőjébe írjuk be: localhost:9000 ===== Tanúsítványokról ===== A tanúsítványok természetesen többféle képen is elkészíthetők. Itt egy másik példát látunk. openssl genrsa 1024 > stunnel.key openssl req -new -x509 -key stunnel.key -days 3650 -out stunnel.crt cat stunnel.crt stunnel.key > stunnel.pem