2013. szeptember 12., csütörtök

Stunnel

A mai bejegyzésben leírom, hogy hogy lehet két gépet egy stunnelen keresztül a legegyszerűbb módon biztonságosan összekötni. Csak azért írom le, mert sokféle leírással találkkoztam a neten és egyik hosszabb és bonyolultabb volt mint a másik, pedig ezt elég egyszerűen is meg lehet oldani.

Server oldal:

Installáljuk fel a stunnel legújabb verzióját és amikor a certet generálja adjuk meg a CommonName mezőben, hogy stunnel1 vagy hogy server (a többi mezőre üssünk entert -> nincs jelentőségük)
a stunnel.pem fájlból egy szövegszerkesztővel vegyük ki a ---Begin Certificate , ---End Certificate közötti részeket és mentsük el a certs.pem fájlba. (ebben lesznek a CA certek)
Ez így néz ki kb:
-----BEGIN CERTIFICATE-----
MIIDnjCCAoagAwIBAgIJAOdb/lnGNB7s
...
PMkArdl9ItUcAPbkL6/OwF45
-----END CERTIFICATE-----

Szerkesszük át a stunnel.conf-ot:
stunnel.conf:
debug = 7
; ez azért kell, hogy lássuk a hibákat
cert = stunnel.pem
;ez a server oldali cert + key file a stunnel automatikusan megcsinálja installáláskor
verify = 3
;ez állítja az ellenőrzés erősségét. Először célszerű 0-ra állítani és ha úgy minden ok akkor feljebb lehet venni
CAfile = certs.pem
;ebben vannak a ca certek

[service]
client = no
;ez nem a kliens
accept = 3333
;a port ahol figyel a stunnelünk, erre kell távolról kapcsolódni majd a másik stunnellel.
connect = 127.0.0.1:4444
;erre a lokális portra fog kapcsolódni a stunnel.

Kliens oldal
Installáljuk fel ugyanazt a verziót ami a szerveren fut és nyomkodjuk az entert a certificate elkészítésénél. A CommonName-hez írjuk be, hogy stunnel2 vagy hogy client.
a stunnel.pem fájlból egy szövegszerkesztővel vegyük ki a ---Begin Certificate , ---End Certificate közötti részeket és mentsük el a certs.pem fájlba
A serveren lévő és ezen lévő certs.pem fileokat egyesítsük (egy szövegszerkesztővel)
Másoljuk mindkét tartalmat mindkét fájlba bele.
Szerkesszük meg a stunnel.conf fájlt.
stunnel.conf
debug = 7
; ez azért kell, hogy lássuk a hibákat
cert = stunnel.pem
;ez a server oldali cert + key file a stunnel automatikusan megcsinálja installáláskor
verify = 3
;ez állítja az ellenőrzés erősségét. Először célszerű 0-ra állítani és ha úgy minden ok akkorfeljebb lehet venni 
CAfile = certs.pem
;ebben vannak a ca certek

[service]
client =yes
;ez a kliens
accept =127.0.0.1:4444
;a port ahol figyel a stunnelünk, erre kell  kapcsolódni majd a klienssel
connect =server.gép.ip.címe:3333
;erre a távoli portra fog kapcsolódni a stunnel.

Kész! (Nem kell külön CA-t installálni és egyéb hülyeségekkel bajlódni!)

Indítsuk el a stunneleket és netcattal teszteljük le:

Server oldalon :
nc -l -p 4444

Kliens oldalon:
nc 127.0.0.1 4444

Az eredmény: A kliens oldali 127.0.0.7:4444 át van stunnelezve egy biztonságosan védett csatornán a szerver oldali 127.0.0.1:4444 portra.

kliens app -> conn 127.0.0.1:4444 -> stunnel -> távoli gép:3333 - stunnel -> server app -> 127.0.0.1:4444

Ez abban az esetben jó megoldás, ha az interneten kell rácsatlakoznunk valamilyen szolgáltatásra de mégsem szeretnénk az adott szolgáltatást elérhetővé tenni a net felől. A szerver oldali routeren csak a 3333-as portra kell engedélyezni a forgalmat a valódi 4444-re nem így azt kívülről nem lehet elérni. a 3333-as porton pedig a stunnel miatt csak érvényes certificate-el rendelkező kliens tud csatlakozni.
Brute force és egyéb támadási felületek kivédve. Csak DoS-olni tudják az alkalmazást.

1 megjegyzés:

  1. BlueHost is ultimately one of the best hosting provider with plans for any hosting requirements.

    VálaszTörlés