Onion router(TOR)
Borna Farkaš, Matija Neđeral, Antonio Markoč, Mislav Šantek
Sadržaj |
Anonimno pretraživanje Interneta
Anonimno pretraživanje Interneta se odnosi na korištenje mreže koje skriva identifikacijske informacije o korisniku od stranica koje korisnik posjećuje. Anonimno pretraživanje je moguće ostvariti pomoću proxy servera te ostalih programa anonimnosti kao što je Tor. Takvi programi šalju informacije preko niza usmjernika(routera) s ciljem skrivanja izvorišta i odredišta informacija. No, ne postoji potpuno jamstvo anonimnosti jer su ti programi podložni analizi prometa. Informacije sa proxy poslužitelja mogu tražiti vlasti pa ni na taj način ne ostvarujemo potpunu anonimnost. Ostale informacije poput kolačića ili dodataka za Internet preglednike(plugins) se mogu iskoristiti u svrhu otkrivanja identiteta korisnika bez obzira što je njegova IP adresa skrivena.
Pri pregledavanju internetske stranice, IP adresa i ostale informacije postaju poznate poslužitelju. Korisnikovu IP adresu je moguće prikriti uporabom proxy poslužitelja koji zahtjev šalju poslužitelju koji je konačni cilj te na taj način izvorni zahtjev ne putuje izravno na ciljani poslužitelj od korisnika. Rezultat toga je da ciljani poslužitelj nema IP adresu korisnika već samo informacije o proxy poslužitelju koji je njemu poslao zahtjev.
Mislav Šantek, Borna Farkaš
Anonimna mreža Tor
Tor(The Onion Router) je slobodni software koji omogućava anonimnost na Internetu i izbjegava cenzuru. Tor usmjerava mrežni promet preko volonterske mreže poslužitelja koju čini više od 500 poslužitelja s ciljem otežavanja otkrivanja lokacije korisnika.
Pojam Onion routing označava aplikacijske slojeve enkripcije, ugniježđene poput slojeva luka, koji omogućavaju anonimnu komunikaciju. Tor kriptira izvorne podatke uključujući i IP adresu odredišta. Promet šalje preko niza slučajno odabranih Tor poslužitelja. Svaki od tih poslužitelja dekriptira samo jedan sloj enkripcije kako bi saznao adresu sljedećeg poslužitelja te njemu poslao preostale kriptirane podatke. Zadnji poslužitelj u nizu dekriptira najdublji sloj enkripcije i šalje početne, izvorne podatke do traženog odredišta bez otkrivanja IP adrese izvorišta jer ni taj poslužitelj ne zna tu adresu. Sljedeća slika prikazuje opisani način rada.
Prilikom bilo kakve vrste komunikacije na Internetu, informacija o poslužitelju i klijentu poznata je svim prijenosnim uređajima na putu između poslužitelja i klijenta, odnosno njihovim vlasnicima.
Kako je Internet nastao na ideji da se komunikacija ostvaruje putem paketa koji od polazišta do odredišta mogu putovati različitim putevima, tako se višestruko multipliciraju uređaji i njihovi vlasnici koji imaju informaciju o komunikaciji između klijenta i poslužitelja. Kako se ove informacije odnose na mrežni i transportni sloj, jednostavno je odrediti o kojoj se osobi radi.
Američka mornarica (US NAVY) razvila je 1998. Onion routing protokol koji štiti privatnost komunikacije između pošiljatelja i primatelja. Onion routing je protokol koji obavlja enkripciju i dekripciju paketa na svakom pojedinom prijenosnom uređaju čime se u potpunosti gubi informacija o primatelju, pošiljatelju i sadržaju samog paketa, tj. informacija je zaštićena i u potpunosti anonimna.
Gornja slika prikazuje kako se pojedini slojevi enkripcije "skidaju" pri prijenosu samog paketa.
Mislav Šantek, Borna Farkaš
Skriveni servisi
Tor pruža anonimnost internetskim stranicama i drugim poslužiteljima. Poslužitelji ugođeni za primanje podataka za ulazne konekcije samo preko Tor-a se nazivaju skriveni servisi(hidden services). Kako ne bi IP adresa poslužitelja bila otkrivena, a tako i područje ne kojem se poslužitelj nalazi, za pristup poslužitelju se koristi onion adresa. Tor mreža razumije tu vrstu adresa i može usmjeravati promet prema i od skrivenih servisa pa čak i za one servise iza vatrozida ili NAT-a te na taj način osigurava anonimnost oba dvije strane. Baza koja sadrži opise skrivenih servisa je centralizirana, ali Tor je decentralizirani prema dizajnu te ne postoji izravno čitljivi popis svih skrivenih servisa. Problem su servisi koji su dostupni kroz Tor mrežu i preko javnog Interneta istovremeno jer oni nisu potpuno skriveni. Skrivenim servisima je moguće pristupiti i kroz standardni Internet preglednik bez client-side konekcije na Tor mrežu pomoću servisa kao Tor2web.
Mislav Šantek, Borna Farkaš
Slabosti
Tor ne može ostvariti zaštitu od nadziranja prometa na rubu Tor mreže, tj. promet koji ulazi i izlazi iz mreže. Tor pruža zaštitu od analize prometa, no nije u mogućnosti spriječiti potvrđivanje prometa odnosno end-to-end correlation.
Bez obzira na ove poznate slabosti Tor je znatno fleksibilnija mreža od VPN jer će napadač koji pokušava analizirati veličinu i vremena slanja kriptiranih podataka imati puno većih problema pri analizi.
Ako se na oba dvije strane puta nalazi AS(Autonomous System), od klijenta do ulaznog čvora u Tor mrežu i od izlaznog čvora do odredišta, onda je moguće statistički povezati promet na ulazu i izlazu u cilju izračunavanja krajnjeg odredišta. LASTor je 2012. godine predložio način za predviđanje potencijalnih AS-ova na obje strane tijekom biranja putanje na klijentskoj strani u svrhu izbjegavanja ovog problema.
Mislav Šantek, Borna Farkaš
OpenWrt
OpenWrt je proširiv GNU / Linux distribucija za ugrađene uređaje (obični bežični usmjerivači). Za razliku od mnogih drugih distribucija za te routere, OpenWrt je izgrađen od temelja da bude potpuno opremljen, lako promjenjiv operativni sustav za vaš usmjerivač. U praksi, to znači da možete imati sve značajke koje su vam potrebne, pokreće ga Linux kernel koji je mlađi od većine drugih distribucija.
Matija Neđeral, Antonio Markoč
Povijest open WRT-a
OpenWrt, u obliku kakav je danas, plod je velikog truda uloženog od skupine Linux entuzijasta. Njegovi počeci sežu od početka 2004. godine kada je tvrtka Linksys predstavila uređaj pod nazivom WRT54G. Navedeni uređaj služio je kao centralna jedinica za dijeljenje konekcije između određenog broja računala. Nedugo nakon što je uređaj postao dostupan korisnicima, Andrew Miklas primijetio je da navedeni uređaj koristi modificiranu Linux jezgru kao operacijski sustav koji ga pokreće. Po General Public Licence (skr.GPL) licenci po kojoj je Linux jezgra dostupna u obliku slobodnog programskog koda, Linux jezgra ne smije se koristiti u komercijalne svrhe bez dijeljenja tog programskog koda potrošaču proizvoda na kojem se koristi. Nakon što je Andrew Miklas poslao apel Linksys kompaniji da se korišteni kod objavi te kako nije bilo nikakvih reakcija sa njihove strane, Andrew Miklas je incident prijavio na Linux grupu elektroničke pošte (engl. mailing list). Linksys tvrtka je uslijed pritiska Linux zajednice popustila te je u javnost izašla Linux jezgra korištena na uređaju. U tom trenutku započinju različiti projekti koji svoj programski kod baziraju na onom koji je objavila Linksys tvrtka. Jedni od popularnijih projekata su bili OpenWrt, DD-wrt, HyperWRT i projekt Sveasoft firme. Programski kod koji je izašao u javnost bila je uvelike modificirana Linux jezgra kao što se i pretpostavljalo, no nekoliko ljudi brzo je uvidjelo bespotrebnost većine programskog koda u njemu. Nakon čišćenja nepotrebnih dijelova koda te ostavljanja samo dijelova koji su najnužniji, veličina sustava pala je sa 30MB na oko 3MB te je ubrzo nakon toga, početkom 2004., napravljena i prva verzija sustava sa oznakom build 1 . (skr. B1) koja nije bila javno dostupna. Sa daljnjim razvojem OpenWrt distribuciji dodana je mogućnost pisanja po disku koja u to vrijeme nije bila dostupna na konkurentskim projektima. OpenWrt projekt je pod GPL licencom te je kao takav slobodni programski kod. Razvoj OpenWrt Linux distribucije potpomaže velika zajednica širom svijeta.
Antonio Markoč, Matija Neđeral
Što je OpenWrt?
Umjesto da pokušavate stvoriti jedan, statički firmware, OpenWrt pruža potpuno čitljiv datotečni sustav s dodatnim upravljanjem paketa. To vas oslobađa ograničenja u izboru aplikacija i konfiguracije od prodavatelja i omogućuje vam da koristite pakete da prilagodite ugrađen uređaj za različite namjene. Za programere, OpenWrt pruža okvir za izgradnju aplikacija bez potrebe za stvaranjem potpunog firmware-a. Za korisnike to znači slobodu za konfiguraciju uređaja, omogućujući korištenje uređaja na način koji prodavač ne može ni zamislili.
Projekt je u potpunosti besplatan i open-source, licenciran pod GPL.Projekt je namijenjen da uvijek bude domaćin na lako dostupnom web site-u, s lako dostupnim izvornim kodom i lak za izgraditi. Jednostavan i besplatan pristup.Projekt će uvijek biti otvoren za nove suradnike i imati nisku prepreku za sudjelovanje. Svatko će moći pridonijeti. OpenWrt je odavno uspostavljen kao najbolji firmware rješenje u svojoj klasi. On daleko premašuje druga ugradbena rješenja u performansama, stabilnosti, proširivosti, robusnosti i dizajnu. OpenWrt je prije svega okvir za inovativna rješenja.
Matija Neđeral, Antonio Markoč
Što OpenWrt nije?
OpenWrt nije namijenjen da bude distribucija koju možete učitati na ugrađenim uređajem i očekivati da će učiniti sve što želite. Umjesto toga, OpenWrt okvir omogućuje vam da prilagodite svoje ugrađen operativni sustav s vlastitim potrebama. Možete dodati značajke koje koje trebate instaliranjem programskih paketa, kao što je grafičko web sučelje koje omogućuje jednostavan pristup za početnike. Ugradnja takvih paketa je jednostavna za naučiti, te zahtijeva minimalno razumijevanje OpenWrt sustava i Linux vještina.
U usporedbi s drugim distribucijama, OpenWrt se također ne može smatrati samo kao "pravi firmware za krajnjeg korisnika". Mnogi korisnici traže visoku prilagodljivost koju OpenWrt pruža, ali postoje i druge distribucije (mnoge se temelje na OpenWrtu) koje nude potpunije značajke u glavnom paketu. Ove distribucije nude više od iskustva krajnjih korisnika. Ako želite potpuno proširiv Linux-temeljen operativni sustav za vaš uređaj, OpenWrt je savršen i lako ga je postaviti i naučiti se služiti njime.
Matija Neđeral, Antonio Markoč
Spajanje na ruter
Default ip adresa je 192.168.1.1, na nju se spajamo preko Telneta ako password nije postavljen. Ako je password postavljen onda se spajamo preko SSH.
Za spajanje na ruter najbolje je koristiti Putty. Inače password se može podesiti naredbom passwd, i nakon toga dva puta upišite zeljeni password. Warninge možete ignorirate jer ne utječu na postavljanje passworda.
Ukoliko ne znamo ip adresu možemo koristiti failsafe kako bi se spojili na ruter. Failsafe je opisan niže na ovoj stranici. Ako ne želimo koristi failsafe možemo koristiti programe poput Angry-ip. Taj će program tražiti aktivne urađaje na rasponu adresa koje mi odredimo. Mana ovog programa je što ukoliko otprilike ne znamo svoju adresu, pretraživanje većeg raspona predugo traje. Još jedan program koji se često koriti je WireShark. Njega koristimo tako da "slušamo" vezu sa kojom se spajamo na ruter, npr. local area network. Nakon što odaberemo vezu, moramo gledati Broadcast poruke, te tako možemo vidjeti sa koje nam ih adrese ruter šalje.
Prije instalacije TOR-a moramo omogučiti ruteru pristup na Internet. Najjednostavniji način je spojiti se na WAN. Za slučaj da nam WAN iz nekog razloga ne radi, možemo konfigurirati lan sa statičkom IP adresom i gatewayom od rutera koji je spojen na ADSL, također koristimo DNS podatke od adsl rutera. Najjednostavnije je konfigurirati /etc/config/network pomoću WinScp, program je sličan Putty, ali ima gui.
U našem slučaju gateway je bio na 192.168.1.254, to možete doznati spajajući se laptopom na adsl ruter(wireless ili ethernet) i pod Connection status->details vidjeti koji vam je gateway. Ako vam je mrsko raditi preko konzole, možete i instalirati GUI za openWRT. Prvo moramo dohvatiti listu instalacijskih paketa sa OpenWRT servera.
opkg update
Nakon toga moramo instalirati Luci:
opkg install luci
Luci koristi uhttpd servis pa ga moramo pokrenuti /etc/init.d/uhttpd start
Možemo postaviti i automatsko pokretanje servisa /etc/init.d/uhttpd enable
Ako je sve dobro prošlo, ovako bi trebao izgledati terminal
I ovako broswer nakon što se spojite na 192.168.1.1, ili na kojoj vam je već adresi interface.
Failsafe
U slučaju da ste krivo konfigurirali mrežne uređaje te se nemožete spojiti više na vaš ruter, najbolje je napraviti failsafe. Resetirajte ruter i prilikom resetiranja rutera prije nego što se ruter do kraja pokrene potrebno je pritisnuti reset gumb. Ruter će ući u failsafe mode te se na njega tada može spojiti pomoću Telneta na adresi 192.168.1.1.
Prvo napišemo(ukoliko to ne napišemo osim postavki, izbrisat će se i instalirani paketi)
mount_root
A zatim
firstboot
I na kraju
reboot -f
Sve postavke će biti izbrisane
Instalacija i konfiguracija Tor-a na openWRT-u
Prvo moramo dohvatiti listu instalacijskih paketa sa OpenWRT servera.
opkg update
Nakon toga moramo instalirati Tor:
opkg install tor
Ako je sve prošlo dobro, trebalo bi izgledati ovako.
Konfiguracija Prvo konfiguriramo wireless mrežu, ustvari redoslijed nije bitan jer update radimo na kraju.
cat << 'EOF' > /etc/config/wireless config wifi-device radio0 option type mac80211 option channel 11 option phy phy0 option hwmode 11ng option htmode HT20 list ht_capab SHORT-GI-40 list ht_capab DSSS_CCK-40 config wifi-iface option device radio0 option network transtor option mode ap option ssid 'Transparent Tor' option encryption none option macaddr 00:88:88:88:00:2A # see http://outflux.net/geoloc/?mac=00-88-88-88-00-2A+ for the location info associated with this mac addr EOF
Postavimo Tor u bridge mod i namjestimo ostale postavke:
cat << 'EOF' > /etc/tor/torrc User tor RunAsDaemon 1 PidFile /var/run/tor.pid DataDirectory /var/lib/tor Nickname OpenWRTTorBridge SocksPort 0 ORPort 443 BridgeRelay 1 Exitpolicy reject *:* VirtualAddrNetwork 10.192.0.0/10 AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 192.168.2.1 DNSPort 9053 DNSListenAddress 192.168.2.1 #Bandwith koji tor koristi RelayBandwidthRate 100 KBytes RelayBandwidthBurst 200 KBytes EOF
Ovo gore je početna postavka, bilo bi dobro dodati i Log notice file /var/log/tor/notices.log Kako bi se lakše uočile eventualne pogreške, može se postaviti user na root tako da smanjimo moguće probleme Namještavnja tor interfejsa:
cat << 'EOF' >> /etc/config/network config interface transtor option ifname "wlan0" option proto static option ipaddr 192.168.2.1 option netmask 255.255.255.0 EOF
Postavljanje DHCP servera:
cat << 'EOF' >> /etc/config/dhcp config 'dhcp' 'transtor' option 'interface' 'transtor' option 'start' '23' option 'limit' '250' option 'leasetime' '12h' EOF Editiranje firewalla: cat << 'EOF' >> /etc/config/firewall config rule option src wan option proto tcp option dest_port 443 option target ACCEPT config zone option name transtor option input REJECT option output ACCEPT option forward REJECT option syn_flood 1 option conntrack 1 #this setting is mandatory config rule option src transtor option proto udp option dest_port 67 option target ACCEPT config rule option src transtor option proto tcp option dest_port 9040 option target ACCEPT config rule option src transtor option proto udp option dest_port 9053 option target ACCEPT EOF
Podešavanje iptables:
cat << 'EOF' >> /etc/firewall.user iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 9053 iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport ! 53 --syn -j REDIRECT --to-ports 9040 EOF
Pokrenimo wifi:
wifi
Ponovno učitajmo mrežne postavke: /etc/init.d/network reload Resetiramo firewall:
/etc/init.d/firewall reload
I pokrećemo TOR:
/etc/init.d/tor start
Sa naredbom pidof TOR Možemo provjeriti da li je TOR stvarno pokrenut, ako nije onda samo u konzolu upišite tor, na taj način bi trebao ispisati koje greške se javljaju prilikom pokretanja. Također možete i u log-u(ako ste ga uključiti) provjeriti greške.
Ovako izgleda log kada se tor uspješno pokrene. Jan 14 13:06:22.000 [notice] Bootstrapped 100%: Done Jan 14 13:06:22.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
USB storage
Za slučaj da vaš uređaj nema dovoljno memorije, možete ju dodati koristeći usb stick.
opkg update opkg install kmod-usb-storage block-mount block-hotplug kmod-fs-ext4 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 mkdir -p /mnt/usb mount -t vfat /dev/sda1 /mnt/usb
Koristeći ove naredbe instalirat će se potpora za usb i vaš novi storage nalazit će se na lokaciji /mnt/usb. Važno: za ove pakete potreban je najnoviji firmware!
Firmware upgrade
Ukoliko je potrebno unaprijediti firmware to možete učiniti pomoću Luci. Otvorite Luci (default 192.168.1.1) i otiđite na System->Backup/Flash Firmaware. Ekran bi trebao izgledati ovako.
Kliknite skroz dolje na „Browse“ i odaberite firmware koji želite instalirati. Preporučam da maknete kvačicu sa Keep settings kako bi instalacija uklonila sve prijašnje postavke. Image možete pronaći ovdje http://wiki.openwrt.org/about/latest.
Bilješke
Pokretanje TOR-a nije do kraja uspjelo jer u našem slučaju ruter koji posjedujemo ima 64mb RAM-a, dok je za uspostavljanje TOR mreže potrebno min 256mb RAM-a. Kao zadnji pokušaj smo probali instalirati USB storage(i napravili firware upgrade) i prebaciti sve što TOR zapisuje na taj disk, to je uštedjelo 30-ak MB rama, ali ni to nije dovoljno da TOR ostane pokrenut. Preporučamo uređaj sa minimalno 256 MB rama kako bi sve prošlo glatko, a ne kao u našem slučaju.
Napomena
Praktični dio je u potpunosti rađen skupno, dakle sudjelovali su svi članovi tima u njegovoj izradi.