Hook-ka client-connect ee OpenVPN: halkee cinwaankaagu runtii tagaa
Skript client-connect ma soo celin karo cinwaan isagoo daabacaya. Eeg sida faylka ku meel gaadhka ah ee hook-ka, xaaladda bixitaanka iyo topology ay go'aansadaan IP-ga macmiilka.
Cinwaan ka soo celin skript client-connect waxay u egtahay inuu debeclo IP-ga macmiilka. Laakiin ma yeelo: kanaalka kaliya ee hook-ku u leeyahay server-ka waa fayl ku meel gaadh ah oo jidkiisu yimaado isagoo ah doodda ugu dambeysa ee skript-ka, cinwaankana waa in lagu qoraa halkaas oo ku qoran ifconfig-push. Skript daabacaya cinwaanka ama ku baxa eber isagoo waxna qorin wuxuu abuuraa macmiil xiran oo cinwaan ka yimid barkada, log-ga server-kana wuxuu u muuqdaa mid caafimaad qaba.
Jahawareerku waa macquul, maxaa yeelay dhowr hook oo kale ayaa runtii ku jawaaba koodadka bixitaanka ama doorsoomayaasha deegaanka. Kan wuxuu leeyahay qandaraas u gaar ah, qandaraaskuna wuxuu ku bilaabmaa magaca faylka.
Hook-ku wuxuu qoraa fayl, ma aha qiimo soo celin
Baaqa waa laba sadar: script-security 2 si loo oggolaado wicitaanka, ka dib client-connect /etc/openvpn/server/assign-address.sh. Marka macmiilku xaqiijiyo, server-ku wuxuu ordayaa skriptkaas isagoo ku daraya jidka faylka la abuuray doodda ugu dambeysa, kaas oo ah $1 kaliya haddii baaqu aanu gudbin doodo dheeraad ah oo u gaar ah. Wax kasta oo lagu dabaqo macmiilkaas waxay galaan faylkaas oo ah tilmaamo caadi ah, mid sadar kasta, sida ay uga muuqan lahaayeen habaynta. Duubista ku daraysa cabbirkeeda u gaar ah waxay ruxdaa booska, calaamadda caadiga ahna waa skript ku qoraya jid u eg --verbose.
Xaaladda bixitaanku waa qaybta kale ee qandaraaska. Eber waxay ka dhigan tahay aqbal oo akhri faylka; wax kasta oo kale wuu diidayaa xidhiidhka, sidaasna ayaa aqoonsiga aan khariidadayn loo diidaa halkii uu si aamusnaan ah ugu laaban lahaa barkada. Qor tilmaanta buuxda ka hor intaadan soo celin guul, si fayl badhkiis qoran uusan waligiis noqon habaynta macmiil.
Laba tilmaamood ayaa mudan feejignaan maxaa yeelay waxay la falgalaan wax kasta oo kale. ifconfig-push wuxuu dejiyaa cinwaanka, halka route la diray uu macmiilka u sheegayo waxa laga gaari karo tunnel-ka; soo celi tan hore oo halmaan tan dambe waxaadna heshaa macmiil cinwaan leh oo aan meel u socon. Nidaamka gudaha faylka ma muhiim, laakiin dhammaystirka waa muhiim. Hook u diraya waddo loogu talagalay horgale aan qof kale gaari karin waa isla khaladka laga arkay dhinaca kale.
Gelitaannada waxay yimaadaan iyada oo loo marayo doorsoomayaasha deegaanka: common_name, trusted_ip, ifconfig_pool_remote_ip iyo inta kale. U dhaqan dhammaantood sida xargaha ka yimid dibadda server-ka, waligaa sida qaybo shell ah.
Khariidadaynta cinwaannada waa siyaasad, ma aha xisaab
Jid gaaban oo soo jiidasho leh ayaa ah in la falanqeeyo magaca shahaadada oo lambarradeeda loo isticmaalo sidii octet-kii ugu dambeeyay. Taasi ma aha qaybiye, waxayna ku guuldareysataa siyaabo caadi ah: laba magac oo isku dabo ah way isku dhacaan, magac ku dhammaada 300 ma aha cinwaan, shahaado uu maamule magac beddelay si aamusnaan ah ayuu u rarayaa qalab. Hubi xubinimada subnet-ka, baaxadda martigeliyaha la isticmaali karo, cinwaannada la kaydiyay iyo gaar ahaanshaha wicitaan kasta, khariidadayntana ku hay shax ku habboon in qof akhriyo.
Qof kasta oo magaca maamula wuxuu maamulaa cinwaanka, markaa go'aanso waxa common_name dhab ahaantii u taagan yahay geyntan. Marka username-as-common-name daaran yahay, aqoonsigu waa gelitaanka ee ma aha mawduuca shahaadada. Waligaa ha u gudbin qiimahaas qiimaynta shell, waligna ha u oggolaan macmiilka inuu saameeyo jid fayl.
Qaybiye ku tiirsan diiwaanka waa inuu ka adkaadaa isku-buqashada. Cinwaanka si atam ah u kaydi, wax ka qabso qoraal guuldareystay iyada oo aan la aqbalin macmiil badhkiis habaysan, oo calaamadee qayb kasta xidhiidhka iska leh, si furitaan dambe oo kalfadhi hore uusan u sii dayn karin cinwaan uu mid cusub hore u hayo. Dhowr nuqul oo server ah oo wadaaga hal barkad ayaa shardigan ka dhigaya mid daran oo aan ikhtiyaar ahayn.
Topology ayaa go'aansata waxa ifconfig-push macneheedu yahay
Iyada oo topology subnet ku jirto 10.77.0.0/24, ifconfig-push 10.77.0.20 255.255.255.0 waa cinwaan iyo maaskaradiisa shabakadeed. Marka topology net30 hoosta, doodda labaad ma aha maaskarad arrinna, waa cinwaanka dhigga, sidaas darteed koobista qaabka subnet-ka server net30 waxay ku siinaysaa macmiil isku xidha oo aan mari karin taraafikada. Topology si ula kac ah u beddel, waligaa si tusaale u muuqdo mid iswaafaqsan. Server hore u socday net30 wuxuu leeyahay macmiillo nool oo ku jira cinwaankii hore, sidaas darteed beddelku waa guur leh daaqad dayactir, ma aha tafatir hal sadar.
Cinwaannada taagan waa inay ka baxsan yihiin barkada firfircoon iyo ka baxsan qayb kasta oo kale oo taagan, oo ay ku jiraan kuwa ay bixiyaan faylalka client-config-dir caadiga ah. Haddii laba hab ay soo saari karaan isla cinwaanka macmiillo kala duwan, mid ka mid ah ayaa ugu dambeyn sidaas yeeli doona.
Tijaabi afar kiis ka hor intaadan ku kalsoonaan
Ku ordi isla hubinta aqoonsiga khariidadaysan, kan aan khariidadaysnayn, dib u xidhiidhka iyo guuldarada diiwaanka la ekaysiiyay. openvpn --config client.ovpn --verb 4 wuxuu muujiyaa cinwaanka la qoondeeyay jawaabta push, server-kana grep -A2 PUSH_REPLY /var/log/openvpn/openvpn.log wuxuu xaqiijiyaa waxa dhab ahaantii la diray. Aqoonsiga aan khariidadaysnayn natiijada la filayo waa xidhiidh la diiday, ma aha cinwaan barkadeed.
Ka dib baadh galay daabacaadda uu daemon-ku ku qoro faylalkaas ku meel gaadhka ah. Skriptku wuxuu ku socdaa macnaha adeegga hoos loo dhigay, sidaas darteed jid uu root qori karo laakiin daemon-ku qori karin wuxuu xidhiidh kasta u beddelaa diidmo leh khalad ogolaansho oo lagu aasay dhowr sadar oo hoose log-ga.
Qoondayntu ma aha oggolaansho: cinwaan la dhejiyay weli ma siinayo gelitaan meel kasta oo ka dambeysa server-ka. Hay siyaasadda waddo-marinta iyo dab-damiska lakabkeeda u gaar ah, kuna xaqiiji cinwaanka aad hadda dejisay.