Poglavlje 14 Sigurnost Tabela sadržaja 14.1 Isključivanje servisa 14.2 Kontrola pristupa 14.3 Ostajanje u toku Sigurnost je važna na svakom sustavu; može spriječiti ljude da pokreću napade sa vašeg računala, kao i zaštititi osjetljive podatke. Ovo poglavlje je o tome kako osigurati vaše Slackware računalo od napadača, krakera i ostalih napasti. Imajte na umu da je ovo samo početak osiguravanja sustava; sigurnost je proces, ne stanje. 14.1 Isključivanje servisa Prvi korak poslije instaliranja Slackware-a bi trebao biti isključivanje svih servisa koje nećete koristiti. Svaki servis je potencijalni sigurnosni rizik, stoga je važno izvršavati što manje procesa (tj. samo oni koji su nužno potrebni). Servisi se pokreću sa dva glavna mjesta - inetd i init skripte. 14.1.1 Servisi pokrenuti iz inetd-a Mnogo demona (daemon - nadimak za servise u Linux-u) koji dolaze uz Slackware Linux se pokreću iz inetd(8). inetd je daemon koji sluša na svim portovima koje koriste servisi podešeni da se pokreću s njime, i pokreće relevantan daemon kada se desi pokušaj konekcije. Daemon-i pokrenuti iz inetd mogu se isključiti komentiranjem relevantnih linija u /etc/inetd.conf. Da bi to uradili, otvorite ovu datoteku u vašem najdražem uređivaču teksta (npr. vi), vidjet će te linije slične ovoj: telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd Ovaj servis možete isključiti (i ostale) tako što će te komentirati (tj. dodavanjem # (ljestve) na početak linije). Gornji primjer bi onda postao: #telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd Kada se inetd ponovno pokrene, ovaj servis će biti isključen. inetd možete resetirati naredbom: # kill -HUP $(cat /var/run/inetd.pid) 14.1.2 Servisi pokrenuti iz init skripti Ostatak servisa pokrenutih prilikom dizanja sustava pokreću se iz init skripti smještenih u /etc/rc.d/. Oni se mogu isključiti na dva različita načina, prvi uklanjanjem izvršnih dozvola na relevantnim init skriptama, a drugi komentiranjem relevantnih linija u init skriptama. Primjerice, SSH se pokreće vlastitom init skriptom /etc/rc.d/rc.sshd. Možete ga isključiti sa: # chmod -x /etc/rc.d/rc.sshd Za servise koji nemaju svoju vlastitu init skriptu, morat će te komentirati relevantne linije u init skriptama da bi ih isključili. Primjerice, portmap daemon se pokreće slijedećim linijama u /etc/rc.d/rc.inet2: # This must be running in order to mount NFS volumes. # Start the RPC portmapper: if [ -x /sbin/rpc.portmap ]; then echo "Starting RPC portmapper: /sbin/rpc.portmap" /sbin/rpc.portmap fi # Done starting the RPC portmapper. Ovo se može onemogućiti dodavanjem znaka # na početak linija koje već ne počinju s njime: # This must be running in order to mount NFS volumes. # Start the RPC portmapper: #if [ -x /sbin/rpc.portmap ]; then # echo "Starting RPC portmapper: /sbin/rpc.portmap" # /sbin/rpc.portmap #fi # Done starting the RPC portmapper. Ove promjene će imati efekta tek nakon ponovnog pokretanja sustava ili promjene te povratka u stupanj pokretanja 3 ili 4 (run level). Ovo možete uraditi izdavanjem slijedeće naredbe u terminalu (morat će te se ponovno prijaviti na sustav nakon prebacivanja u run level 1): # telinit 1 # telinit 3 14.2 Kontrola pristupa 14.2.1 iptables iptables je aplikacija za podešavanje kontrole filtriranja mrežnih paketa u Linux 2.4 i višim. Kernel 2.4 (2.4.5 točnije) je prvi koji je ovo uveo u Slackware (kao opciju) u verziji 8.0 te je postao zadani standard (default) u 8.1. Ovaj odlomak pokriva samo osnove korištenja iptables, za više detalja trebali bi pogledati http://www.netfilter.org/ Ove naredbe trebale bi biti upisane u /etc/rc.d/rc.firewall, koji mora biti označen kao izvršna datoteka da bi ova pravila imala efekta prilikom podizanja sustava. Imajte na umu da vam nepravilne iptables naredbe doslovno mogu onemogućiti pristup vlastitom računalu. Ukoliko niste 100% sigurni u vaše vještine uvijek osigurajte nekakav lokalni pristup. Prva stvar koju bi većina ljudi trebala uraditi je podesiti zadano pravilo za svaki dolazni lanac na DROP (odbaci): # iptables -P INPUT DROP # iptables -P FORWARD DROP Sada kad je sve odbijeno, možete početi dozvoljavati pojedine stvari. Prva stvar koju bi trebalo dozvoliti je bilo kakav promet za sesije koje su već uspostavljene: # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Da se ne bi ometala bilo koja aplikacija koja komunicira koristeći loopback adresu, mudro je postaviti i ovakvo pravilo: # iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT Ovo pravilo dozvoljava bilo kakav promet od i do 127.0.0.0/8 (127.0.0.0 - 127.255.255.255) na loopback (lo) sučelju. Tijekom pisanja pravila dobra je praksa biti što konkretniji, kako bi se osigurali da vaša pravila nenamjerno ne dozvole ništa zlo. Dakle, pravila koja dozvoljavaju premalo znače više pravila i više tipkanja. Slijedeća stvar je dozvoljavanje pristupa određenim servisima na vašem računalu. Primjerice želite li izvršavati web poslužitelj, koristit će te pravilo slično ovome: # iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT Ovo će dozvoliti pristup sa svakog računala na port 80 vašeg računala preko ppp0 sučelja. Možda će te željeti dozvoliti pristup ovom servisu samo određenim računalima. Ovo pravilo dozvoljava pristup vašem web servisu samo sa IP adrese 64.57.102.34: # iptables -A INPUT -p tcp -s 64.57.102.34 --dport 80 -i ppp0 -j ACCEPT Dozvoljavanje ICMP prometa može biti korisno za dijagnostičke svrhe. Da bi ovo uradili, koristili bi pravilo poput: # iptables -A INPUT -p icmp -j ACCEPT Većina ljudi će željeti podesiti Prevođenje Mrežnih Adresa (Network Address Translation, NAT) na svojem računalu koje služi kao poveznik (gateway), tako da druga računala u mreži mogu pristupiti Internetu "kroz" njega. To bi postigli koristeći sljedeću naredbu: # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE Također treba uključiti prosliješivanje IP adresa (IP forwarding). Privremeno ovo možete uraditi koristeći slijedeću naredbu: # echo 1 > /proc/sys/net/ipv4/ip_forward Da bi se proslijeđivanje IP adresa uključilo za stalno (tj. da promjena ostane nakon ponovnog pokretanja sustava), morat će te otvoriti datoteku /etc/rc.d/rc.inet2 u vašem omiljenom uređivaču teksta te izmjeniti slijedeću liniju: IPV4_FORWARD=0 ...u: IPV4_FORWARD=1 Za više podataka o NAT-u, pogledajte NAT HOWTO. 14.2.2 tcp omotači tcp omotači (tcpwrappers) kontroliraju pristup daemona na aplikacijskoj razini, prije nego na IP razini. Ovo može pružiti dodatan sloj zaštite u trenutcima kada kontrole pristupu IP razini (npr. Netfilter) ne funkcioniraju ispravno. Na primjer, ukoliko ponovno prevedete (compile) jezgru (kernel), ali zaboravite uključiti podršku za iptables, vaša zaštita na IP razini neće funkcionirati ispravno ali tcp omotači će i dalje pomagati pri zaštiti vašeg sustava. Pristup servisima koje štite tcp omotači može se kontrolirati korištenjem datoteka /etc/hosts.allow i /etc/hosts.deny. Većina ljudi će imati samo jednu liniju u svojoj /etc/hosts.deny datoteci, koja će braniti pristup svim daemon-ima. Ta linija bi bila: ALL : ALL S time urađenim, možete se koncentrirati na dozvoljavanje pristupa servisima specifičnim računalima, domenama ili opsegu IP adresa. To se može uraditi uređivanjem datoteke /etc/hosts.allow koja poštuje isti format. Mnogi će započeti dozvoljavanjem svih veza od strane localhost-a. To se može postići korištenjem: ALL : 127.0.0.1 Da bi dopustili pristup SSH daemon-u sa opsega 192.168.0.0/24, može se koristiti jedno od slijedećih pravila: sshd : 192.168.0.0/24 sshd : 192.168.0. Također je moguće ograničiti pristup računalima u određenim domenama. To se može uraditi korištenjem slijedećeg pravila (imajte na umu da se ovo oslanja na unos reverznog DNS-a kako bi se osiguralo da je računalo koje se spaja baš to za kojeg se izdaje, stoga je preporučljivo da se ova metoda ne koristi na računalima koja su povezana na Internet): sshd : .slackware.com 14.3 Ostajanje u toku 14.3.1 slackware-security mailing lista Kad god se pojavi neki sigurnosni problem koji utiče i na Slackware, obavijest se pojavi na slackware-security@slackware.com mailing listi. Izvještaji se šalju za ranjivost bilo kojeg dijela Slackware sustava, osim softvera u /extra ili /pasture. Ove sigurnosne objave uključuju detalje o dobavljanju verzija paketa u kojima su propusti ispravljeni ili o alternativnim načinima ispravljanja, ukoliko postoje. Kako se pretplatiti na Slackware mailing listu pokriveno je u odjeljku 2.2.2. 14.3.2 /patches direktorij Kad god su objavljeni osvježeni paketi za neku verziju Slackware-a (uglavnom samo da bi se ispravio sigurnosni propust), smještaju se u /patches direktorij. Puna putanja do ovih zakrpi ovisi o lokaciji (mirror) koju koristite, ali će imati oblik /path/to/slackware-x.x/patches/. Prije instaliranja ovih paketa, dobra je praksa provjeriti md5sum paketa. md5sum(1) je alat naredbene linije koji stvara "jedinstven" matematički hash (broj) datoteke. Ako se samo jedan bit datoteke promjeni, datoteka će imati različitu md5sum vrijednost. % md5sum package---.tgz 6341417aa1c025448b53073a1f1d287d package---.tgz Zatim trebate usporediti ovaj broj naspram broja novog paketa u datoteci CHECKSUMS.md5 u korijenskom (root) direktoriju slackware-$VERSION (također i u /patches direktoriju za zakrpe), ili u e-poruci na slackware-security mailing listi. Ukoliko imate datoteku sa md5sum vrijednostima, možete je iskoristiti za brzu provjeru pomoću -c mogućnosti aplikacije md5sum. # md5sum -c CHECKSUMS.md5 ./ANNOUNCE.10_0: OK ./BOOTING.TXT: OK ./COPYING: OK ./COPYRIGHT.TXT: OK ./CRYPTO_NOTICE.TXT: OK ./ChangeLog.txt: OK ./FAQ.TXT: FAILED Kao što se vidi iz priloženog, svaka datoteka čiji md5sum izračunate ispravno je izlistana sa "OK" dok su datoteke koje su promjenjene označene sa "FAILED".