Sljedeći dio Prethodni dio Sadržaj

6. Sigurnost lozinki i enkripcija

Jedna od najvažnijih načina osiguranja koji se koriste u današnje vrijeme su lozinke. Važno je da vi i svi vaši korisnici imate sigurne, nepogodive lozinke. Većina novijih Linux distribucija dolaze s programom passwd koji ne dopušta lozinke koje je lako pogoditi. Provjerite da li je vaš passwd svjež i da li ima takve mogućnosti.

Dublje ulaženje u temu enkripcije izvan je dosega ovog dokumenta, ali potreban je barem uvod. Enkripcija je vrlo korisna, možda čak i potrebna u ovakvom dobu. Postoji mnogo načina enkriptiranja podataka, svaki sa svojim osobinama.

Većina Unixa (ni Linux nije iznimka) za enkriptiranje lozinki primarno koriste jednosmjerni algoritam enkriptiranja zvan DES (Data Encryption Standard -- standard enkripcije podataka). Takve enkriptirane lozinke pohranjuju se u (obično) /etc/passwd ili (neuobičajenije) /etc/shadow. Kada se pokušate logirati, što god upišete ponovo se enkriptira i uspoređuje s zapisom u datoteci u kojoj su vaše lozinke. Ako se slažu, to mora biti ista lozinka i ulaz vam je dopušten. Iako je DES dvosmjeran algoritam enkripcije (možete enkriptirati i dekriptirati poruku ako imate prave ključeve) varijanta koju većina Unixa koristi jednosmjerna je. Dakle, ne bi trebalo biti moguće obrnuti smjer enkripcije i dobiti lozinku iz sadržaja /etc/passwd (odnosno /etc/shadow).

Napadi grubom silom kao što je Crack ili John the Ripper (v. dolje) često pogode lozinke ako one nisu dovoljno slučajne. PAM moduli (v. dolje) omogućavaju korištenje različitog načina enkripcije lozinki (MD5 ili slično).

O izabiranju dobre lozinke možete pročitati na http://consult.cern.ch/writeup/security/security_3.html.

6.1 PGP i kriptografija javnih ključeva

Kriptografija javnih ključeva, koju koristi i PGP, koristi jedan ključ za enkripciju i jedan za dekripciju. Tradicionalno, kriptografija koristi za enkripciju isti ključ kao i za dekripciju. Taj "osobni ključ" mora biti poznat obje strane i na neki način sigurno prenesen od jedne do druge.

Kriptografija javnih ključeva poništava potrebu sigurnog prenošenja ključa koji se koristi za enkripciju pomoću korištenja dva odvojena ključa, javnog ključa i osobnog ključa. Javni ključ svake osobe dostupan je svakome za enkripciju, no osobni ključ ima samo ta osoba kako bi dekriptirala poruke šifrirane točnim javnim ključem.

I kriptografija javnih i kriptografija osobnih ključeva imaju svoje prednosti -- o tim razlikama govori se u RSA Cryptography FAQ, navedenom na kraju ovog dijela.

PGP (Pretty Good Privacy -- prilično dobra privatnost) na Linuxu je dobro podržan. Verzije 2.6.2 i 5.0 dobro funkcioniraju. Za dobar uvod u PGP i kako ga koristiti pogledajte PGP FAQ, http://www.pgp.com/service/export/faq/55faq.cgi. Pazite da uzmete verziju koja odgovara vašoj zemlji, jer se prema ograničenjima izvoza iz SAD-a jaka enkripcija smatra vojnim oružjem i njeno prenošenje u elektronskom obliku izvan zemlje je zabranjeno.

Tu je i vodič korak-po-korak u konfiguriranju PGP na Linuxu, koji se može naći na http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html. Napisan je za međunarodnu verziju PGP-a, ali lako se primjeni na verziju za SAD. Možda će vam trebati i zakrpa za neke od najnovijih Linux verzija koja se može naći na ftp://sunsite.unc.edu/pub/Linux/apps/crypto.

Više informacija o kriptografiji može se naći u RSA Cryptography FAQ na http://www.rsa.com/rsalabs/newfaq/. Tu ćete naći informacije o stvarima kao što je "Diffie-Hellman", "kriptografija javnih ključeva", "digitalne potvrde", itd.

6.2 SSL, S-HTTP, HTTPS i S/MIME

Korisnike često zanimaju razlike između raznih sigurnosnih i enkripcijskih protokola, te njihovo korištenje. Iako ovo nije dokument o enkripciji, bilo bi dobro da razjasnimo što je što i gdje naći više informacija.

SSL:

(Secure Sockets Layer) metoda je enkripcije koju je razvio Netscape za sigurnost preko Interneta. Podržava nekoliko različitih enkripcijskih protokola i omogućava autentifikaciju klijenta i poslužitelja. SSL radi na razini prijenosa stvarajući sigurni kanal podataka i tako može transparentno enkriptirati mnoge vrste podataka. To ćete najčešće vidjeti pregledavajući u Communicatoru siguran dokument sa sigurnog poslužitelja, a služi kao osnova sigurnih komunikacija pomoću Communicatora, kao i mnoge druge enkripcije podataka Netscape Communicationsa. Više informacija može se naći na http://www.consensus.com/security/ssl-talk-faq.html. Informacije o drugim Netscapeovim sigurnosnim implementacijama i dobra početna točka za ove protokole nalazi se na http://home.netscape.com/info/security-doc.html.

S-HTTP:

S-HTTP je još jedan protokol koji omogućava sigurne usluge preko Interneta. Napravljen je da pruži povjerljivost, provjerenost, cjelovitost i nezamjenjivost istovremeno podržavajući mehanizme za rad s više ključeva i kriptografske algoritme kroz pregovaranje opcija između strana umiješanih u svaku transakciju. S-HTTP je ograničen na poseban program koji ga implementira i svaku poruku posebno enkriptira. (iz RSA Cryptography FAQ, str. 138)

S/MIME

- S/MIME, odnosno Secure Multipurpose Internet Mail Extension, enkripcijski je standard koji se koristi za enkriptiranje elektronske pošte i drugih tipova poruka preko Interneta. To je otvoren standard kojeg razvija RSA, pa se nadamo da ćemo ga uskoro vidjeti i na Linuxu. Više informacija o S/MIME-u može se naći na http://home.netscape.com/assist/security/smime/overview.html.

6.3 Linux x-kernel -- implementacija IPSEC-a

Uz CIPE i druge oblike enkripcije podataka, za Linux postoji i implementacija IPSEC-a. IPSEC je rezultat napora IETF-a u stvaranju kriptografski sigurnih komunikacija na razini IP mreža, koji također pruža autentifikaciju, cjelovitost, kontrolu pristupa i povjerljivost. Informacije o IPSEC-u i Internet nacrtu mogu se naći na http://www.ietf.org/html.charters/ipsec-charter.html. Tamo su i veze na druge protokole koji rade s ključevima, te IPSEC mailing lista i arhive.

Linux implementacija koja se razvija na Sveučilištu Arizone koristi x-kernel, objektno bazirani okvir za implementiranje mrežnih protokola, a može se naći na http://www.cs.arizona.edu/xkernel/hpcc-blue/linux.html. Najjednostavnije rečeno, x-kernel je način prenošenja poruka na razini kernela, što olakšava implementaciju.

Kao i drugi oblici kriptografije, ne distribuira se zajedno s kernelom zbog ograničenja u izvozu.

6.4 SSH, stelnet

SSH (Secure Shell -- sigurna ljuska) i stelnet su programi koji vam omogućavaju rad na udaljenim sustavima kroz enkriptiranu vezu.

SSH je skup programa koji se koriste kao sigurna zamjena za rlogin, rsh i rcp. Za enkriptiranje između dva računala koristi kriptografiju javnih ključeva, kao i za provjeru korisnika. Može se koristiti za sigurno logiranje na udaljeno računalo ili kopiranje podataka između računala ujedno sprečavajući napade između (session hijacking -- otimanje sesije) i DNS spoofing (varanje). Sažimat će vaše veze i osiguravati X11 veze između računala. SSH-ove WWW stranice su http://www.cs.hut.fi/ssh/.

SSH možete koristiti i sa svoje Windows radne stanice na svoj Linux SSH poslužitelj. Ima nekoliko besplatnih Windows implementacija klijenta, uključujući onu na http://guardian.htu.tuwien.ac.at/therapy/ssh/, kao i komercijalnu implementaciju DataFellowsa na http://www.datafellows.com.

SSLeay je besplatna implementacija Netscapeovog Secure Sockets Layer protokola, kao i nekoliko aplikacija, kao što je Secure telnet, modul za Apache, nekoliko baza podataka, te nekoliko algoritama uključujući DES, IDEA i Blowfish.

Koristeći taj library napravljena je sigurna zamjena za telnet koja enkriptira telnet vezu. Za razliku od SSH-a, stelnet koristi SSL, Secure Sockets Layer, koji je razvio Netscape. Secure telnet i Secure FTP možete naći počevši od SSLeay FAQ, dostupnog na http://www.psy.uq.oz.au/~ftp/Crypto/.

6.5 PAM - Pluggable Authentication Modules

Novije verzije distribucije Red Hat Linux isporučuju se s jedinstvenom shemom autentifikacije zvanom "PAM". PAM vam omogućava mijenjanje metoda i potreba autentificiranja u letu te enkapsuliranje svih lokalnih autentifikacijskih metoda bez ponovnog kompajliranja ijednog programa. Konfiguracija PAM-a je izvan dosega ovog dokumenta, ali potrudite se i pogledajte WWW stranice PAM-a za više informacija. http://www.kernel.org/pub/linux/libs/pam/index.html

Samo neke od stvari koje možete s PAM-om:

Samo nekoliko sati nakon instaliranja i konfiguriranja svog sustava možete spriječiti mnoge napade prije nego što se i dogode. Na primjer, koristite PAM za isključivanje korištenja .rhosts datoteka na sustavu u home direktorijima korisnika dodavanjem ovih redova /etc/pam.d/login:

#
# Korisnicima onemogućavamo rsh/rlogin/rexec
#
login auth required pam_rhosts_auth.so no_rhosts

6.6 Kriptografska IP enkapsulacija (CIPE)

Najvažniji cilj ovog softvera je pružiti mogućnost sigurne (od prisluškivanja, kao i analiza prometa, te ubacivanja krivotvorenih poruka) veze podmreža preko nesigurne paketne mreže kao što je Internet.

CIPE (Cryptographic IP Encapsulation) podatke enkriptira na mrežnoj razini. Paketi koji putuju između računala enkriptirani su. Enkripcija se izvodi blizu same podrške koja šalje i prima pakete.

To je različito od SSH-a koji podatke enkriptira na vezi, na razini socketa. Logička veza između programa na različitim računalima enkriptirana je.

CIPE se može koristiti za tunnelling kako bi stvorili Virtual Private Network (virtualnu privatnu mrežu). Enkripcija na niskom nivou ima prednost što može transparentno raditi između dvije mreže spojene u VPN, bez ikakvog mijenjanja aplikacija.

Sažeto iz dokumentacije CIPE-a:

IPSEC standardi definiraju skup protokola koje se može koristiti (među ostalim) za izgradnju enkriptiranih VPM-ova. Međutim, IPSEC je relativno težak i složen skup protokola s mnogo opcija, potpune implementacije još uvijek se rijetko koriste, a neka pitanja (kao što je rad s ključevima) još nisu do kraja riješena. CIPE koristi jednostavniji pristup u kojem se mnoge stvari (kao što je izbor algoritma enkripcije) mogu promijeniti samo pri instalaciji. To ograničava prilagodljivost, ali omogućava jednostavnu (i zato djelotvornu, u kojoj je lako pronaći greške) implementaciju.

Više informacija može se naći na http://www.inka.de/~bigred/devel/cipe.html.

Kao i drugi oblici kriptografije, ne distribuira se s kernelom zbog ograničenja u izvozu.

6.7 Kerberos

Kerberos je sustav autentifikacije koji je razvio Athena projekt na MIT-u. Kada se korisnik logira, Kerberos ga autentificira (preko lozinke) i daje mu način dokazivanja identiteta drugim poslužiteljima i računalima razbacanim na mreži.

Ovu autentifikacija često koriste programi kao što je rlogin kako bi korisniku omogućili logiranje na druga računala bez lozinke (umjesto datoteke .rhosts). Autentifikaciju također koristi sustav pošte kako bi se zajamčila isporuka pošte pravoj osobi, kao i istinit identitet pošiljatelja.

Ukupni učinak instaliranja Kerberosa i brojnim drugih programa koji s njime dolaze je gotovo potpuna eliminacija mogućnosti da korisnik prevari sustav da je netko drugi. Nažalost, instalacija Kerberosa vrlo je temeljita i zahtijeva promjene ili zamjene mnogih standardnih programa.

Više informacija o Kerberosu može se naći na http://www.veritas.com/common/f/97042301.htm, a izvorni kod na http://nii.isi.edu/info/kerberos/.

(iz Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller. "Kerberos: An Authentication Service for Open Network Systems." USENIX Conference Proceedings, Dallas, Texas, zima 1998.)

6.8 Shadow lozinke

Shadow lozinke način su čuvanja vaših enkriptiranih lozinki nedostupnim običnom korisniku. Obično su te enkriptirane lozinke pohranjene u datoteci /etc/passwd gdje ih svi mogu pročitati. Zatim mogu pokrenuti programe za pogađanje lozinke i pokušati ju saznati. Shadow lozinke te informacije pohranjuju u datoteku /etc/shadow koju mogu čitati samo privilegirani korisnici. Da bi shadow lozinke funkcionirale, svi vaši programi kojima treba pristup informacijama o lozinci moraju se ponovo kompajlirati kako bi ih podržavali. PAM (već spomenut) vam također omogućava da samo uključite shadow modul i ne zahtijeva ponovno kompajliranje izvršnih datoteka. Ako je to potrebno, za daljne informacije pogledajte Shadow Password HOWTO. Dostupan je na http://sunsite.unc.edu/LDP/HOWTO/Shadow-Password-HOWTO.html. Sada je relativno zastario i nije potreban distribucijama koje podržavaju PAM.

6.9 Crack i John the Ripper

Ako iz nekog razloga vaš passwd program ne sili teško pogodive lozinke, možda ćete htjeti pokrenuti program za razbijanje lozinki i provjeriti da li su lozinke vaših korisnika sigurne.

Programi za razbijanje lozinki zasnovani su na jednostavnoj ideji. Isprobaju svaku riječ u rječniku i zatim njihove varijacije. Svaku enkriptiraju i provjeravaju da li se slaže s vašom enkriptiranom lozinkom. Ako da, unutra su.

Više ih je u divljini... Dva najzapaženija su Crack i John the Ripper http://www.false.com/security/john/index.html. Zauzet će vam dosta procesorskog vremena, ali bi vam trebali reći da li bi napadač mogao ući koristeći ih, ako ih pokrenete prije njega i obavijestite korisnike sa slabim lozinkama. Primjetite da bi napadač prije toga morao iskoristiti neku drugu rupu da bi dobio vašu passwd (Unixov /etc/passwd) datoteku, ali one su češće nego što mislite.

6.10 CFS i TCFS

CFS (Cryptographic File System -- kriptografski datotečni sustav) je metoda enkriptiranja cijelog datotečnog sustava koji korisnicima omogućava pohranjivanje enkriptiranih datoteka. Koristi NFS poslužitelj koji radi na lokalnom stroju. RPM-ovi se nalaze na http://www.replay.com/redhat/, a više informacija o tome kako to sve radi na ftp://ftp.research.att.com/dist/mab/.

TCFS (Transparent Cryptographic File System -- transparentni...) poboljšava CFS, dodavajući više integracije s datotečnim sustavom, tako da je proziran korisnicima koji ga koriste. Više informacija na http://edu-gw.dia.unisa.it/tcfs/.

6.11 X11, SVGA i sigurnost prikaza

6.11.1 X11

Važno je da osigurate svoj grafički prikaz kako bi spriječili napadače u stvarima kao što je: krađa vaših lozinki dok ih tipkate bez da ste toga svjesni, čitanje dokumenata ili informacija koje čitate na svom ekranu ili čak korištenje rupe za pristup nadkorisnika. Pokretanje X aplikacija preko mreže također može biti igranje s vatrom koje omogućuje njuškalima da gledaju cijelu vašu interakciju s udaljenim sustavom.

X ima više mehanizama za kontrolu pristupa. Najjednostavniji od njih zasniva se na imenu računala. xhost možete koristiti za određivanje računala kojima je dozvoljen pristup vašem prikazu. To uopće nije sigurno. Ako netko ima pristup vašem računalu može koristiti xhost + svoje računalo i lako ući. Također, ako dopuštate pristup neprovjerenom stroju, svatko može gledati vaš prikaz.

Ako koristite xdm (X Display Manager) za logiranje, imate puno bolju metodu pristupa: MIT-MAGIC-COOKIE-1. Generira se 128-bitni kolačić i sprema u vašu .Xauthority datoteku. Ako želite omogućiti pristup svom prikazu s drugog računala, koristite naredbu xauth i informacije u vašoj .Xauthority datoteci kako bi se samo toj vezi dozvolio pristup. Pročitajte X-na-daljinu mini-KAKO, dostupan na http://meta.mioc.hr/X-na-daljinu.html.

Možete koristiti i ssh (v. ssh, gore) za sigurne X veze. To ima prednost transparentnosti krajnjem korisniku, a znači da mrežom kolaju samo enkriptirani podaci.

Za više informacija o sigurnosti u X-u pogledajte man stranicu Xauthority. Najsigurnije je koristiti xdm za logiranje na svoju konzolu, a zatim ssh za pokretanje X programa s udaljenih računala.

6.11.2 SVGA

SVGAlib programi obično su SUID-root kako bi mogli pristupiti grafičkoj kartici vašeg Linux sustava. To ih čini vrlo opasnima. Ako se sruše, obično morate ponovo dignuti računalo da bi dobili koristivu konzolu. Provjerite da su SVGA programi koje imate autentični i da im se može barem ponešto vjerovati. Još bolje, nemojte ih uopće imati.

6.11.3 GGI

Linux GGI (Generic Graphics Interface -- projekt općeg grafičkog sučelja) projekt pokušava rješiti nekoliko problema grafičkih sučelja na Linuxu. GGI će malen dio video koda pomaknuti u kernel, a zatim kontrolirati pristup grafičkom sustavu. To znači da će GGI moći bilo kada dovesti vašu konzolu u dobro stanje. Također će omogućiti sigurne ključeve za upozorenje da na vašoj konzoli ne rade trojanski konji koji se predstavljaju kao login. http://synergy.caltech.edu/~ggi/


Sljedeći dio Prethodni dio Sadržaj