Az SSH-alagutak használata a korlátozott kiszolgálók eléréséhez és biztonságos tallózáshoz
Az SSH kliens csatlakozik egy Secure Shell kiszolgálóhoz, amely lehetővé teszi a terminálparancsok futtatását, mintha egy másik számítógép előtt ült volna. Az SSH-kliens azonban lehetővé teszi, hogy a helyi rendszer és a távoli SSH-kiszolgáló között egy portot „alagúzzon”.
Három különböző típusú SSH-alagút létezik, és mindegyiket különböző célokra használják. Mindegyik SSH-kiszolgálót használ a forgalom átirányítására az egyik hálózati portról a másikra. A forgalmat a titkosított SSH-kapcsolaton keresztül küldjük, így nem lehet a tranzitban figyelni vagy módosítani.
Ezt megteheti a ssh
parancs, amely Linux, MacOS és más UNIX-szerű operációs rendszereken található. A beépített ssh-parancsot nem tartalmazó Windows-on az ingyenes eszköz a PuTTY-t ajánljuk az SSH-kiszolgálókhoz való csatlakozáshoz. Támogatja az SSH alagutakat is.
Helyi port továbbítása: Tegye elérhetővé a távoli erőforrásokat a helyi rendszeren
A „Local port forwarding” lehetővé teszi a helyi hálózati erőforrások elérését, amelyek nincsenek kitéve az internetnek. Tegyük fel például, hogy otthonról szeretné elérni az irodában található adatbázis-kiszolgálót. Biztonsági okokból az adatbázis-kiszolgáló csak úgy van konfigurálva, hogy elfogadja a helyi irodai hálózatról érkező kapcsolatokat. De ha az irodában van egy SSH-kiszolgáló, és hogy az SSH-kiszolgáló lehetővé teszi az irodahálózaton kívüli kapcsolatokat, akkor otthonról csatlakozhat az SSH-kiszolgálóhoz, és hozzáférhet az adatbázis-kiszolgálóhoz, mintha az irodában lennél. Ez gyakran előfordul, mivel egyszerűbb egy SSH-kiszolgálót védeni a támadásokkal szemben, mint a különböző hálózati erőforrások biztosítását.
Ehhez hozzon létre egy SSH kapcsolatot az SSH szerverrel, és mondja el az ügyfélnek, hogy továbbítsa a forgalmat egy adott portról a helyi PC-ről, például az 1234-es portról az adatbázis kiszolgálójának és az irodai hálózat portjának címére. Tehát, amikor megpróbál hozzáférni az adatbázis-kiszolgálóhoz az aktuális PC-n, a „localhost” 1234-es portján, a forgalom automatikusan „alagutak” az SSH-kapcsolaton keresztül, és elküldik az adatbázis-kiszolgálónak. Az SSH-kiszolgáló közepén ül, és továbbítja a forgalmat. Bármelyik parancssor vagy grafikus eszköz segítségével elérheti az adatbázis-kiszolgálót, mintha a helyi számítógépen futna.
A helyi továbbítás használatához az SSH-kiszolgálóhoz csatlakozzon, de a -L
érv. A szintaxis:
ssh -L local_port: remote_address: remote_port felhasználóné[email protected]
Tegyük fel például, hogy az irodai adatbázis-kiszolgáló az irodai hálózaton található 192.168.1.111 helyen található. Hozzáférhet az irodai SSH-kiszolgálóhoz: ssh.youroffice.com
, és az SSH-kiszolgáló felhasználói fiókja bubifrizura
. Ebben az esetben a parancs így néz ki:
ssh-L 8888: 192.168.1.111: 1234 [email protected]
A parancs futtatása után hozzáférhet az adatbázis-kiszolgálóhoz a 8888-as porton a localhost-on. Tehát, ha az adatbázis-kiszolgáló web-hozzáférést kínál, akkor a http: // localhost: 8888-at csatlakoztathatja a webböngészőjébe, hogy hozzáférhessen. Ha van egy parancssori eszköz, amely az adatbázis hálózati címét igényli, akkor azt a localhost: 8888 címre kell mutatnia. A számítógép 8888-as portjára küldött összes forgalmat az irodai hálózaton 192.168.1.111:1234-es alagútra fogjuk átállítani.
Ez egy kicsit zavarosabb, ha egy SSH szerverrel azonos rendszeren futó kiszolgálóalkalmazáshoz kíván csatlakozni. Tegyük fel például, hogy van egy irodai számítógépén a 22. porton futó SSH-kiszolgáló, de ugyanazon a rendszeren ugyanazon a címen van egy 1234-es porton futó adatbázis-kiszolgáló. Az adatbázis-kiszolgálót otthonról szeretné elérni, de a rendszer csak az SSH-kapcsolatokat fogadja el a 22. porton, és a tűzfal nem engedélyezi más külső kapcsolatokat.
Ebben az esetben a következő parancsot futtathatja:
ssh -L 8888: localhost: 1234 [email protected]
Amikor megpróbál hozzáférni az adatbázis-kiszolgálóhoz a jelenlegi 8888-as porton, a forgalmat az SSH-kapcsolaton keresztül küldjük. Amikor az SSH-kiszolgálót futtató rendszerre érkezik, az SSH-kiszolgáló elküldi az 1234-es portra a „localhost” -on, amely ugyanaz a számítógép, amely maga az SSH-kiszolgálót futtatja. Tehát a fenti helyi parancs a „localhost” -ot jelenti a távoli szerver szempontjából.
Ehhez a Windows PuTTY alkalmazásában válassza a Kapcsolat> SSH> Alagutak lehetőséget. Válassza ki a „Helyi” opciót. „Forrásport” esetén lépjen be a helyi portra. A „Célállomás” mezőbe írja be a célcímet és a portot a remote_address: remote_port formában.
Például, ha ugyanazt az SSH-alagútot szeretné beállítani, mint a fentiek, beírja 8888
a forrásport és localhost: 1234
mint célállomás. Kattintson az „Add” gombra, majd kattintson az „Open” gombra az SSH kapcsolat megnyitásához. A csatlakozás előtt természetesen be kell írnia az SSH szerver címét és portját is a fő „Session” képernyőn.
Távoli port-továbbítás: Helyi erőforrások elérhetővé tétele távoli rendszeren
A „Távoli port továbbítás” a helyi továbbítás ellentéte, és nem használják olyan gyakran. Lehetővé teszi az erőforrás létrehozását a helyi számítógépen az SSH szerveren. Tegyük fel például, hogy a helyi számítógépen webkiszolgálót futtat. A számítógép azonban olyan tűzfal mögött van, amely nem teszi lehetővé a kiszolgálószoftver bejövő forgalmát.
Feltételezve, hogy elérheti a távoli SSH-kiszolgálót, csatlakozhat az SSH-kiszolgálóhoz, és távoli port-továbbítást használhat. Az SSH-kliens megmondja a kiszolgálónak, hogy továbbítsa egy adott port-mondatot, az 1234-es portot az SSH-kiszolgálón egy adott címre és portra az aktuális PC-n vagy helyi hálózaton. Amikor valaki hozzáfér az 1234-es porthoz az SSH-kiszolgálón, a forgalom automatikusan „alagútba kerül” az SSH-kapcsolaton. Bárki, aki hozzáfér az SSH-kiszolgálóhoz, hozzáférhet a számítógépén futó webszerverhez. Ez hatékony módja annak, hogy a tűzfalakon keresztül alagutazjon.
A távoli továbbítás használatához használja a ssh
parancsot a -R
érv. A szintaxis nagyrészt megegyezik a helyi továbbítással:
ssh -R remote_port: local_address: local_port felhasználóné[email protected]
Tegyük fel, hogy egy szerveralkalmazást szeretnénk hallgatni a helyi számítógép 1234-es portján a távoli SSH-kiszolgáló 8888-as portján. Az SSH szerver címe ssh.youroffice.com
és a felhasználóneved az SSH szerveren bubifrizura. A következő parancsot futtatná:
ssh-R 8888: localhost: 1234 [email protected]
Akkor valaki csatlakozhatna a 8888-as porton az SSH-kiszolgálóhoz, és ez a kapcsolat az 1234-es porton futó kiszolgálóalkalmazáshoz lett volna csatlakoztatva a helyi számítógépen, amelyről létrejött a kapcsolat.
Ehhez a Windows rendszeren a PuTTY programban válassza a Csatlakozás> SSH> Alagutak lehetőséget. Válassza ki a „Remote” opciót. „Forrásport” esetén adja meg a távoli portot. A „Célállomás” mezőben adja meg a célcímet és a portot a local_address: local_port formában.
Például, ha a fenti példát szeretné beállítani, beírja 8888
a forrásport és localhost: 1234
mint célállomás. Kattintson az „Add” gombra, majd kattintson az „Open” gombra az SSH kapcsolat megnyitásához. A csatlakozás előtt természetesen be kell írnia az SSH szerver címét és portját is a fő „Session” képernyőn.
Ezután az emberek csatlakozhatnak a 8888-as porthoz az SSH-kiszolgálón, és forgalmukat a helyi rendszer 1234-es portjához kellett lefutni.
Alapértelmezés szerint a távoli SSH-kiszolgáló csak ugyanabból a gépből érkező kapcsolatokat hallgatja. Más szavakkal, csak az SSH szerverrel azonos rendszerű személyek csatlakozhatnak. Ez biztonsági okokból történik. Ha ezt a viselkedést felülírja, engedélyeznie kell a távoli SSH-kiszolgáló sshd_config „GatewayPorts” opcióját.
Dinamikus port-továbbítás: használja az SSH-kiszolgálót proxyként
Van is „dinamikus port-továbbítás”, amely hasonlóan működik, mint egy proxy vagy VPN. Az SSH kliens létrehoz egy SOCKS proxy-t, amely az alkalmazásokat konfigurálhatja. A proxy segítségével küldött összes forgalmat az SSH-kiszolgálón keresztül küldjük. Ez hasonló a helyi továbbításhoz - a helyi forgalmat egy adott portra küldi a számítógépen, és elküldi az SSH-kapcsolatra egy távoli helyre.
Tegyük fel például, hogy nyilvános Wi-Fi hálózatot használ. Biztonságosan szeretné böngészni anélkül, hogy bepattant volna. Ha otthon van SSH-kiszolgálója, csatlakozhat hozzá, és dinamikus port-továbbítást használhat. Az SSH kliens létrehoz egy SOCKS proxy-t a számítógépén. Az ehhez a proxyhoz küldött összes forgalmat az SSH-kiszolgáló kapcsolaton keresztül küldjük. Senki, aki felügyeli a nyilvános Wi-Fi hálózatot, nem tudja nyomon követni a böngészést vagy cenzúrázni a hozzáférhető webhelyeket. A látogatott oldalak szempontjából olyan lesz, mintha otthon ült volna a számítógép előtt. Ez azt is jelenti, hogy ezt a trükköt csak az USA-beli webhelyek elérésére használhatja, miközben az USA-n kívül, természetesen az SSH-kiszolgálóhoz való hozzáféréssel, az USA-ban természetesen.
Egy másik példa lehet, hogy elérheti az otthoni hálózaton lévő médiaszerver alkalmazást. Biztonsági okokból csak egy SSH-kiszolgáló állhat fenn az interneten. Nem engedélyezi a bejövő kapcsolatokat az internetről a médiaszerver alkalmazására. Dinamikus portátirányítást állíthat be, konfigurálhat egy webböngészőt a SOCKS proxy használatához, majd elérheti az otthoni hálózaton futó kiszolgálókat a webböngészőn keresztül, mintha otthon ülne volna az SSH rendszer előtt. Például, ha a médiaszerver az otthoni hálózat 192.168.1.123-as portján található, csatlakoztathatja a címet 192.168.1.123
a SOCKS proxy használatával bármely alkalmazásba, és úgy érheti el a médiaszervert, mintha az otthoni hálózaton lenne.
A dinamikus továbbítás használatához futtassa az ssh parancsot a -D
érv, mint így:
ssh -D local_port felhasználóné[email protected]
Tegyük fel például, hogy van hozzáférése egy SSH-kiszolgálóhoz: ssh.yourhome.com
és a felhasználóneved az SSH szerveren bubifrizura
. Dinamikus továbbítással szeretné megnyitni a SOCKS proxy-t a 8888-as porton az aktuális PC-n. A következő parancsot futtatná:
ssh-D 8888 [email protected]
Ezután konfigurálhat egy webböngészőt vagy egy másik alkalmazást a helyi IP-cím (127.0.01) és a 8888-as port használatához. Az alkalmazásból származó összes forgalmat átirányítják az alagútban.
Ehhez a Windows rendszeren a PuTTY programban válassza a Csatlakozás> SSH> Alagutak lehetőséget. Válassza ki a „Dinamikus” opciót. „Forrásport” esetén lépjen be a helyi portra.
Például, ha a 8888-as porton szeretnénk létrehozni egy SOCKS-proxy-t, beírná 8888
a forrásport. Kattintson az „Add” gombra, majd kattintson az „Open” gombra az SSH kapcsolat megnyitásához. A csatlakozás előtt természetesen be kell írnia az SSH szerver címét és portját is a fő „Session” képernyőn.
Ezután konfigurálhat egy alkalmazást, hogy hozzáférjen a helyi számítógépen lévő SOCKS proxyhoz (azaz a 127.0.0.1 IP-címhez, amely a helyi számítógépre mutat), és adja meg a megfelelő portot.
Például konfigurálhatja a Firefoxot a SOCKS proxy használatához. Ez különösen hasznos, mert a Firefoxnak saját proxy beállításai lehetnek, és nem kell a rendszer egészére kiterjedő proxy beállításokat használni. A Firefox továbbítja a forgalmat az SSH-alagúton keresztül, míg más alkalmazások általában az internetkapcsolatot használják.
Ha ezt a Firefoxban végzi, válassza a „Manuális proxy konfiguráció” lehetőséget, írja be a „127.0.0.1” szót a SOCKS gazdagép mezőbe, és adja meg a dinamikus portot a „Port” mezőbe. Hagyja üresen a HTTP proxy, SSL proxy és FTP proxy dobozokat.
Az alagút aktív marad és nyitva marad, amíg az SSH munkamenet-kapcsolat nyitva van. Amikor befejezi az SSH-munkamenetet és leválasztja a kiszolgálóról, az alagút zárva lesz. Az alagút újbóli megnyitásához csak csatlakoztassa újra a megfelelő parancsot (vagy a PuTTY megfelelő beállításait).