SSH port forward beállítása

Az SSH -n keresztüli port forwardolást egy általam használt levelezési példán keresztül mutatom be.

Követelmények, feladatok:

  • Egy nem biztonságos levelező szerver
  • Amihez van SSH elérésünk
  • Amihez van generált kulcsunk a “néma” csatlakozáshoz
  • Titkosított kapcsolat létrehozása ehhez a levelező szerverhez a levelek küldésére/letöltésére

Alapvető fogalmak ismerete:

  • SSH
  • Port (kapu)
  • RSA, DSA, Kulcs (key)
  • Levelező protokollok: SMTP, POP3, IMAP

Nem biztonságos levelező szerver

Ez alatt azt értem, hogy van egy levelező szerver amit használunk, de csak sima SMTP, POP3 vagy IMAP -ot használ. Ez azért nem biztonságos, mert minden egyes kapcsolat felvételkor – legyen az levél küldés vagy fogadás – elküldjük a jelszavunkat plain text-ben (plain text == olvasható) a hálózaton keresztül. Ezt pedig (főleg ha WIFI-zünk) nagyon egyszerűen ellophatják, amire eszközöket nem mondanék, de van, és meglehetősen egyszerű a használatuk.
Ezt a kapcsolatot kell titkosítani amire többek közt a SSH port forward megoldást ad.

SSH elérés

A művelethez szükséges, hogy legyen SSH elérésünk a szerverre, hogy annak 25-ös és 143 (IMAP = TCP/143; POP3 = 110) portját forwardolhassuk a saját gépünkre (localhost).

Generált kulcs a ?néma” csatlakozáshoz

Szükséges még a kulcs alapú hitelesítés engedélyezése a célszerver SSH konfigurációjában, hogy ne kelljen minden egyes alkalommal a jelszót is beírni.
/etc/ssh/sshd_config-ban:

PubKeyAuthentication 			yes

Kulcs alapú SSH login:

budacsik@puby:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/budacsik/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/budacsik/.ssh/id_rsa.
Your public key has been saved in /home/budacsik/.ssh/id_rsa.pub.
The key fingerprint is:
59:fe:f0:3e:c1:0f:7a:cd:2a:8b:b1:d9:c6:84:2e:8e 			budacsik@puby

Az ssh-keygen -el legyártjuk a privát (marad a mi gépünkön, default: ~/.ssh/id.rsa) és publikus (ezt átmásoljuk a szerverre, default: ~/.ssh/id_rsa.pub) kulcsunkat.

~$ scp .ssh/id_rsa.pub budacsik@mailserver.domain.com:~/.ssh

Majd a ~/.ssh könyvtárba lépve a levelező szerveren adjuk ki a következő parancsot:

~$ cat id_rsa.pub >> authorized_keys

Ezzel bemásoljuk a publikus kulcsunkat a szerver által ismer kulcsok közé.
Itt (a levelező szerveren) ellenőrizzük, hogy engedélyezve van e az SSH konfigurációjában a port forwardolás.

~$ grep "AllowTcpForwarding" /etc/ssh/sshd_config
#AllowTcpForwarding 			yes

Teszt! Nekem működik 😉
Note: Enter passphrase (empty for no passphrase):
Ha itt megadunk jelszót, akkor a szerver a kulcs elfogadása előtt ezt kérni fogja.
Fontosabb kapcsolók:
-t Megadhatjuk, hogy RSA vagy DSA kulcsot hozunk létre. Alapértelmezett az RSA.
-c Csak RSA1 támogatja. Komment lehet a kulcshoz fűzni, például az e-mail címünk. A komment része lesz a kulcsnak és a titkosításhoz lesz használva.
-f Megadhatjuk a kulcs nevét útvonallal együtt is. Alapértelmezetten: id_rsa és id_rsa.pub.
Fájlok:
~/.ssh/id_rsa
Ez tartalmazza a privát kulcsunkat. Ennek nem szabad olvashatónak
lennie más felhasználók számára.
~/.ssh/id_rsa.pub
Ez a publikus kulcsunk. Ezt hozzá kell adni minden szerveren a
~/.ssh/authirized_keys fájlhoz ahová szeretnénk ezzel a kulccsal jelszó
nélkül belépni.

Titkosított kapcsolat létrehozása ehhez a levelező szerverhez a levelek küldésére/letöltésére

A titkosított kapcsolat létrehozása után már hiába sniffelik le a forgalmunkat, nem tudják elolvasni a jelszavunkat, és az egyéb adatainkat.
Igaz, hogy erre is vannak támadási lehetőségek, de nagyobb ?szakértelmet” igényel. Ami azért csökkenti annak a lehetőségét, hogy támadás áldozatává váljunk.
Parancs szintaxisa

~$ ssh -L sport:lohalhost:dport budacsik@mailserv@domain.com

Parancs (v. 1)

~$ ssh -L 3025:localhost:25 budacsik@mailserv.domain.com
~$ ssh -L 3143:localhost:143 budacsik@mailserv.domain.com

Ezután a levelező kliensünket is módosítani kell a következő képpen:
SMTP server host: localhost
SMTP server port: 3025
IMAP server host: localhost
IMAP server port: 3143
A parancs első verziója működik, de bele tehetnénk egy fájlba is, hogy ne kelljen mindig beírni. Ehhez két hasznos kapcsolót még bele kell tenni:
-f Használatával a háttérben fog futni, nem kell nyitva maradnia egykonzolnak.
-N Port forward-nál használatos parancs, ha lenne is nyitott terminál, ez nem engedi, hogy parancsot futtassunk rajta. Hasznos,ha ez a cél.
Plusz, hogy ne legyen olyan ?nagy” a szkript, egy sorra redukáljuk:
Parancs (v. 2)

ssh -f -N -L 3025:localhost:25  -L 3143:localhost:143 budacsik@mailserv.domain.com

Note: a ?\” karakter csak a sortörés miatt szerepel, a parancsban nincs szerepe.
A valóságban ez egy sor, csak itt most nem fért ki egy sorba.
Teszt!

netstat -ntap | grep ssh
tcp     0   0 127.0.0.1:3143     0.0.0.0:*     LISTEN     10266/ssh
tcp     0   0 127.0.0.1:3025     0.0.0.0:*     LISTEN     10266/ssh

Levelező kliens megfelelő beállítása, levelek küldése/fogadása
Creative Commons License
Ez a Mű a Creative Commons Nevezd meg!-Így add tovább! 2.5 Magyarország Licenc feltételeinek megfelelően szabadon felhasználható.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .