NSA mandag 4. oktober 2010 Brukerbehandling Systempolitikk Kontroll av resurser Om system logger Litt om cron og cfengine
Brukerbehandling har mange komponenter: De rent tekniske sidene ved å legge til og fjerne brukere på et gitt system. Valg av login miljø for brukere, og om brukerne skal ha dedikerte maskiner eller om disse kan brukes av alle. En politikk på hvordan brukerne får lov å benytte systemets resurser. Hvordan vi skal håndtere misbruk. Bruker støtte. Overvåking av brukere.
Tekniske sider ved å legge til nye brukere på et UNIX system: En ny bruker må ha: Et unikt brukernavn, unikt UID (et tall), et passord, en default GID (et tall). En bruker må ha et hjemmeområde. En bruker må ha et login shell. For å opprette brukeren er det derfor en rekke ting vi må gjøre på systemet. Vi skal se litt mer detaljert på dette.
Databasen over brukere holdes i /etc/passwd Utdrag fra /etc/passwd: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:daemon:/sbin:/bin/bash lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash mail:x:8:12:mailer daemon:/var/spool/clientmqueue:/bin/false... sysadm:x:205:100:kurs Systemadministrasjon:/local/sysadm:/bin/bash torejo:x:274:100:tore M. Jonassen:/home/torejo:/bin/bash vdr:x:275:33:video Disk Recorder:/var/spool/video:/bin/false nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash susann:x:500:100:susann Møller:/home/susann:/bin/bash generic:x:502:100:guest User:/home/generic:/bin/bash ruben:x:503:100:ruben Ghulghazaryan:/home/ruben:/bin/bash Rettighetene til /etc/passwd er: rw r r root root Formatet er: brukernavn:kryptertpassord:uid:gid:comment:hjemmekatalog:loginshell
Filen /etc/passwd er lesbar av alle. Det er derfor ikke vanlig å ha det krypterte passordet i denne filen. Vi har en database over (blant annet) det krypterte passordet i filen /etc/shadow. Utdrag fra /etc/shadow (*): wnn:*:8902:0:10000:::: wwwrun:*:8902:0:10000:::: yard:*:8902:0:10000:::: zope:*:8902:0:10000:::: blt:1isjyigfi0/v8:12313:0:99999:7:-1:: generic:vzmqbcuu0gkw6:12124:0:99999:7::: ruben:u0zyeqquxe2pw:12246:0:99999:7::: susann:ok7qwn9758oni:12044:0:99999:7:0:: (*) Jeg har forandret de krypterte passordene. Rettighetene til /etc/shadow er: rw r root shadow Formatet er: brukernavn:kryptertpassord:felt vi ikke skal bry oss om foreløpig
Merk: Det er ikke nødvendig å lagre passordet i klartekst på maskinen. Dette skal heller aldri gjøres. Det er kun det krypterte passordet som er lagret, og dette skal kun være lesbart av root og medlemmene av gruppen shadow. shadow gruppen består som regel kun av root og muligvis gdm ol. Mekanismen for passord er som følger: kryptert_passord = crypt(passord,salt) eg. kryptert_passord = crypt(passord,kryptert_passord) Hvis vi kjenner de krypterte passordene kan vi altså by brute force finne passordet til alle brukere.
Eksempel: #!/usr/bin/perl $password = $ARGV[0]; $salt = $ARGV[1]; $cryptpassword = crypt($password,$salt); print "$cryptpassword\n"; exit(0); torejo@bluemaster:~/und/sys-2004/perl>./passex.pl PPTPvpn msstuff msj8gwkx1oadq #!/usr/bin/perl $password = $ARGV[0]; open(fp,"cpasswd"); read(fp,$cryptpasswd,13); close(fp); $result = crypt($password,$cryptpasswd); if ($result eq $cryptpasswd) { print "Password is correct\n"; } else { print "Password is NOT correct\n"; } exit(0); torejo@bluemaster:~/und/sys-2004/perl>./correctpw.pl PPTPvpn Password is correct torejo@bluemaster:~/und/sys-2004/perl>./correctpw.pl PPTPvpN Password is NOT correct
Kunnskap om brukernavn og passord gir vanligvis adgang til et system. Det er derfor viktig at vi har gode passord. Et godt passord består av både store og små bokstaver, tall og andre tegn. Et dårlig passord finnes i en ordliste, eller er en variasjon over et ord i en ordliste. Databasen med krypterte passord skal ikke være tilgjenglig for andre enn root. Vi kan ikke regne med at brukere er disiplinerte nok til å velge gode passord. En bruker skal derfor ikke få mulighet til å bytte til et for enkelt passord. Vi bør kjøre programmer som prøver å knekke passord, og sperre konti med dårlige passord.
Om UID: UID skal være et unikt tall, altså det skal ikke være andre på systemet som har dette tallet. 0 er reservert for root. UID mellom 0 og 499 (999) er vanligvis reservert for spesielle brukere. UID = 65534 er vanligvis nobody. UID behøver ikke å komme fortløpende i stigende rekkefølge, men må være unike. Noen systemer bruker brukernavn for å gjenkjenne brukere. Eksempel: ssh Noen systemer bruker UID for å gjenkjenne brukere. Eksempel: nfs
Om GID. Default GID oppgis i /etc/passwd Vi har her flere valg: Vi kan lage en ny gruppe for hver bruker. Vi kan samle brukere i naturlige grupper. Vi kan lage subgrupper i /etc/group Eksempel: cat /etc/group grep torejo uucp:x:14:uucp,fax,root,fnet,torejo,sysadm,generic,ruben,blt dialout:x:16:root,torejo,sysadm,generic,ruben,blt audio:x:17:root,torejo,sysadm,generic,ruben,blt video:x:33:torejo,sysadm,generic,ruben,blt og cat /etc/group grep users users:x:100:
Rettighetene til /etc/group er: rw r r root shadow Formatet på /etc/group er: gruppe_navn:passord:gid:komma separert liste av medlemmer Eksempel: Bytte gruppe eierskap på filen minfil, fra eier torejo gruppe users til eier torejo gruppe wwwdata: chown torejo:wwwdata minfil
Du finner mer informasjon om /etc/passwd, /etc/shadow og /etc/group i manualen: man 5 passwd man 5 shadow man 5 group En bruker kan skifte passord med kommandoen passwd Se manualen for denne: man passwd
Eksempel: Hvorfor kan en bruker skifte passord på et system? Bruker har ikke skrive eller leserettigheter til /etc/shadow. Vi bruker kommandoen passwd: torejo@bluemaster:~> ls l /usr/bin/passwd rwsr xr x 3 root shadow 73680 2003 03 17 16:39 /usr/bin/passwd Kommandoen passwd har SUID bitet satt, og er kjørbar for alle, men eiet av root. Den som kjører programmet vil overta rettighetene til root gjennom dette programmet. En prosess har to bruker identiteter, real user og effective user. Merk: Slike programmer kan være en sikkerhetsrisiko.
Eksempel: To måter å sette SUID bitet: torejo@bluemaster:~/und/sys-2004/perl> ls -l total 12 -rwxr-xr-x 1 torejo users 272 2004-01-28 03:47 correctpw.pl -rw-r--r-- 1 torejo users 14 2004-01-28 03:46 cpasswd -rwxr-xr-x 1 torejo users 187 2004-01-28 03:43 passex.pl torejo@bluemaster:~/und/sys-2004/perl> chmod u+s correctpw.pl torejo@bluemaster:~/und/sys-2004/perl> chmod 4755 passex.pl torejo@bluemaster:~/und/sys-2004/perl> ls -l total 12 -rwsr-xr-x 1 torejo users 272 2004-01-28 03:47 correctpw.pl -rw-r--r-- 1 torejo users 14 2004-01-28 03:46 cpasswd -rwsr-xr-x 1 torejo users 187 2004-01-28 03:43 passex.pl Vær oppmerksom på programmer med SUID bit. De gir andre større rettigheter enn de egenlig har.
En bruker må ha et hjemmeområde. Dette skal være eiet av brukeren selv. Eksempel: torejo@bluemaster:/home> ls -l total 28 drwxr-xr-x 17 blt users 4096 2003-11-29 12:21 blt drwxr-xr-x 14 generic users 4096 2003-03-13 11:32 generic drwxr-xr-x 18 ruben users 4096 2003-07-21 00:16 ruben drwx------ 41 susann users 4096 2004-01-25 12:31 susann drwx------ 162 torejo users 8192 2004-01-28 09:42 torejo I hjemme katalogen skal det være en rekke konfigurasjonsfiler for shell etc. Det er vanlig å samle default konfigurasjons filer på et bestemt sted, hos meg, /etc/skel/ Disse kopieres over til en ny bruker når denne opprettes.
Eksempel: torejo@bluemaster:/home> ls -a /etc/skel..xresources.emacs.kermrc.xcoralrc.xserverrc.secure public_html...bash_history.exrc.muttrc.xemacs.xsession.xdefaults.bashrc.fonts.profile.xim.xtalkrc.xmodmap.dvipsrc.gnu-emacs.urlview.xinitrc Documents Administrator kan sette opp de nødvendige filene for hvordan en ny bruker skal oppleve systemet. En bruker kan forandre disse selv etterpå, slik at brukeren får et miljø han selv vil ha. Husk å forandre eierforhold på filer som kopieres inn hos en ny bruker.
Login shell. Det finnes mange valg for default shell. Dette er smak og behag. Noen eksempler er: ash, bash, sh, csh, ksh, tcsh og zsh Funksjonaliteten vil være varierende hos disse shellene. Merk at noen kan være sammenfallende. Hos meg er noen linker til andre shell: torejo@bluemaster:/home> ls -l /bin/sh lrwxrwxrwx 1 root root 4 2001-09-26 00:40 /bin/sh -> bash torejo@bluemaster:/home> ls -l /bin/csh lrwxrwxrwx 1 root root 4 2001-09-26 00:44 /bin/csh -> tcsh
Bytte av login shell. En bruker kan bytte login shell med kommandoen chsh: torejo@bluemaster:/home> ls -l /usr/bin/chsh -rwsr-xr-x 3 root shadow 73680 2003-03-17 16:39 /usr/bin/chsh Filen /etc/shell innholder en liste med gyldige shell. Denne kan vi få også med: torejo@bluemaster:/home> chsh -l /bin/ash /bin/bash /bin/bash1 /bin/csh /bin/false /bin/ksh /bin/sh /bin/tcsh /bin/true /bin/zsh /usr/bin/csh /usr/bin/ksh /usr/bin/passwd /usr/bin/bash /usr/bin/rbash /usr/bin/tcsh /usr/bin/zsh
Et par prinsipper/forslag for brukerkonti og passord: Distribuerte konti: Brukere forflytter seg fra vert til vert, deler data og samarbeider. De trenger enkel tilgang til data og arbeidsstasjoner i hele organisasjonen. Passord: Gi brukere samme brukernavn på alle verter, dette skal ikke være på mer enn åtte tegn. Gi alle brukere samme passord på alle verter, med mindre det finnes en god grunn til ikke å gjøre dette. Noen brukere bytter ikke passord med mindre de blir tvunget til det, og noen logger aldri på. Det er derfor viktig å tilordne gode passord i utgangspunktet.
Login miljø: Det skal alltid være klart hvilken maskin en bruker er logget på, og hviket operativsystem verten kjører. Default miljø (prompts og preprogrammerte taster) skal være enkle både i fremtreden og funksjonalitet. Enkelt milø er lettere å forstå. Shell: Unngå sentrale konfigurasjonsfiler for shell i /etc. Disse filene erstattes av nye ved oppgradering av OS. Ikke link konfigurasjonsfiler på tvers av filsystemer. Dette kan skape problemer.
Eksempel: Vi kan sette opp meldinger i /etc/motd. Denne vil alle brukere få ved login. motd = message of the day torejo@bluemaster:/home> cat /etc/motd ----------------------- Administrator on bluemaster.iu.hio.no ----------------------- e-mail: torejo@hio.no ----------------------- Running SuSE Linux Current kernel 2.6.1 -----------------------
Eksempel: Alias i en lokal konfigurasjonsfil: ## My aliases (torejo@hio.no) ## alias mathematica='mathematica -nostderrwindow 2>/dev/null' alias øs='ls' alias ks='ls' alias sl='ls' alias xdvi='xdvi -bg white' alias lgrind='lgrind -d /etc/lgrind/lgrindef' alias xosview='xosview +disk' Konfigurasjonsfilene for bash er.profile og.bashrc Globalt leses /etc/profile. Se man bash