Állítsa be az Android DNS-kiszolgálót a mobilhálózathoz ⋆ Kuketz IT biztonsági blog

1. A beállítások levágva

Az Android minden verziójával a Google tovább korlátozta a DNS-kiszolgáló mobiladat-hálózathoz történő adaptálásának lehetőségét. Ezt azonban nem akartam elfogadni, mert kevéssé bízom a (mobil) szolgáltatóm DNS-kiszolgálóiban. A szolgáltatók gyakran naplózzák a DNS-kéréseket, felhasználják/megosztják ezeket az információkat harmadik felekkel, vagy cenzúrázzák bizonyos címek hívását. Elég ok arra, hogy alternatív DNS-kiszolgálókra váltson.

állítsa

Ha követni kívánja ezeket az utasításokat, akkor androidos eszközének gyökérzetet kell készítenie, és már ismernie kell az AFWall + CustomScripteit. Ebben a cikkben két különböző megoldást mutatok be, amelyeket az iptables szabálykészletek "kényszerítenek".

2. Android és a (mobil) DNS-szerver

Android-eszközén általában különféle hálózati interfészek vannak, úgynevezett interfészek. A WiFi hálózatban a kommunikáció például a wlan0 Interfész, a mobilhálózat adatait az interfészen keresztül továbbítják rmnet0 (A megnevezés változhat), és az interfész VPN-kapcsolatokra szolgál do0 fenntartott.

A wlan0 felülethez a DNS-kiszolgálót a beállítások alatt konfigurálhatja:

  • Beállítások → WiFi → Hosszú ujjal koppintson az aktív WiFi-kapcsolatra → Hálózat módosítása.
  • Jelölje be a "Speciális beállítások megjelenítése" jelölőnégyzetet, majd az IP-beállításokhoz válassza a "Statikus" lehetőséget.
  • Görgessen lefelé, amíg meg nem találja a két beállítást: "DNS 1" és "DNS 2".
  • Adjon meg egy új DNS-kiszolgálót a DNS 1 és a DNS 2 számára. Íme néhány javaslat az ingyenes és cenzúrázatlan naplózás nélküli DNS-kiszolgálókról.

A mobil interfész (rmnet0) esetében azonban nem lehetséges a DNS-kiszolgáló adaptálása grafikus menü segítségével. Az Android 6.0.0-ig azonban elérheti a terminál Segítség.

2.1 Akár Android 4.3-ig

Android 4.3-ig a mobil interfész (rmnet0) DNS-kiszolgálója továbbra is parancs segítségével állítható be:

Amint új kapcsolat jön létre (újracsatlakozás) a mobil adathálózathoz, ezeket a parancsokat újra végre kell hajtani. Akkor is volt értelme az AFWall + egyedi szkriptjével dolgozni, amely minden alkalommal újra végrehajtja a parancsokat, amikor az adatkapcsolat vagy egy interfész (LAN, WLAN, mobil adat, stb.) Megváltozik, és a mobiltelefon szolgáltatótól továbbított DNS-szerver felülírja.

2.2 Akár Android 6.0.0-ig

Az Android 4.3-tól a 6.0.0-ig terjedő verzióig a mobil felület DNS-kiszolgálója (rmnet0) beállítható egy másik paranccsal (ndc). A parancsok azonban az Android szinte minden verziójában eltérnek, és nehéz megtalálni a helyes szintaxist. Például a következő parancskészlet helyes az Android 6.0.0 esetében:

Minden alkalommal, amikor a kapcsolat megváltozik (pl. WLAN -> mobil adat), a beállítások újra felülíródnak. Ezért van értelme itt is dolgozni az AFWall + programmal.

2.3 Android 6.1.x verzióról

Legkésőbb az Android 6.1.x verzióból a Google eltávolított minden olyan parancsot, amellyel az rmnet0 interfész mobil DNS-kiszolgálója befolyásolható. A DNS-kiszolgálókat ezért már nem lehet hagyományos eszközökkel megváltoztatni, ehelyett speciális alkalmazásokra, például DNS-váltóra vagy Engelsizre van szükség. Az összes említett eszköznek azonban van egy fő hátránya: ők kezdeményeznek egyet helyi VPN-alagutak a cellás kapcsolat DNS-kiszolgálóinak befolyásolására - ezek sem nyílt forráskódúak.

3. iptables és AFWall+

Speciális iptables szabályokkal és az AFWall + CustomScripteivel már lehetett továbbítani az összes DNS-kérést egy adott DNS-kiszolgálóra - és "megkerülni" a mobil DNS-kiszolgálót:

De a kódrészletnek egyetlen hátránya volt: A DNS-kiszolgáló felül lett írva az összes interfészre, beleértve az otthoni WLAN-t is. Ez különösen nem praktikus, ha a hálózaton lévő hirdetéseket és nyomkövetőket egy lyukkal vagy hasonló megoldással kiszűri.

3.1 1. megoldás: Saját DNS-kiszolgáló az rmnet0 interfészhez

A megoldás nagyon egyszerű: Amikor egy DNS-kérést (53-as port TCP/UDP) küldünk az eszközre a rmnet0 Az interfész elhagyja (-ormnet +), a csomagot elküldik a 85.214.20.141 IP címre - a digitális bátorság DNS szerverére. Nem számít, hogy melyik DNS-kiszolgálót állította be a mobiltelefon-szolgáltató, a következő iptables-szabályok "kényszerítik" a lekérdezést a választott DNS-kiszolgálóra a mobil interfész számára:

3.2 2. megoldás: Saját DNS-kiszolgáló az otthoni WLAN számára

Az 1. megoldás hibátlanul működik, de véleményem szerint van egy kis hátránya: Ha harmadik féltől származó WLAN-ba jelentkezik be, akkor általában a DHCP-n keresztül DNS-kiszolgálót kapunk. Személy szerint azonban szeretnék egy választott DNS-kiszolgálót is használni más WLAN-hálózatokban. Ezt a következő kódrészlettel érhetem el:

Mi történik itt? Minden olyan DNS-lekérdezést, amely nem az otthoni hálózatból származik (192.168.150.0/24), továbbítja a Digital Courage DNS-kiszolgálójának. Annak érdekében, hogy ez valóban működjön, a külső WLAN-hálózatnak természetesen nem kell ugyanazt az IP-címtartományt (192.168.150.0/24) használni, mint az otthoni hálózatot. Ha mégis, akkor az összes DNS-kérést egyszerűen továbbítja a DHCP által továbbított DNS-kiszolgálóra - így nincs törés a levegőben.

A mobilhálózat DNS-kéréseit mindig az Ön által definiált DNS-kiszolgálóra küldjük, még ezzel a változattal is. A 2. megoldás alapvetően csak azt biztosítja, hogy a kívánt DNS-kiszolgálót más WLAN-hálózatokban is használják.

Köszönet az XMPP teremből származó Marco-nak, aki döntő mértékben hozzájárult ehhez a második megoldáshoz.

jegyzet

3.3 A DNS-kiszolgáló ellenőrzése

Ezután ellenőrizni kell az iptables szabálykészleteket az AFWall + egyéni szkriptjéhez. Végül csak egy változat működik mindig megfelelően: Csatlakoztassa Android-okostelefonját a számítógépéhez az USB-kábellel, majd használja az adb-t:

Ezután a konzolon megmutatja az összes csomagot, amely az 53-as porton keresztül megy be és ki. Ezzel egyértelműen azonosíthatja a mobilhálózatban használt DNS-kiszolgálót - ha az rmnet0 aktív és a wlan0 inaktív:

És WLAN-ban is - ha a wlan0 aktív és az rmnet0 inaktív:

Egy másik változat az online szolgáltatások, amelyek azonban nem mindig nyújtják a helyes eredményt:

4. Következtetés

Az 1. megoldásnak működnie kell minden olyan eszközön, amely hozzáfér az iptables-hez. Tehát nem kell bajlódnia a régebbi Android verziók terminálparancsaival, hanem egyszerűen használhatja az iptables vagy az AFWall + szolgáltatásokat a CustomScripts-kel együtt.

Az Android 6.1.x verziótól kezdve, amennyire jelenleg tudom, nincs más választása, mint a bemutatott iptables szabálykészletek segítségével felülírnia a mobilszolgáltatója mobil DNS-szerverét. Személy szerint a 2. megoldást használom, és ezt beépítettem az AFWall + CustomScript-be is.

Képforrások:

A szerzőről

A nevem Mike Kuketz, és ennek a blognak írok Biztonság- és adatvédelem releváns A témák könnyebb megértése és mindenki számára elérhetővé tétele.

Szabadúszó munkám során as Pentester (Kuketz IT-Security) Belecsúszok a »hacker« szerepébe, és az IT rendszerek, a webalkalmazások és az alkalmazások gyenge pontjait keresem. Továbbá az vagyok Előadó az informatikai biztonságért a karlsruhei duális egyetemen és többek között a számítógépes magazin szerzőjeként c’t.

A Kuketz blogot vagy személyemet rendszeresen képviselik a médiában (heise online, Süddeutsche Zeitung stb.).

Ha szeretne értesülni a legfrissebb bejegyzésekről, több lehetősége van a blog követésére: