[MEGOLDVA] Kizárólag OpenVPN keresztüli SSH elérésének beállítása. Tűzfalasok - Help ME!

 ( lyosca | 2014. május 8., csütörtök - 11:16 )

Üdv,

Adoot egy Ubuntu 12.04 lts, amelyen van egy futó OpenVPN szerver. Ez a szerver Redirect-Gateway ként küldi tovább kifelé a klienseket, így a szerveren megy keresztül minden forgalma kliensnek. A célom az lenne, hogy csak openvpn kapcsolaton keresztül lehessen csatlakozini SSH-al a szerveremre nagyobb biztonság érdekében.

Tűzfalon kellene gondolom állítani, de bármit próbáltam eddig az nem sikerült. A tűzfal beállításokat vissza vettem minimumra.

*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -s 172.18.200.0/24 -j SNAT --to-source **.***.**.***
COMMIT

*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -s 172.18.200.0/24 -j ACCEPT
-A FORWARD -o tun0 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
COMMIT

172.18.200.0/24 tartomány az amelyet az OpenVPN szerver készít a klienseknek.

A segítséget és értelmes hozzászólásokat előre is köszönöm !!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Dehisz mindent beengedsz a serveredre:

*nat
...
:INPUT ACCEPT
...

----
올드보이
http://molnaristvan.eu/

Üdv.

Az a NAT :) Lejebb ha megnézed INPUT DROP-ra van állítva, de amúgy látszik a tűzfalból fix ip címem. A post routing miatt kell beslőleg, hozzá csatolnom az OpenVPN forgalmát a saját hálózat forgalmához, a redirect-gateway végett :)

Na én valahogy így csinálnám:

# csak valasz csomagokat fogadok el
/sbin/iptables -t nat -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# SSH port ezt lehet esetleg szukiteni IP cimekre, tartomanyokra
/sbin/iptables -t nat -A INPUT -i eth0 -p TCP --dport 22 -s 80.77.123.67 -j ACCEPT
# Itt a -i kapcsolo amin be tudod allitani a tun device -odat, pl.: tun0

Azért azt ne felejtsd el, hogy ha (ezt lejjebb is írják) lerohad az openvpn -ed akkor ki vagy zárva a gépedből. Ergó legyen failover és/vagy más bejárat.

----
올드보이
http://molnaristvan.eu/

érdekes, bár szerintem kifejezetten rossz stratégia két okból is:
1. az ssh eleve "biztonságos", attól nem lesz jobb, hogy bedugod egy vpn tunnelbe is
2. ha esetleg meghal az openvpn, akkor csak helyi terminálon tudsz vele bármit is kezdeni.

Ha jobb biztonságot akarsz 2 dolgot javasolnék inkább:
1. tedd el az ssh-t a 22-es portról
2. használj port-knockingot a belépéshez

+1

3. használjon OPIE-t (one time password megoldás), ezzel tovább tudja szivatni magát :-P

Továbbá:
- rendes jelszó, esetleg kulcs
- n hibás próbálkozások után az adott IP-t bannolni 1 órára

Üdv,

Az ideális megoldás nekem az lenne, ha az ssh-t nem is tudnák támadni, az az elérhetetlenné tenni. így eléggé kézenfekvő lenne a megdoldás amit igyekszem elérni.

Üdv, Crayon.

1. Az ssh annyira biztonságos mint amennyire (heartbleed)féle hibák. Egyenlőre ennél biztonságosabb módszert nem ismerek még. Bár másol nem is láttam még ezt, de attól még tuti használják.

2. Attól nem kell tartanom, hogy meghal az OpenVPN. De ha meg is történne akkor is 1 percbe kerülne vissza állítanom a szervert egészében, működő állapotába :)

1. Most csak azért van 22 porton mert vissza húztam alap állapotba a tűzfalam (első lépés ssh beállítások álltalába nekem)

2. Port knockingot nem ismerem, de megnézem. :)

Összeségében még mindig egyszerűbb tűzfalas megoldást keresek :)

Fogtam két, egyenlőre levágott deszkát - könyvespolc helyett egyelőre jó lesz.

Üdv,

Most ide egy olyan "szkeccset" képzeltem, mikor Peter Griffin beszélget a bevándorló indiaival, és az ömlengve áradozik Peter vicces irónikus mondatain :)

Bevándorló indiaiként egészen tűrhetően megtanultad a magyar nyelvet, de az egyelőre/egyenlőre dolgot még gyakorold egy picit.

Bár megjegyzendő, hogy a "magyar" szó nálam így irandó "Magyar". Trollkodáson kívül értesz is valamihez ? :)

Akkor ezt is rosszul tudod, de indiai bevándorlóknak talán el lehet nézni :-P

Üj le fiam 1-es :)

Sajnos nem, a "* nyelv" kisbetűvel írandó.

A nyelv is, a nemzetiség is (mivel jelző).
Azt csak néhány nagyon-nagyon magyarkodó hiszi, hogy nagy M. Mert ők annyira magyarok, hogy rájuk a nyelvtani szabályok sem vonatkoznak ;)

Hofi forog a sírjában...

Na igen. Ő még tudott magyarul is. :)

Ezt tőled vártam volna a legkevésbé... ;)))
Néha érnek meglepetések. :)

Az ssh annyira biztonságos mint amennyire (heartbleed)féle hibák

Te is kevered az OpenSSL-t az OpenSSH-val...

+1

De hogy a kérdésedre is legyen válasz:
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT --> -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j ACCEPT

Üdv, Junior013

Köszi a választ, de sajnos nem használt. Annyiból nem ilyen egyszerű az eset, hogy most ami az OpenVPN keresztül jön be minden forgalom postroutingolva van a fix ip címemre.

Pedig valami ilyesmi kéne neked.

Én is ezt javasoltam volna, hogy szűrj az interfészre.

A postroutingban az IP cím átírás az interfészt nem változtatja meg.

Az, hogy nem használt, az azt jelenti, hogy továbbra is be tudsz lépni máshonnan is? Mert akkor a túl engedékeny szabályt kéne először megkeresned és kigyomlálnod.

Én azt mondanám, hogy mivel VPN-ről mindent beengedsz amúgy is, az INPUT csatornád első sorát:
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
töröld ki!

Üdv,

az interface-re való szűréssel az a gond, hogy mikor beérkeznek a csomagok már a gépen belül egyből átadódnak a eth0-nak a postrouting miatt. Az eth0 ra meg hiába szűrök, mert akkor kizárom magam. IP címre úgyszint hiába szűrtem, mivel önmagamat a saját ipcímemmel látom a netről. **.***.53.104.

Ellenőrizted, vagy csak feltételezed?

Én úgy tudom (de most nem tudom ellenőrizni), hogy a nat IP címet változtat, de interfészt nem.

másfelől, ha olyan csomagról beszélünk, ami VPN-en keresztül jön be, és a gép saját maga feldolgozza, arra szerintem a postrouting nem aktiválódik.

man iptables:
nat:
This table is consulted when a packet that creates a new connection is encountered. It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out).

A bejövő csomagokra ennek alapján csak a PREROUTING ugrik.

Mindenesetre ha a VPN felől érkező csomagok ugyanolyan IP címről és ugyanolyan interfészről jönnek, mint a nem VPN felől érkezők, akkor egyszerűen nem tudod őket szétválasztani.

Viszont akkor nem értem, hogy minek szivatod magad a VPN felől érkező csomagok natolásával.
Talán érdemes lenne azokat, amik a VPN interfészéről jönnek, nem natolni, és akkor nem lenne semmi gondod.

+kulcs alapú auth
+root login tiltva default
+22, 2222 portokat hanyagolni
+allowusers-et használni az sshd configban
+ha lehet, source ip alapján megadni, honnan lehet belépni
+fail2ban (bekonfigolva az új portra). Paranoid szinten 1 fail login, 24 óra ban a címre.

Ovpn-en keresztül cseppet sem biztonságosabb...

Az nem megoldás, hogy amikor kell SSH, akkor VPN-en belépsz a *router konfigjába, kinyitsz egy tetszőleges portot SSH-nak, majd dolgod végeztével azt bezárod?
Szvsz az a port a legkevésbé támadható, ami nincs nyitva. :)

*ha a géped a router, akkor a megfelelő tűzfalszabályt alkalmazod a port ideiglenes nyitására.


openSUSE 13.1 x86_64.

Üdv,

Sajnos nem. A tűzfal egyben a szerver is. ezért van szükség arra, hogy innen szabályozzam be. Sajnos ha bezárnám a ssh elérést, utána hogyan nyitnám ki ?:)

port knock? (akarom mondani knockd)

Üdv,

De a szervernek teljesen át van adva forgalom. :) Csak helyből lehetne, akkor elérni a konzolos felületet.

/etc/ssh/sshd_config
ListenAddress tun_interface_ip_cime

Hoppá, megelőztél ;)

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds

Üdv,

Kipróbáltam azt is sajnos nem működött. A Postrouting miatt szerintem.

Ezekkel próbáltam ki.

ListenAddress tun1 172.18.200.0/24
ListenAddress 172.18.200.0/24
ListenAddress 172.18.200.6

-A POSTROUTING -s 172.18.200.0/24 -j SNAT --to-source **.***.**.***

miért natolsz mindent? saját háló forgalma maradhat saját a címen.

javít

-A POSTROUTING -s 172.18.200.0/24 -d !172.18.200.0/24 -j SNAT --to-source **.***.**.***

ListenAddress 172.18.200.6 - így jó volna, ha ez a vpn ip cime.
utána: ssht -csak a vpn hálóról engeded a vpc címre...

IPTABLES -I INPUT -s !172.18.200.0/24 -d 172.18.200.6 -j DROP

Üdv,

Ez jó megoldás lenne, ha kilensen nem redirect-gateway lenne. Ez azt jelenti hogy minden forgalmat a cliens benyom a vpnbe és a server gépen keresztül lép ki. Ez lenne a route -n

Destination-----Gateway---------Genmask---------Flags-Metric-Ref----Use-Iface
0.0.0.0---------**.***.53.1-----0.0.0.0---------UG----100----0---------0 eth0
**.***.53.0----0.0.0.0----------255.255.255.0---U-----0------0---------0 eth0
169.254.0.0-----0.0.0.0----------255.255.0.0-----U-----1000---0---------0 eth0
172.18.200.0----172.18.200.2----255.255.255.0---UG----0------0---------0 tun1
172.18.200.2----0.0.0.0----------255.255.255.255-UH----0------0--------0 tun1

A fix címe a servernek pedig: **.***.53.104

Kliensőrl pedig így néz ,ki a route

Active Routes:
Network Destination--------Netmask----------Gateway-------Interface--Metric
----------0.0.0.0----------0.0.0.0--------192.168.1.1-----192.168.1.12----10
----------0.0.0.0--------128.0.0.0-------172.18.200.5-----172.18.200.6----30
----**.***.53.104--255.255.255.255------192.168.1.1-----192.168.1.12----10

Szerintem a legjobb megoldás, ha az ssh configban a ListenAdresses -hez beírod a vpn beli interface ip-jét ;). A tűzfalon meg tilts mindent (kivéve a vpn-t ugye :P ).

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds

Üdv,

Sajnos ez azért nem járható út mert az OpenVPN-ben vagy egy opció amit használok, amely a redirect-gateway opció. Ez a felépült csatornába nyomja a kliens minden forgalmát. Emiatt Postroutingolni kell, hogy átadja a szervernek minden kilépő forgalmat. Ez azt jelenti hogy hiába szürném a tun1-et ha úgy is az eth0 lépek ki és az is kapja teljes forgalmat egyből.

Üdv, mindenkinek aki hozzászólt!

Sikerült megoldanom a dolgot. A megközelítés jó volt a kivétel kezelésnél. Csak az ssh kliens felül routingolta magát ha server IP címéhez csatlakoztam közvetlenül... **.***.53.104. A trükk az lett végül, hogy mikor felépül az OpenVPN kapcsolat SSH kliensnek (putty) azt mondtam az OpenVPN szerver címéhez kapcsolódjon 172.18.200.1. Innentől kezdve az alagutat használja az SSH is.

netstat -n --protocol inet | grep ':22'
tcp 0 64 172.18.200.1:22 172.18.200.6:50877 ESTABLISHED
tcp 0 0...172.18.200.1:22 172.18.200.6:50886 ESTABLISHED
tcp 0 0...**.***.53.104:22 84.206.40.98:3765 ESTABLISHED

Ettől kezdve meg egyszerű tűzfal szabály volt a --dport után hogy -s 172.18.200.0/24 és működik is. Most csak ha megy az OpenVPN akkor lehet SSH használni és csak a belső címre való csatlakozáson keresztül.

Köszönöm mindenkinek az építő jellegű hozzászolását!