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:
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
Ez a Mű a Creative Commons Nevezd meg!-Így add tovább! 2.5 Magyarország Licenc feltételeinek megfelelően szabadon felhasználható.