[[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