Ker dandanašnji ni pametno uporabljat Interneta brez ustrezne zaščite, je uporaba požarnega zidu pravzaprav nujna. Linux ima v ta namen vgrajene iptables, s katerimi lahko uporabniki sestavljajo pravila za filtriranje mrežnega prometa, dovoljevanje ali prepovedovanje vhodnih oziroma izhodnih povezav, skratka nadzorujejo mrežni promet računalnika. Ker pa je neposredno delo z iptables za začetnike precej težavno, se priporoča uporaba grafičnega vmesnika za nastavljanje požarnega zidu. Firestarter je eden izmed uporabniku zelo prijaznih orodij.
Namestimo ga lahko iz konzole z uporabo ukaza (omogočen mora biti universe repozitorij):
sudo apt-get install firestarter
Firestarter se po namestitvni skriva v meniju Programi - Internet. Ko ga prvič zaženemo, se pred nami pojavi čarovnik, ki omogoča osnovno nastavljanje:
V uvodnem oknu še ničesar ne nastavljamo, zato kliknemo na gumb Forward
V tem oknu izbiramo mrežni vmesnik, ki ga želimo s požarnim zidom nadzorovati. Uporabniki klicne povezave (tudi ADSL) naj izberejo ppp0, tisti, ki pa uporabljajo VDSL ali kabelski dostop, pa eth0. Če nimate fiksnega IP naslova, obkljukate tudi možnost IP adress is assigned via DHCP, za aktiviranje požarnega zidu ob aktiviranju povezave pa še Start the firewall on dial-out.
To okno ponuja možnost aktiviranja deljenja internetne povezave. V kolikor želite povezavo deliti, izberete mrežni vmesnik, na katerega boste povezali ostale računalnike (običajno eth1) in vklopite avtomatsko dodeljevanje IP naslovov (Enable DHCP for local network). Po potrditvi izbire s klikom na Forward se pred vami pojavi zadnje okno čarovnika.
Tu izberete možnost Start firewall nov in potrdite z gumbom Shrani.
Po zaključenem delu s čarovnikom in zagonu Firestarterja se pred nami pojavi vmesnik za nastavljanje požarnega zidu
V oknu glavnega vmesnika najdemo tri gumbe in tri zavihke. Gumb Preferences omogoča dostop do možnosti požarnega zidu, Lock Firewall blokira ves mrežni promet, Stop firewall pa ustavi požarni zid. Zavihek Status pa nam prikazuje stanje in promet preko mrežnih vmesnikov in aktivne povezave programov na računalniku.
Zavihek Events nam omogoča spremljanje delovanja požarnega zidu - tam se namreč prikazujejo blokirane vhodne povezave. Tako lahko „v živo“ vidimo, od kod vse poskušajo različni računalniki dostopati do našega, povečini z nelepimi nameni.
Zavihek Policy se uporablja za vnašanje pravil, ki dovoljujejo ali prepovedujejo povezave na in z našega računalnika. Če želimo na primer omogočiti oddaljen dostop do našega računalnika preko SSH, z desnim klikom na polje pod Allow service odpremo novo pogovorno okno, izberemo Add rule, nato pa pri polju Name iz menija izberemo SSH, pri čemer se polje Port izpolni samo. Pod When source is lahko omogočimo dostop komekoli, ali pa dodelimo dostop glede na IP naslov, ime gostitelja ali omrežje. V polje Comment lahko vpišemo opombo po želji. Če željene storitve ni na seznamu, lahko vsa polja izpolnimo ročno, postopek pa prikazuje spodnja zaslonska slika:
Odpremo datoteko s pravili požarnega zidu, ki temeljijo na iptables:
sudo gedit /etc/network/firewall.sh
V odprto datoteko prekopirajte kodo požarnega zidu.
Sledijo ukazi:
sudo chmod 755 /etc/network/firewall.sh sudo chown root.root /etc/network/firewall.sh
sudo sh /etc/network/firewall.sh
Odpremo datoteko z opisom mrežnih nastavitev:
sudo gedit /etc/network/interfaces
Poiščemo naslednji del…
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
dns-search xxx.xxxxxxxxx.SI
…in na konec v novo vrstico dodamo tale ukaz:
up /etc/network/firewall.sh
Uporabniki interneta lahko svojo zasebnost zaščitimo s šifriranjem, vendar pa šifriranje ne pomaga pri analizi prometa, ko napadalec ne spremlja vsebine komunikacij, pač pa kdaj in iz katere na katero točko v internetu poteka komunikacija.
Pri anonimizaciji prometnih podatkov si lahko pomagamo z uporabo aninimizacijskega omrežja Tor. Tor je porazdeljeno omrežje anonimizacijskih strežnikov, preko katerih lahko uporabniki uporabljajo internet (oziroma, natančneje, preko katerih potekajo TCP povezave). Komunikacija do izhodne točke Tor omrežja je šifrirana. Za dodatno zaščito je smiselno uporabiti tudi orodje Privoxy. Privoxy je filtrirno orodje za HTTP protokol. Enostavno povedano Privoxy lahko poskrbi, da so iz HTML kode, ki jo prejme naš brskalnik odstranjeni vsi zlonamerni deli, ki omogočajo razkritje naše identitete.
Če so skladišča razvijalcev Tor-a že omogočena v našem seznamu skladišč (datoteka /etc/apt/sources.list), je potrebno uvoziti še PGP ključe skladišča:
gpg --keyserver subkeys.pgp.net --recv 94C09C7F gpg --fingerprint 94C09C7F gpg --export 94C09C7F | sudo apt-key add -
Sledi namestitev orodja Tor in Privoxy:
sudo apt-get install tor privoxy
Nato je potrebno odpreti konfiguracijsko datoteko Privoxya:
sudo gedit /etc/privoxy/config
in vanjo na konec poglavja 5 dodati naslednjo vrstico:
" forward-socks4a / localhost:9050 . " (brez narekovajev in s piko na koncu!)
Če uporabljamo brskalnik Firefox, lahko namestimo še dodatek TorButton ter Live IP Address. V obeh primerih je potrebno namestiti XPI datoteko (spletno stran kjer se nahaja TorButton pa je pred tem potrebno dodati na seznam strani iz katerih dovolimo nameščanje dodatkov), nato pa ponovno zagnati Firefox.
TorButton v spodnjem desnem kotu statusne vrstice se izpiše ali je povezava preko Tor-a vključena ali ne. Vključimo/izključimo jo s klikom nanjo. Live IP Address pa v spodnjem desnem kotu izpiše naš trenutni IP naslov, oz. IP naslov izhodne točke v Tor omrežju, če smo vključeni v Tor. Live IP Address naš IP naslov lahko preverja v intervalu od 17 do 1422 minut, lahko pa zahtevamo takojšnje preverjanje in sicer preko menuja Orodja - Live IP Address - Force Update Now.
Na koncu lahko še preverimo ali Tor res deluje.
tar xvfz truecrypt-*.tar.gz
sudo dpkg -i truecrypt-*.deb
Beseda kriptografija označuje metode za zaščito vsebine (šifriranje) sporočil. S pomočjo kriptografije lahko onemogočimo prisluškovanje elektronskim komunikacijam. Leta 1978 so na Massashusets Institute of Technology (MIT) razvili RSA šifrirni algoritem, ki omogoča praktično nezlomljivo kriptografijo, kar pomeni, da so podatki, zaščiteni s to kriptografsko metodo izjemno varni. Metoda RSA deluje tako, da imata tako tisti, ki sporočilo pošilja (pošiljatelj), kot tisti, ki sporočilo sprejema (prejemnik), vsak svoj par ključev. Zasebnega, ki je tajen, in javnega, ki je javno dostopen. Kako poteka šifriranje sporočil? Ker sta ključa med seboj povezana v posebnem matematičnem razmerju, mora pošiljatelj sporočilo zašifrirati s svojim zasebnim in prejemnikovim javnim ključem, tako šifrirano sporočilo pa potem pošlje prejemniku. Prejemnik pa to sporočilo nato dešifrira s svojim zasebnim in pošiljateljevim javnim ključem.
Zato kriptografija z javnimi ključi ne potrebuje tim. „varnih kanalov“ za prenos ključev, saj so javni ključi lahko (oz. morajo biti) javno objavljeni, zasebne ključe pa posamezniki seveda obdržijo zase (v tajnosti). Za pošiljanje šifriranega sporočila torej potrebujemo samo naslovnikov javni ključ (svoj zasebni ključ že imamo), naslovnik pa potrebuje samo pošiljateljev javni ključ (svojega zasebnega že ima). Tak sistem šifriranja omogoča tudi verifikacijo pošiljatelja oz. tim. „elektronski podpis“.
Ime GPG je nastalo na podlagi imena znanega programa za šifriranje PGP - Pretty Good Privacy (precej dobra zasebnost. Gre torej za program za šifriranje vsebine datotek in elektronskih sporočil. Pri šifriranju GPG uporablja kriptografsko metodo javnega in zasebnega ključa. To pomeni, da imata tako pošiljatelj, kot prejemnik vsak svoj par javni in tajni ključ. Javni ključ javno objavita, tajnega pa obdržita zase. Šifriranje poteka tako, da pošiljatelj sporočilo zašifrira s prejemnikovim javnim ključem in svojim tajnim ključem. Prejemnik pa sporočilo lahko dešifrira samo s pošiljateljevim javnim ključem in svojim tajnim ključem. S tem odpade potreba po tim. varnem kanalu, preko katerega je potrebno v primeru klasične kriptografije prenesti geslo od pošiljatelja do prejemnika. S tem se tudi bistveno izboljša varnost - če ni prenašanja gesel, jih tudi ni mogoče prestreči.
GPG ima shranjena uporabnikov javni in zasebni ključ (na začetku ju moramo seveda ustvariti) ter javne ključe oseb s katerimi si dopisujemo. Javne ključe lahko dodajamo ročno, ali pa jih poiščemo s pomočjo strežnika javnih ključev. GPG omogoča enostavno iskanje po strežnikih javnih ključev, dodajanje in ostalo upravljanje s ključi. Seveda imamo lahko tudi več parov javni-zasebni ključ.
GPG je program za šifriranje elektronske pošte in datotek in je del Ubuntuja. GPG je v osnovi terminalski (negrafičen) program. Če želimo uporabljati grafični vmesnik za upravljanje s ključi, ga namestimo takole:
za okolje Gnome:
sudo apt-get install seahorse
za okolje KDE (deluje tudi v Gnome, ni pa tako dobro integriran):
sudo apt-get install gpgkeys
Če želimo iz svojega sistema očistiti knjižnice, ki jih ne uporablja noben program, potrebujemo programski paket deborphan. Po namestitvi ga poženemo in izpišejo se neuporabljene knjižnice. Pozor. Izpis vsebuje tudi kodeke, zato je potrebno premisliti kaj bomo odstranili in česa ne. Namestitev:
sudo apt-get install deborphan
Program je potrebno pognati z administratorskimi pravicami:
sudo deborphan
Knjižnice, ki so izpisane lahko odstranimo (z apt-get remove –purge <ime_knjižnice>), kodeke pa seveda pustimo pri miru.
Če pa želimo odstraniti še konfiguracije že odstranjenih paketov, pa to storimo tako, da najprej pogledamo kateri paketi so bili odstranjeni (dpkg –get-selections | grep deinstall), nato izpisa prilagodimo tako, da se prikažejo le imena teh paketov (dpkg –get-selections | grep deinstall | cut -f1), nato le-te pakete odstranimo. Celoten ukaz, ki naredi celoten opisani postopek je naslednji:
sudo dpkg --get-selections | grep deinstall | cut -f1 | xargs sudo dpkg --purge
V primeru, da je z varnostnimi popravki prišla nova različica jedra je smiselno staro jedro odstraniti. To seveda storimo le v primeru, da novo jedro deluje brez težav, pri čemer moramo biti pozorni tudi na pravilno delovanje nekaterih programov ki potrebujejo jedrne kodule (kernel modules) pod novim jedrom. Tak program je recimo TrueCrypt ali Vmware Player. Poleg tega lahko odstranimo le jedro, ki ga trenutno ne uporabljamo (iz katerega nismo zagnali sistema) - trenutno aktivnega jedra seveda ne moremo odstraniti. Najprej poglejmo seznam vseh paketov starega jedra (npr. jedra 2.6.15-23:
sudo dpkg --get-selections | grep 2.6.15-23
Nato pa odstranimo vse pakete starega jedra:
sudo apt-get remove --purge linux-image-2.6.15-23-386 linux-restricted-modules-2.6.15-23-386
Virusov in ostalega podobnega zlonamernega programja za Linux je sicer zelo malo, se pa tu in tam najde kakšen zlonameren program, ki ga označujemo z izrazom rootkit. Rootkiti so orodja, s katerimi napadalec pridobi administratorski dostop do računalnika. Napadalcev se sicer najbolj ubranimo s preventivo:
Za odkrivanje rootkitov pa obstaja orodje, ki omenjene zlonamerne programe skuša zaznati. Imenuje se chkrootkit. Namestitev:
sudo apt-get install chkrootkit
Podobno, sodobnejše orodje:
sudo apt-get install rkhunter
Program deluje samo v konzoli in ima precej neprijazen uporabniški vmesnik, oziroma le-tega sploh nima. Potrebno ga je pognati z administratorskimi pravicami:
sudo chkrootkit
Program preveri prisotnost znanih rootkitov in izpiše stanje, približno takole:
Searching for zaRwT rootkit default files and dirs... nothing found Searching for Madalin rootkit default files... nothing found Searching for Fu rootkit default files... nothing found Searching for ESRK rootkit default files... nothing found Searching for anomalies in shell history files... Warning: `//home/matej/.bash_history' file size is zero nothing found Checking `asp'... not infected Checking `bindshell'... not infected Checking `lkm'... chkproc: nothing detected Checking `rexedcs'... not found Checking `sniffer'... lo: not promisc and no packet sniffer sockets eth0: not promisc and no packet sniffer sockets Checking `w55808'... not infected Checking `wted'... chkwtmp: nothing deleted Checking `scalper'... not infected Checking `slapper'... not infected Checking `z2'... chklastlog: nothing deleted
V primeru, da je izpisano kakšno opozorilo, pa se je po opis rootkita in navodila za odstranite žal potrebno odpraviti na Google. Potrebno je biti pozoren tudi na morebitne lažne alarme. Načeloma pa velja da je v primeru okužbe najbolje celoten sistem namestiti na novo.
Ukaz za izpis vzpostavljenih povezav:
netstat -an | grep EST
Primer izpisa:
tcp 0 0 193.xxx.xxx.xxx:37174 80.xxx.xxx.xxx:61627 ESTABLISHED
Izpis programa, ki je povezan na določenih vratih (primer za vrata 37174):
lsof -nP | grep 37174
Primer izpisa:
skype 13500 user 14u IPv4 89532 TCP 193.xxx.xxx.xxx:37174->80.xxx.xxx.xxx:61627 (ESTABLISHED)
Ukaz za izpis aktivnih internetnih povezav (izpiše tudi vse Unix socket-e):
netstat -p
Ukaz za izpis aktivnih internetnih povezav in programov, ki so jih vzpostavili:
netstat --inet -p
Primer izpisa:
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 xxxx.xxx.uni:43473 acig214.neoplus.a:https ESTABLISHED6214/skype
Ukaz za izpis aktivnih internetnih povezav in programov, ki so jih vzpostavili (brez DNS resolvinga):
netstat --inet -pn
Primer izpisa (brez DNS resolvinga):
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 xxx.xxx.xxx.xxx:43473 83.10.30.214:443 ESTABLISHED6214/skype