Nastaviť server Android DNS pre mobilnú sieť blog Blog o bezpečnosti IT spoločnosti Kuketz

1. Nastavenia orezané

S každou verziou systému Android spoločnosť Google ďalej obmedzila možnosť prispôsobenia servera DNS pre mobilnú dátovú sieť. To som však nechcel akceptovať, pretože serverom DNS môjho (mobilného) poskytovateľa nedôverujem. Poskytovatelia často zaznamenávajú požiadavky DNS, používajú alebo zdieľajú tieto informácie s tretími stranami alebo cenzurujú volanie určitých adries. Dostatočný dôvod na prechod na alternatívne servery DNS.

blog

Ak chcete postupovať podľa týchto pokynov, musí byť vaše zariadenie s Androidom rootované a mali by ste už poznať vlastné skripty programu AFWall +. V tomto článku vám predstavím dve rôzne riešenia, ktoré sú „vynútené“ pomocou sady pravidiel iptables.

2. Android a (mobilný) server DNS

Vaše zariadenie Android má zvyčajne rôzne sieťové rozhrania, takzvané rozhrania. Komunikácia v sieti WiFi prebieha napríklad cez internet wlan0 Rozhranie, údaje pre mobilnú sieť sa prenášajú cez rozhranie rmnet0 (Označenie sa môže líšiť) a rozhranie je určené pre pripojenia VPN do0 vyhradené.

Pre rozhranie wlan0 môžete nakonfigurovať server DNS v nastaveniach:

  • Nastavenia → WiFi → Dlhé klepnutie prstom na aktívne pripojenie WiFi → Zmeniť sieť.
  • Začiarknite políčko „Zobraziť rozšírené možnosti“ a potom v nastaveniach adresy IP vyberte možnosť „Statické“.
  • Posuňte zobrazenie nadol, kým nenájdete dve nastavenia „DNS 1“ a „DNS 2“.
  • Zadajte nový server DNS pre DNS 1 a DNS 2. Tu je niekoľko návrhov na bezplatné a necenzurované servery DNS bez protokolovania.

Pre mobilné rozhranie (rmnet0) však nie je možné server DNS prispôsobiť prostredníctvom grafickej ponuky. Až do Androidu 6.0.0 ste však mali prístup k terminál Pomoc.

2.1 až Android 4.3

Do verzie Android 4.3 bolo možné nastaviť server DNS pre mobilné rozhranie (rmnet0) pomocou príkazu:

Hneď ako dôjde k novému pripojeniu (opätovnému pripojeniu) k mobilnej dátovej sieti, musia sa tieto príkazy vykonať znova. Aj vtedy malo zmysel pracovať s vlastným skriptom pre AFWall +, ktorý vykonáva príkazy znova zakaždým, keď sa zmení dátové pripojenie alebo rozhranie (LAN, WLAN, mobilné dáta atď.) A server DNS s ním prenesený poskytovateľom mobilných telefónov. prepíše.

2.2 Až do verzie Android 6.0.0 vrátane

Od Androidu 4.3 až po verziu 6.0.0 vrátane je možné server DNS pre mobilné rozhranie (rmnet0) nastaviť pomocou iného príkazu (ndc). Príkazy sa však líšia takmer v každej verzii systému Android a je ťažké nájsť správnu syntax. Napríklad nasledujúca sada príkazov je správna pre Android 6.0.0:

Zakaždým, keď sa zmení pripojenie (napr. WLAN -> mobilné dáta), nastavenia sa znova prepíšu. Preto má zmysel pracovať s AFWall + aj tu.

2.3 Od Androidu 6.1.x

Najneskôr od Androidu 6.1.x Google odstránil všetky príkazy, pomocou ktorých je možné ovplyvniť mobilný server DNS pre rozhranie rmnet0. Servery DNS preto už nemožno meniť konvenčnými prostriedkami; namiesto toho sú potrebné špeciálne aplikácie ako DNS Changer alebo Engelsiz. Všetky spomenuté nástroje však majú jednu veľkú nevýhodu: jednu iniciujú miestne Tunely VPN ovplyvňujú servery DNS mobilného pripojenia - takisto nie sú otvoreným zdrojom.

3. iptables a AFWall+

Vďaka špeciálnym pravidlám iptables a CustomScriptom AFWall + už bolo možné preposlať všetky požiadavky DNS na konkrétny server DNS - a „obísť“ mobilný server DNS:

Fragment kódu mal ale jednu nevýhodu: Server DNS bol prepísaný pre všetky rozhrania vrátane domácej siete WLAN. Toto je obzvlášť nepraktické, ak vo svojej sieti odfiltrujete reklamy a sledovacie zariadenia pomocou pi-hole alebo podobného riešenia.

3.1 Riešenie 1: Váš vlastný server DNS pre rozhranie rmnet0

Riešenie je veľmi jednoduché: Kedykoľvek sa na zariadenie pošle požiadavka DNS (port 53 TCP/UDP) cez rmnet0 Rozhranie opustí (-o rmnet +), paket sa odošle na IP adresu 85.214.20.141 - DNS server digitálnej odvahy. Nezáleží na tom, ktorý server DNS nastaví váš poskytovateľ mobilných telefónov, nasledujúce pravidlá iptables „vynútia“ dopyt na server DNS podľa vášho výberu pre mobilné rozhranie:

3.2 Riešenie 2: Váš vlastný server DNS pre domácu sieť WLAN

Riešenie 1 funguje perfektne, ale podľa môjho názoru má malú nevýhodu: Ak sa prihlásite do zahraničných sietí WLAN, zvyčajne dostanete server DNS, ktorý vám bude pridelený prostredníctvom protokolu DHCP. Osobne by som však chcel použiť server DNS podľa môjho výberu aj v iných sieťach WLAN. Môžem to dosiahnuť pomocou nasledujúceho útržku kódu:

Čo sa tu deje? Všetky dotazy DNS, ktoré nepochádzajú z domácej siete (192.168.150.0/24), sa preposielajú na server DNS programu Digital Courage. Aby to skutočne fungovalo, externá sieť WLAN samozrejme nesmie používať rovnaký rozsah adries IP (192.168.150.0/24) ako domáca sieť. Ak to však urobí, potom sa všetky požiadavky DNS jednoducho odošlú na server DNS prenášaný prostredníctvom protokolu DHCP - takže nedochádza ani k prerušeniu vzduchu.

V tomto variante požiadavky DNS v mobilnej sieti vždy smerujú na server DNS, ktorý ste definovali. Riešenie 2 v zásade iba zaisťuje, aby sa požadovaný server DNS používal aj v iných sieťach WLAN.

Ďakujem marcovi z miestnosti XMPP, ktorý rozhodujúcim spôsobom prispel k tomuto druhému riešeniu.

Poznámka

3.3 Overenie servera DNS

Sady pravidiel iptables pre vlastný skript AFWall + je potom potrebné overiť. Nakoniec existuje len jeden variant, ktorý vždy funguje správne: Pripojte svoj smartphone so systémom Android k počítaču pomocou kábla USB a potom použite adb:

Na konzole potom uvidíte všetky pakety, ktoré vstupujú a odchádzajú cez port 53. Môžete to použiť na jednoznačnú identifikáciu servera DNS použitého v mobilnej sieti - ak je aktívny rmnet0 a wlan0 neaktívny:

A tiež vo WLAN - ak je wlan0 aktívny a rmnet0 je neaktívny:

Ďalším variantom sú online služby, ktoré však nie vždy prinesú správny výsledok:

4. Záver

Riešenie 1 by malo fungovať na všetkých zariadeniach, ktoré majú prístup k tabuľkám iptables. Nemusíte sa teda trápiť príkazmi terminálu na starších verziách systému Android, ale môžete jednoducho použiť iptables alebo AFWall + v kombinácii s CustomScripts.

Pokiaľ viem o Androide 6.1.x, nezostáva vám nič iné, ako prepísať mobilný server DNS vášho mobilného operátora pomocou predložených súborov pravidiel iptables. Osobne používam riešenie 2 a toto som zakomponoval aj do svojho AFWall + CustomScript.

Zdroje obrázkov:

O autorovi

Moje meno je Mike Kuketz a píšem tento blog pre bezpečnosť- a ochrana údajov Uľahčenie pochopenia a sprístupnenie tém pre všetkých.

V mojej nezávislej práci ako Pentester (Kuketz IT-Security) Vkĺznem do role »hackera« a hľadám slabé miesta v IT systémoch, webových aplikáciách a aplikáciách. Ďalej som Prednášajúci pre bezpečnosť IT na duálnej univerzite v Karlsruhe a okrem iného ako autor počítačového časopisu nie.

Blog Kuketz alebo moja osoba je pravidelne zastúpený v médiách (heise online, Süddeutsche Zeitung atď.).

Ak chcete byť informovaní o posledných príspevkoch, môžete blog sledovať niekoľkými spôsobmi: