Varnost

Nadgrajevanje sistema z varnostnimi popravki ter skrb za varnost

Požarni zid Firestarter

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.

Nastavljanje požarnega zidu Firestarter

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:

Napredni požarni zid z usmerjanjem prometa temelječ na iptables

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

Zagon požarnega zidu

sudo sh /etc/network/firewall.sh

Samodejni zagon požarnega zidu ob zagonu računalnika

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

Anonimno surfanje po internetu preko omrežja Tor

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_menu.jpg

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.

Šifriranje diskovnih particij s programom TrueCrypt

tar xvfz truecrypt-*.tar.gz

sudo dpkg -i truecrypt-*.deb

Namestitev GPG vmesnika

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.

asimetricna_kripto.jpg

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

Čiščenje sistema

Č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

Odstranjevanje starega jedra

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

Virusi in rootkiti (uporaba orodja chkrootkit in rkhunter)

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:

  • na sistem ne spuščamo nezanesljivih ali zlonamernih uporabnikov (če smo edini uporabnik računalnika ni problem);
  • nastavimo restriktiven požarni zid;
  • ne vklapljamo nepotrebnih storitev (npr. ssh ali spletnega strežnika, če ga ne potrebujemo);
  • sistem redno posodabljamo z varnostnimi popravki;
  • skrbimo za ustrezno varnostno kulturo (redna menjava gesel,…), itd.

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.

Preverjanje sumljivih povezav

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

Crypto File System - šifriranje celotnega sistema

 
ubuntu/varnost.txt · Zadnjič spremenil/a: 2008/07/15 10:26 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki