Skåne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg
 

Introduktion til sikkerhed

Artikel 1 - Sikkerhed på Linux

Hanne Munkholm <hanne@geekgirl.dk> og Peter Toft <pto@sslug.dk>


Take One!
Forfatterne har copyright på artiklen, men udgiver den under OpenContent License.
Alle kan trykke artiklen så længe OPL licensen overholdes, men vi vil gerne vide, hvor den bringes.

Licensen, der skal overholdes, kan findes på http://www.opencontent.org/opl.shtml.

Denne artikel er den første i en serie på 6 artikler om sikkerhed på Linux, som kan findes på http://www.sslug.dk/artikler/Linux_sikkerhed


Hvorfor er netværk usikkert?

Din maskine har ofte en del netværksservices åbne på forskellige "porte", når du har adgang til Internet. En port er ikke en fysisk port, men en logisk indgang til din maskine via netværksenheden (modem eller netværkskort). Disse "åbne porte" benyttes til at udføre netværkskommunikation, hvis maskinen tilbyder netværksservices som f.eks. ftp. Men de kan også misbruges, så uautoriserede personer kan komme ind på din computer via nettet. Dette kan ske, hvis der er fejl i netværksprogrammer (services, firewall og styresystem), eller hvis du lader dem stå helt åbne uden nogen form for adgangskontrol. bDet kan også ske selvom du har adgangkontrol, hvis folk har mulighed for at opsnappe dit brugernavn og password via nettet. Ofte kan man direkte samle brugernavne og passwords op på nettet ved at bruge et "sniffer" program, som lytter til trafikken på et givent sted.

Dette er bare en forsmag på de emner, vi vil komme nærmere ind på i de kommende artikler.

Er Linux et usikkert system?

Nogen har anklaget Linux for at være et meget usikkert system, idet alle kan læse kildeteksten. Når man kan læse kildeteksten til f.eks. netværksprogrammer og se, hvordan de fungerer, er det nemt finde eventuelle fejl. Disse kan bruges til at lave angreb på Linux-maskiner. Dette er delvis sandt! Men alligevel ikke. Vi ser på hvorfor.

For at knække sikkerheden på et UNIX-system, skal man enten kende eller lede efter fejl i systemet herunder systemopsætning og netværksprogrammer.
For en kommerciel leverandør er en fejl ofte et prestigetab, og derfor er det måske ikke alle fejl, som bliver offentligt kendt. Hvis ingen kendte de fejl, der er i de lukkede systemer, ville alt være godt. Men ofte bliver fejl i lukkede nsystemer opdaget og kendt. Det kan skyldes at nogen udefra opdager fejlen ved et tilfælde, eller måske leder de bevidst efter fejl - eller at nogen indefra lækker information eller taler over sig. Så ender fejlen måske på en hjemmeside eller som en artikel i en avis. Så har du problemet: Hvis den, der vil bryde ind, kender fejlen, og du som systemadministrator ikke kender og tager højde for den, kan han komme ind på dit system.

Det er nok nærmest umuligt at gardere sig imod at en sikkerhedsbrist bliver offentligt kendt.

Ud over kendte sikkerhedshuller kan den, der vil bryde ind, selv lede efter fejl. I et lukket system er det langt sværere at lede efter fejl end i et åbent system som Linux, fordi man ikke har kildeteksten. Men en måde at finde sikkerhedsfejl på, er at prøve kendte sikkerhedshuller af på nye maskinopsætninger - men med ændringer svarende til nye ideer. Nogle gange sker det så, at der er bid. Et system er ikke sikret imod indbrud, bare fordi kildeteksten er lukket.

Erfaring viser, at nogle af de helt store firmaer er meget ringe til at oplyse om sikkerhedsfejl - de skal helst negligeres eller skjules. Sikkerhedsbristerne bliver ofte hurtigt annonceret på Internettet, mens firmaerne tit bruger lang tid på at lukke sikkerhedshullet ordentligt. I al den tid fra annoncering til rettelse er maskinerne åbne for mulige sikkerhedsangreb.

I Open Source-verdenen vender alle disse dogmer på hovedet. For det første findes al relevant kode på Internettet til offentlig beskuelse. Så nok er der mennesker, som kan læse og bryde sikkerheden for andre, men Open Source-verdenen er indrettet, så der er en meget stor prestige i at finde og specielt lappe sikkerhedshuller. Derfor vil folk, der finder fejl, oftest fortælle offentligt om de fundne fejl fremfor at gemme informationen. Det kan selvfølgelig også være, at man i stedet vælger at udnytte informationen til at bryde ind på andres systemer. Så kan det være, at det er et af de første "ofre", som rapporterer fejlen. Man vil så fokusere på hvilken service, der gav sikkerhedshullet, som man så lukker (eller giver speciel opmærksomhed gennem overvågning, hvis man ikke kan lukke servicen f.eks. webserveren for en Internet-butik). I Open Source-verdenen indleder man så en klapjagt for at få fjernet problemet og udgive nye versioner af de berørte programmer. Det bliver en slags "trofæ" at komme først med den korrekte rettelse. Normalt er man nede på dage og ofte timer, fra en sikkerhedsfejl er rapporteret, til den er fundet og rettet, hvilket er markant mindre end på nogen af de andre lukkede systemer.

Alt dette lyder meget rosenrødt, men hvis din Linux-maskine har en kendt sikkerhedsbrist, og maskinen er på et usikkert netværk såsom Internettet, så er der er en pris at betale. Du skal opdatere din maskine, når der er fundet sikkerhedsbrister, og den tilsvarende sikkerhedsrettelse er offentliggjort. Ellers har du reelt set nul sikkerhed! Alle kan jo se hvad, der er galt i din kode - det har jo været diskuteret på Internet, så man har kunnet lave rettelsen. På http://www.rootshell.com ligger der oftest anvisninger af både problemets omfang, karakter, udnyttelse og reparation.

Det typiske forløb for en systemadministrator i forbindelse med opdagelsen af et sikkerhedsbrist vil være:

Hvilke angreb kan jeg blive udsat for

Der er flere forskellige typer angreb, der kan ramme din maskine. Der er forskellige metoder, en angriber kan benytte sig af, og som man kan gøre noget for at beskytte sig imod. Der er også forskel på, hvilken type adgang en angriber får til dit system, og hvor alvorlige konsekvenser et vellykket angreb har for dig.

Lad os først se på, hvordan en angriber kan bære sig ad med at få adgang til dit system.

Vi har nu set på forskellige metoder, en angriber kan bruge til at få adgang til dit system. Men hvad kan han bruge det til? Lad os dele angrebene op efter resultatet - hvad opnår vedkommende, og hvor farligt er det for dig.

Fra den mere muntre ende kan vi lige vise lidt om DoS angreb fra User Friendly strippen den 7/8 99.
User Friendly 7/8-1999

Har mit system sikkerhedsproblemer?

Nu skal vi se på, hvor meget du udsætter din maskine for, når du tilslutter den til Internettet. Vi tager udgangspunkt i en Linux-maskine, som har en netværksopkobling enten via modem eller fast forbindelse. Det er reelt ikke så vigtigt, at det er en Linux-maskine - alle systemer med netværk har samme karakteristiske træk.

Lad os inddele verden efter

On and off

Du har ikke så meget at frygte, selvom du måske ikke har styr på din sikkerhed på maskinen.

Når du laver en modem-opkobling til Internettet, får du tildelt en IP-adresse, dvs. en adresse, som alle kan tilgå din maskine på. Men den adresse er forskellig fra gang til gang når du laver opkobling. Derfor bliver det i praksis umuligt at afsøge din maskines sikkerhedshuller fra en anden maskine, før du igen har lukket forbindelsen. Der er dog oplagt, at den risiko, du løber, svarer nøje til den tid du er koblet på Internettet.

Seriøs surfing

Du er tilkoblet Internet i længere tid ad gangen men stadig med forskellig IP-adresse hver gang, så du er ikke helt nem at finde. Men i modsætning til "On and off" brugeren er du på så lang tid, at der godt kan laves skanning på din maskine. Hvis der findes en usikker service, kan den måske give oplysninger om svagheder i dit system, og dermed kan din netværkssikkerhed rammes. Du bør tænke på hvilke åbninger, der er i dit system. Du bør lære noget om grundlæggende netværkssikkerhed. Læs f.eks. resten af artiklerne i denne serie.

Fast opkobling

Du kan skannes fra en enhver maskine på Internettet medmindre der er firewalls eller såkaldte proxy-servere imellem. Du kan ikke overvåge alt 24 timer i døgnet. Maskinen efterlades. Du må checke dine log filer! Slå overflødige netværksservices fra og begræns adgangen til dem, der er tilbage. Du bør lære noget om sikkerhed. Læs f.eks. som en start de kommende artikler i denne serie. På Internettet er der masser af yderligere information, og der findes gode bøger om emnet.

Crackere gider ikke at ramme min maskine

Lad os antage, at din maskine har direkte adgang til Internettet uden firewall eller anden beskyttelse. Vi vil nu se på, hvorfor din maskine kan være udsat, og hvordan andre finder ud af, at du har en maskine på nettet. At det netop er din maskine, som er udset til et angreb, kan skyldes mange ting: Tilfældigheder, at du anses for at ligge inde med interessante data, eller at du ikke har vedligeholdt din Linux-maskine og fået lukket de kendte sikkerhedshuller.

En angriber har flere måder at finde din maskine på. En er f.eks. at studere headerne i dine email. En anden er at hente listen over hostnavnene i dit domæne vha. DNS (navneservere). En mere direkte måde er at bruge ping.

En angriber kan derefter spørge din maskine, hvilke services den tilbyder, og måske finde et sikkerhedshul. Som eksempel kan vi tage ssh, som tilbydes på port 22. Med telnet kan man logge ind på port 22 og få versionsnummeret på ssh. I det følgende eksempel finder vi ud af, at det er ssh version 1.2.27, der kører. Kan angriberen f.eks. på Internettet finde en beskrivelse af en sikkerhedsfejl i den version af ssh, kan han udnytte dette til at angribe dit system med.

[robin@sherwood robin]$ telnet locksley 22
Trying 172.17.0.3...
Connected to locksley
Escape character is '^]'.
SSH-1.5-1.2.27                          

Normalt er det nødvendigt, at din maskine har nogle af de mange netværksservices kørende, da de bruges til at kommunikere med andre maskiner via netværk. Ofte kan de fleste af dem dog slås fra, se Artikel 2: Netværkssikkerhed - Services.

I stedet for at en angriber manuelt skal gennemse alle dine porte for mulige huller, kan han gøre det nemmere og meget hurtigere ved at installere programmer såsom nmap. Nmap kan hentes på http://www.insecure.org/nmap. Med nmap kan man dels se hvilke maskiner, der er i live, men også hvilke porte, der er åbne. Nedenstående eksempel viser, at maskinen "locksley" har (alt for) mange porte åbne.

[robin@sherwood robin]$ nmap locksley
Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on locksley.herne.dk (172.17.0.3):
Port    State       Protocol  Service
21      open        tcp        ftp
22      open        tcp        ssh
23      open        tcp        telnet
25      open        tcp        smtp
79      open        tcp        finger         
80      open        tcp        http
98      open        tcp        linuxconf
111     open        tcp        sunrpc
113     open        tcp        auth
513     open        tcp        login
514     open        tcp        shell
515     open        tcp        printer
6000    open        tcp        X11             

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds       

Eksemplet med nmap svarer til, hvad man udefra kan se om maskinen. Har man adgang til maskinen, så kan "netstat -a" også være interessant, idet kommandoen viser alle de netværksforbindelser, som er etableret, samt de ventende serverprogrammer. Et forkortet output af "netstat -a" kan være følgende, hvor man kan se, at en telnet-session fra sherwood til locksley er igang, og serverprogrammerne ssh, sendmail (smtp), telnet og ftp er klar.

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address             Foreign Address             State      
tcp        0      0 locksley.herne.dk:telnet  sherwood.herne.dk:1074      ESTABLISHED
tcp        0      0 *:ssh                     *:*                         LISTEN      
tcp        0      0 *:smtp                    *:*                         LISTEN      
tcp        0      0 *:telnet                  *:*                         LISTEN      
tcp        0      0 *:ftp                     *:*                         LISTEN      

Hvis man bruger netstat -ape får man yderligere information om user id og procesnavn. Outputtet bliver nogle temmelig lange linier. Se i øvrigt "man netstat".

Man kan også have interesse i at bruge det grafiske program cheops, som findes på ftp://ftp.marko.net/pub/cheops/RPMS/. Programmet er skrevet sådan, at det grafisk viser hvilke maskiner, som er i live, og evt. overvåger, at de forbliver i live. Cheops er nok primært beregnet til at give systemadministratoren et hurtigt overblik over netværket, men det kan også bruges til at udse sig svage maskiner, som kan angribes. På følgende billede er vist, hvordan cheops ud fra et domænenavn selv finder ud af, at der er seks maskiner i live. Det vises grafisk hvilket operativsystem, der anvendes på hver af dem. Fra venstre mod højre: SGI IRIX, Linux, HP/UX, HP/UX, Windows og endelig en speciel maskine.

cheops.gif

Flytter man musen ned på ikonet for maskinen, får man flere oplysninger om den ofte også versionsnumre, og man kan yderligere direkte skanne maskinen for alle oplysninger. Man kan ofte se alt for meget - især når folk ikke har deres sikkerhed i orden.

cheops2.gif

Det er altså nemt at trække informationer ud af en ubeskyttet maskine.

Hvordan sikrer jeg min maskine?

Hold din maskine ajour med sikkerhedsrettelser. Du kan følge med på diverse postlister/nyhedsgrupper om sikkerhed, og websider - se under referencer. Ofte kan man hurtigt efter en fejl er opdaget, hente rettelsen fra Internettet.

Mange peger på Linux, som et system der er meget tidskrævende at holde opdateret, fordi der kommer så mange opdateringer til Linux og de services, man ofte kører. Men mange af disse opdateringer er netop rettelser, som lukker sikkerhedshuller. Samme sikkerhedshuller findes ofte også til andre systemer, men de bliver ikke lukket ligeså hurtigt, hvis de overhovedet bliver det. Den ekstra tid du skal bruge på sikkerhedsopdatering er altså blot en sikring af dit system, som ikke er muligt i samme omfang for mange andre systemer. Desuden er det også lettere at finde sikkerhedsopdateringer til Linux og andre Open Source-systemer, da disse ganske bramfrit annonceres på Internettet.

Når du henter en sikkerhedsopdatering, så tænk lige på om den kommer fra et sted, du stoler på - den kunne i princippet være falsk. Det er den sikkert ikke, men nøjes alligevel med at hente fra "officielle" steder. Den første lektie, du skal lære, hvis du vil have et sikkert computersystem, er at være en lille smule paranoid. :-) Der er intet på nettet, der er helt sikkert.


Referencer:


Revisionshistorie

 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2004-03-07, klokken 21:25 .
 

Denne side vedligeholdes af Peter Toft (<pto@sslug.dk>)