Dobry den,
rozjizdime vlastni telefonni ustrednu na Asterisku, ke ktere planujeme odorik sip trunk.
V planu je je asi 80-120 hardwarovych VoIP telefonu. Telefony budou rozmisteny mezi nasimi spolupracovniky v nekolika statech EU.
Nyni mame nainstalovany Asterisk a testujeme volani mezi telefony. Po uspesnem otestovani zacneme resit sip trunk.
Problem je, ze prevazna vetsina spolupracovaniku jsou bezni uzivatele. Je tedy treba jim poslat krabici se "samoinstalacnim balickem" s navodem typu "do cerneho konektoru na telefonu pripoj internet prilozenym kabelem".
Pri pokusech s Asteriskem na vlastnim serveru jsem resil spoustu pokusu o utok na SIP. Hodne lidi mi doporucilo zavrit SIP do VPN. Take se mi ta myslenka libi.
Nektere VoIP telefony, ktere jsem testoval mely podporu VPN primo v sobe. Zdaleka ne vsak vsechny, takze tento zpusob nejde pouzit.
Idelani reseni by bylo, aby kazdy spolupracovnik mel VoIP telefon a "krabicku", ktera bude telefonu delat VPN a zaroven mi umozni v pripade problemu pripojeni k zarizeni a moznost opravy (mnohem lepsi, nez dohadovat TeamViewer pristup z pc).
A ted k samotnemu problemu:
na dost mistech pouzivam Mikrotik hAP lite, jako OpenVPN do site. Zarizeni stoji 500 Kc, ma caste bezpecnostni aktualizace a bohate moznosti nastaveni. Toto reseni se mi moc dobre osvedcilo a nejsou s nim zadne problemy.
Na vsechny VPN do Mikrotiku jsem do ted pouzival OpenVPN (nikdy nebyla potreba VoIP). Ma ohromnou vyhodu, ze proleze temer vsemi firewally a proste funguje.
Jenze Mikrotik umoznuje OpenVPN jen v TCP rezimu. Jak moc velky problem je to u VoIP? TCP over TCP je spatne, ale samotny zvuk (RTP) by uz mel prece jit pres UDP. Tunelovani UDP skrz TCP mi nikdy nedelalo problem. Netestoval jsem to vsak na telefonovani.
Je mozne/dobre telefonovat pres TCP VPN tunel, nebo to muze a bude prinaset problemy? Pokud to je problem, zacnu vymyslet mikrotik+ipsec, ktery pouziva UDP.
Idealne by se mi hodily prakticke zkusenosti nekoho, kdo neco podobneho pouziva/zkousel.
Dekuji,
Martin Vancl
VoIP telefony za TCP OpenVPN - je to problem?
- xsouku04
- Administrátor
- Příspěvky: 8161
- Registrován: pát 15. říj 2010 11:11:44
- Bydliště: Brno
- Kontaktovat uživatele:
Re: VoIP telefony za TCP OpenVPN - je to problem?
Super podnětný dotaz - dobrá inspirace pro ostatní.
Podle mého názoru, posílat VoIP přes TCP je jen totální nouzovovka pro lidi za firewalem ale s velmi kvalitním internetem. Pro přenos zvuku a videa je mnohem lepší UDP, protože ztracení jednoho paketu nezpůsobí zpoždění.
Je naprosto běžné, že se občas nějaký paket ztratí. Je třeba počítat s tím, že i kvalitní internetové připojení přes optiku má ztrátovost až 0,1% paketů. Dobře to jde změřit touhle aplikaci https://www.odorik.cz/w/internet#mereni ... i_aplikaci
Téměř neexistuje internetové spojení, kde se to občas nestane. Ale pokud se vám ztratí jeden dva pakety z padesáti, co projdou každou vteřinu, nikdo si toho vůbec nevšimne.
Pravděpodobně to nebude tak hrozné, protože těch 50 paketů v každé vteřině bude do TCP zabalené po větších částech, tedy pravděpodobnost, že se jeden kousek ztratí je podstatně menší.
Pokud by se ale něco přecijen ztratilo, čekalo by se na znovu poslání a způsobilo výpadech v řádech sekund.
V reálu jsem to nikdy netestoval, ale také jsem nikdy neviděl přenášet zvuk jinak přes UDP. Ale není to tak těžké vyzkoušet. Pokusil jsem se přihlásit k openVPN přes TCP a pak provést obyčejný hovor, ale nějak mi to openVPN přes TCP nefunguje. Z toho, kde jsem se co dočetl, prostě používat openVPN přes TCP je vždy horší a jediný důvod, proč by někdo mohl dát přednost TCP před UDP je kvůli firewalu.
To openVPN je špatné řešení i z jiných důvodů. Je to prostě zbytečná a drahá komplikace navíc, pokud byste měl vytvářen VPN jen kvůli VoIP a tomu, aby vám neútočili na Asterisk. A je tam pak prostě víc špatně přístupných zařízení, co se může pokazit. Ale manažerské rozhodnutí je manažerské rozhodnutí.
Trochu lepší situace, kdyby openVPN uměl přímo VoIP telefon. Některé to umí (Grandstream), ale nemusí to být dostatečně otestované a určitě budete muset zakázat update firmware, protože by to mohli v dalším rozbít.
Profi řešení, které máme vyzkoušené, je před Asterisk dát SIP proxy, která nedělá nic jiného než jakýsi firewall. Může běžet na tom stejném stroji jen na jiném portu a signalizaci na Asterisk dále přeposílat. Tedy je to naprosto primitivní SIP proxy, která jen odchytává a zahazuje pokusy o skenování, uhádnutí hesla a jiné nepoctivosti. Jinak vše funguje přes Asterisk tak jsou všichni zvyklí, proxy nemá jinou úlohu než chránit v tomto ohledu neohrabaný Asterisk.
Jiné jednoduché řešení? Zásadní je neotvírat na Asterisku port 5060, ale nějaký vysoký netradiční port. Už tato jednoduchá změna mnohonásobně sníží množství nechtěné komunikace.
Dobře si zabezpečte také web, pokud používáte nějakou webovou distribuci Asterisku, často bývá rozpoznám podle webu a často také přes web vykraden. A když ví, že na oné ip adrese máte Asterisk, tak pak už proskenují všechny porty. No a pak tu máme už jen polovičaté pomocníky jako fail2ban a firewall. Sice to není pořád úplně ideál, ale nevím, že by někomu hacknuli asterisk, co dodrží aspoň tyto kroky. A samozřejmě rozumná hesla, co nikdo neuhádne. S tímto jednoduchým zabezpečením si, pokud vím, vystačí všichni, které živí nastavování Asterisku.
A také je třeba hlídat, aby na web voip telefonů neměl přístup někdo z internetu. To je nejčastější důvod zneužití.
Jiné řešení je nastavit na VoIP telefonech provisioning, kde si telefon stáhne konfiguraci při startu a pak dle nastaveného intervalu z vašich webových stránek. A vy se tak už během startu telefonu dozvíte jeho ip a tu můžete povolit na firewalu. Jednoduché a účinné. A ten provisioning se při 120 telefonech bude hodit také, tedy téměř žádná práce navíc. Jaké telefony chcete koupit? U Grandstreamu můžeme nabídnout dobrou velkoobhodní cenu a pomoc s provisioningem.
Jiná možnost je linky nechat přihlásit přímo na Odorik a vlastní ústřednu použít jen pro IVR - hlasové menu, nebo ani to ne. Pokud máte vlastní Asterisk jen na IVR a logiku spojování hovorů, pak ani nemusí mít veřejnou ip adresu. Hromadně to můžete spravovat přes API, není to špatné a jde dělat většina věcí, co by kdo mohl potřebovat, i když to nemusí být na první pohled zřejmé. Pro někoho může být řešením jen lidi na cestách nechat přímo na odorik, zbytek napřímo na Vaši ústřednu s tím, že povolíte přihlášení jen z předem známých ip adres. Ale vy budete mít asi většinu telefonů po Evropě.
Podle mého názoru, posílat VoIP přes TCP je jen totální nouzovovka pro lidi za firewalem ale s velmi kvalitním internetem. Pro přenos zvuku a videa je mnohem lepší UDP, protože ztracení jednoho paketu nezpůsobí zpoždění.
Je naprosto běžné, že se občas nějaký paket ztratí. Je třeba počítat s tím, že i kvalitní internetové připojení přes optiku má ztrátovost až 0,1% paketů. Dobře to jde změřit touhle aplikaci https://www.odorik.cz/w/internet#mereni ... i_aplikaci
Téměř neexistuje internetové spojení, kde se to občas nestane. Ale pokud se vám ztratí jeden dva pakety z padesáti, co projdou každou vteřinu, nikdo si toho vůbec nevšimne.
Pravděpodobně to nebude tak hrozné, protože těch 50 paketů v každé vteřině bude do TCP zabalené po větších částech, tedy pravděpodobnost, že se jeden kousek ztratí je podstatně menší.
Pokud by se ale něco přecijen ztratilo, čekalo by se na znovu poslání a způsobilo výpadech v řádech sekund.
V reálu jsem to nikdy netestoval, ale také jsem nikdy neviděl přenášet zvuk jinak přes UDP. Ale není to tak těžké vyzkoušet. Pokusil jsem se přihlásit k openVPN přes TCP a pak provést obyčejný hovor, ale nějak mi to openVPN přes TCP nefunguje. Z toho, kde jsem se co dočetl, prostě používat openVPN přes TCP je vždy horší a jediný důvod, proč by někdo mohl dát přednost TCP před UDP je kvůli firewalu.
To openVPN je špatné řešení i z jiných důvodů. Je to prostě zbytečná a drahá komplikace navíc, pokud byste měl vytvářen VPN jen kvůli VoIP a tomu, aby vám neútočili na Asterisk. A je tam pak prostě víc špatně přístupných zařízení, co se může pokazit. Ale manažerské rozhodnutí je manažerské rozhodnutí.
Trochu lepší situace, kdyby openVPN uměl přímo VoIP telefon. Některé to umí (Grandstream), ale nemusí to být dostatečně otestované a určitě budete muset zakázat update firmware, protože by to mohli v dalším rozbít.
Profi řešení, které máme vyzkoušené, je před Asterisk dát SIP proxy, která nedělá nic jiného než jakýsi firewall. Může běžet na tom stejném stroji jen na jiném portu a signalizaci na Asterisk dále přeposílat. Tedy je to naprosto primitivní SIP proxy, která jen odchytává a zahazuje pokusy o skenování, uhádnutí hesla a jiné nepoctivosti. Jinak vše funguje přes Asterisk tak jsou všichni zvyklí, proxy nemá jinou úlohu než chránit v tomto ohledu neohrabaný Asterisk.
Jiné jednoduché řešení? Zásadní je neotvírat na Asterisku port 5060, ale nějaký vysoký netradiční port. Už tato jednoduchá změna mnohonásobně sníží množství nechtěné komunikace.
Dobře si zabezpečte také web, pokud používáte nějakou webovou distribuci Asterisku, často bývá rozpoznám podle webu a často také přes web vykraden. A když ví, že na oné ip adrese máte Asterisk, tak pak už proskenují všechny porty. No a pak tu máme už jen polovičaté pomocníky jako fail2ban a firewall. Sice to není pořád úplně ideál, ale nevím, že by někomu hacknuli asterisk, co dodrží aspoň tyto kroky. A samozřejmě rozumná hesla, co nikdo neuhádne. S tímto jednoduchým zabezpečením si, pokud vím, vystačí všichni, které živí nastavování Asterisku.
A také je třeba hlídat, aby na web voip telefonů neměl přístup někdo z internetu. To je nejčastější důvod zneužití.
Jiné řešení je nastavit na VoIP telefonech provisioning, kde si telefon stáhne konfiguraci při startu a pak dle nastaveného intervalu z vašich webových stránek. A vy se tak už během startu telefonu dozvíte jeho ip a tu můžete povolit na firewalu. Jednoduché a účinné. A ten provisioning se při 120 telefonech bude hodit také, tedy téměř žádná práce navíc. Jaké telefony chcete koupit? U Grandstreamu můžeme nabídnout dobrou velkoobhodní cenu a pomoc s provisioningem.
Jiná možnost je linky nechat přihlásit přímo na Odorik a vlastní ústřednu použít jen pro IVR - hlasové menu, nebo ani to ne. Pokud máte vlastní Asterisk jen na IVR a logiku spojování hovorů, pak ani nemusí mít veřejnou ip adresu. Hromadně to můžete spravovat přes API, není to špatné a jde dělat většina věcí, co by kdo mohl potřebovat, i když to nemusí být na první pohled zřejmé. Pro někoho může být řešením jen lidi na cestách nechat přímo na odorik, zbytek napřímo na Vaši ústřednu s tím, že povolíte přihlášení jen z předem známých ip adres. Ale vy budete mít asi většinu telefonů po Evropě.
Re: VoIP telefony za TCP OpenVPN - je to problem?
Pokud vám vadí útoky, tak na firewallu pusťte příchozí signalizační spojení do Asterisku jen přes TCP.
Klienti budou muset ve svých aplikacích vynutit signalizaci přes TCP, ale počet útoků klesne o 99%, protože útočníci obvykle zkouší jen UDP.
Klienti budou muset ve svých aplikacích vynutit signalizaci přes TCP, ale počet útoků klesne o 99%, protože útočníci obvykle zkouší jen UDP.
- xsouku04
- Administrátor
- Příspěvky: 8161
- Registrován: pát 15. říj 2010 11:11:44
- Bydliště: Brno
- Kontaktovat uživatele:
Re: VoIP telefony za TCP OpenVPN - je to problem?
V kombinaci s netradičním portem docela dobrý.LubosD píše:Pokud vám vadí útoky, tak na firewallu pusťte příchozí signalizační spojení do Asterisku jen přes TCP.
Klienti budou muset ve svých aplikacích vynutit signalizaci přes TCP, ale počet útoků klesne o 99%, protože útočníci obvykle zkouší jen UDP.
Re: VoIP telefony za TCP OpenVPN - je to problem?
Já bych taky asi napřed zkoušel IP whitelist (záleží, jak moc se klientské IP můžou měnit). Ještě by mohlo stačit přes VPN posílat jen signalizaci a RTP nechat bez něj?
Ještě mně napadá jedna varianta - ale zatím jsem asi nikde neviděl realizaci. Připojení přes TLS, tj. i SIP umí vystavit certifikát na straně serveru (a klient si ověřuje, že se hlásí ke správnému serveru), ale i naopak - na straně klienta, kde si server ověřuje, že klient je důvěryhodný. Na rychlé hledání k tomu dokonce už pár let existuje i RFC (https://tools.ietf.org/html/rfc5922). Pak se TLS chová velmi podobně jako ta VPN a RTP jde vlastní cestou (příp. vč. vlastního šifrování). Tj. teď už jen najít, jestli už to umí i nějaký telefon![Úsměv :-)](./images/smilies/icon_e_smile.gif)
Ještě mně napadá jedna varianta - ale zatím jsem asi nikde neviděl realizaci. Připojení přes TLS, tj. i SIP umí vystavit certifikát na straně serveru (a klient si ověřuje, že se hlásí ke správnému serveru), ale i naopak - na straně klienta, kde si server ověřuje, že klient je důvěryhodný. Na rychlé hledání k tomu dokonce už pár let existuje i RFC (https://tools.ietf.org/html/rfc5922). Pak se TLS chová velmi podobně jako ta VPN a RTP jde vlastní cestou (příp. vč. vlastního šifrování). Tj. teď už jen najít, jestli už to umí i nějaký telefon
![Úsměv :-)](./images/smilies/icon_e_smile.gif)