< Távoli elérés

stunnel4

Szerző: Sallai András

Copyright © Sallai András, 2011-2020

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