Tartalomjegyzék
stunnel4
- Szerző: Sallai András
- Copyright © Sallai András, 2011-2020
- Web: https://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:
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:
- /etc/stunnel/stunnel.conf
[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.
- /etc/stunnel/psk.txt
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
- /etc/stunnel/stunnel.conf
[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.
- /etc/stunnel/psk1.txt
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