Linux - Friheden til sikkerhed på internettet: Version 2.9.20060510 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 2. Netværkssikkerhed - Services | næste |
Hvilke services, der kan undværes på dit system, afhænger af hvad det skal bruges til, og det er dig selv der må afgøre det. Men vi vil gennemgå de mest almindelige services, hvad de gør, om de er usikre, og hvad de evt. kan erstattes af.
Telnet (telnetd) er en service der gør, at folk kan logge ind på maskinen ved hjælp af en telnet-klient. For at det er muligt at logge ind, skal man have et brugernavn og tilhørende password, som findes på maskinen. Når man er logget ind, kan man så udføre de tekstkommandoer, man plejer at kunne udføre, når man sidder foran maskinen. Telnet kører normalt på port 23, men kan sættes op til en anden port.
Telnet er en gammel sag, fra dengang i begyndelsen af internettets historie, hvor der kun var venner og ingen fjender på nettet. Det var mest forskere på universiteter, der havde adgang, og de ville ikke hinanden noget ondt. Alle kendte mere eller mindre hinanden, så hvis man lavede ballade var man hurtigt upopulær blandt ligesindede. Den slags moral kan vi ikke regne med mere.
Mange af de "gamle" services er usikre i dag, fordi de slet ikke er designet med sikkerhed i tankerne men alene stabilitet og fornuftig ydelse.
Telnet er først og fremmest usikker, fordi den sender brugernavn og password som klar ukrypteret tekst over nettet. Dvs., at det er lige til at læse for enhver, der måtte sidde og kigge på nettrafikken et sted imellem dig selv og den maskine, du logger ind på. Det er særdeles risikabelt at bruge telnet over internettet, hvor alle i princippet kan sidde og lytte med.
På en maskine, der har adgang til internettet, bør telnet slås fra, og erstattes med ssh, se Afsnit 4.2. En grund til at beholde telnet kan dog være, at der findes telnet-klienter til stort set alle systemer. Hvis man har brug for at logge ind fra et system, hvortil der ikke findes en ssh-klient, kan det være nødvendigt at bruge telnet. Men det er risikabelt at lade en telnet service køre, hvis maskinen er på internettet. Så overvej, om der ikke er andre muligheder for at løse dine behov.
Hvis telnet skal køre, kan man sikre sig bedre med adgangskontrol (/etc/hosts.allow), ved at skifte password hver gang og ved ikke at have det samme password på andre maskiner i lokalnettet, så skaden ved indbrud trods alt begrænses.
FTP (File Transfer Protocol) bruges, når man vil kopiere filer fra en maskine til en anden. FTP er ligesom telnet en af de gamle services, som er meget stabil men slet ikke sikker, idet login navn og password sendes i klar tekst. FTP er imidlertid ofte mindre farlig end telnet, da det meste ftp-trafik foregår som "anonymous ftp".
Når man skal ftp'e til en maskine, skriver man ftp maskinnavn (evt portnavn). F.eks.:
ftp bohr 37067
Ovenstående kommando vil forsøge at åbne en ftp forbindelse til host "bohr" port 37067. Så bliver man spurgt om loginnavn og derefter password. Går det godt, er man inde, og man kan hente filer med kommandoen "get" og lægge dem ud med "put". Man kan desuden vælge, om det skal være binær eller tekstoverførsel, skrive "ls" for at se indhold af katalog eller skifte katalog med "cd" mm.
Har man en rigtig bruger konto på maskinen, og er ftp sat op til det, kan man logge ind med sit normale brugernavn og password. Dette kan være relevant på f.eks. et lokalnet, hvor brugerne har behov for at flytte filer. Faren er her den samme som ved brug af telnet, nemlig at brugernavn og password sendes i klar tekst over nettet. Foregår dette over det usikre internettet, må vi bestemt anbefale at man bruger scp secure copy fra ssh-pakken (se Afsnit 4.2), hvis det er muligt. Alternativet er en speciel krypteret udgave af ftp, men dette kræver, at klienten kan tale samme sprog. Ftp kører normalt på port 20 (data) og 21 (kommandoer).
Det er imidlertid meget almindeligt, at en ftp server er sat op til at i acceptere brugernavnet "anonymous" eller "ftp". En del ftp servere er beregnet til kun at understøtte denne type login. Det kaldes anonymous ftp, og bruges ved "offentlige" ftp servere, hvor enhver kan hente de filer der er lagt frem. Her bruger man sin e-postadresse som adgangskode. Ved anonym ftp kan alle logge ind, og det lyder måske farligt, men det er det kun, hvis man har sat sin ftp server forkert op.
Der sendes ikke brugernavne og passwords over nettet. Der sendes kun brugernavnet "anonymous", samt en e-postadresse, og det gør ingenting for serverens sikkerhed, at det bliver opsnappet.
Ved anonym FTP har folk ikke brug for at kunne ret meget. De har brug for at kunne hente og måske uploade. Og for at kunne gå hen i det katalog de skal uploade i og tilsvarende hente fra, men stort set har de ikke brug for mere. De har ikke brug for at kunne bevæge sig rundt på hele maskinen, og det bør de ikke i have lov til. Dette undgås ved, at man "chroot'er" dem, dvs., at man f.eks. får kataloget /home/ftp til at se ud som roden af filsystemet (dvs. /). Brugeren kan ikke se resten af filsystemet og kun få ordrer kan anvendes. Dermed er serveren ikke nær så udsat, som hvis alle og enhver kunne logge "rigtigt" ind. Det er kun lidt, der skal sættes op, før et chroot'et environment virker (så bla. "ls" og "cd" virker) - nogle filer skal kopieres til /home/ftp/lib, /home/ftp/bin og /home/ftp/etc filer. Dette er gjort for dig i alle de store Linuxdistributioner.
Endelig bør man huske, at /home/ftp ikke bør været ejet af den bruger, folk logger ind som, dvs. anonymous eller ftp. Så kan de ændre environment, lave .rhosts-filer og andet, som kan bringe net-sikkerheden i fare.
Der er et par ting mere, man bør tænke på. For det første bør der ikke være læse og skriverettigheder på det samme katalog. Folk skal uploade et sted og hente fra et andet, og serverens administrator skal så sørge for at uploadede ting evt. bliver tilgængelige til nedhentning. Dette skyldes, at hvis man bare lader sin server stå åben for uploads og nedhentning uden kontrol, vil folk bruge den til piratsoftware, porno etc. Derfor er det smart først at lade det folk uploader være tilgængeligt for andre, efter at man har kigget det igennem.
Der er en sidste ting, man skal være opmærksom på med en ftp server. Folk kan med vilje eller ved et uheld uploade så meget, at harddisken løber fuld. Det kan give systemet problemer, så det skal man undgå. Det kan styres ved at lade uploadkataloget ligge på en partition (eller disk) for sig selv, eller ved i opsætningen af ftp serveren at lave begrænsninger for størrelsen af den uploadede mængde. Hvis folk med vilje fylder ens disk op, for at systemet skal holde op med at fungere, kaldes det et "denial of service attack" ("ude af drift angreb", også kendt som DOS attack) - maskinen nægter brugerene den service, som skulle leveres, fordi den er sat ud af drift af angrebet. Der findes også sikkerhedshuller til andre slags DOS attacks i nogle ftp-servere. Hvis du ikke skal bruge ftp, bør du slå den fra i /etc/xinetd.d.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
bliver til
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
Husk at genindlæse inetds opsætning.
Finger er et program, som viser hvem, der er logget på maskinen lige nu, hvornår de sidst var logget ind og hvor længe:
[robin@sherwood]$ finger robin Login: robin Name: Directory: /home/robin Shell: /bin/bash On since Fri Jul 9 10:18 (CEST) on tty1 1 hour 14 minutes idle (messages off) On since Sat Jul 10 01:13 (CEST) on tty2 1 hour 14 minutes idle (messages off) On since Sat Jul 10 01:14 (CEST) on pts/0 1 hour 15 minutes idle (messages off) On since Sat Jul 10 01:14 (CEST) on pts/2 26 minutes 11 seconds idle (messages off) No mail. No Plan.
Denne kommando kan køres fra andre maskiner mod din maskine, og kan anvendes af folk udefra til f.eks. at finde frem til en brugerkonto, der ikke har været brugt længe. Denne information bør du ikke give videre ud over maskinen selv. Derfor bør du i /etc/xinetd.d/finger rette
disable = yes
Finger er for de fleste fuldstændig unødvendig og en dum sikkerhedsrisiko at lade stå åben. Hvis du kan finde en undskyldning for, at du har brug for finger, så skal den i hvert fald kun være tilgængelig internt. Dvs., at adgang fra andre maskiner skal være spærret f.eks. med tcp-wrappers.
Hvis din maskine ikke skal være mailserver, så indsæt disable=yes i filerne med pop-2, pop-3 og imap i /etc/xinetd.d.
POP står for Post Office Protocol, og man bruger POP til at hente mail fra en mailserver og lægge i sin inbox på ens egen maskine. Bemærk, at selvom man slår POP-serveren fra lokalt, forhindrer det ikke, at man kan hente mail via sin udbyders POP-server. Da POP-daemonen skal skrive i brugernes hjemmekataloger, er den nødt til at køre som root. Dette er et sikkerhedsproblem. Ligesom med telnetd og ftpd er det desuden et stort problem, at POP kører med ukrypteret transmission af brugernavn og password.
Afhængig af hvad man skal bruge POP til, kan man sikre den. Hvis den kun skal bruges internt i ens firma, kan man enten
sørge for, at der ikke kan tjekkes mail udefra ved opsætning TCP-wrappers og/eller firewall.
bruge krypteret overførsel, hvis man kun har mailklienter, man selv bestemmer over.
Man kan kryptere POP, men igen er dette en udvidelse, som kræver at alle klienter understøtter det. Det er ikke altid tilfældet. Der findes også en metode, der hedder APOP, som de fleste POP-programmer understøtter. Med APOP sendes passwordet krypteret. Dette er baseret på MD5-kodning, hvor der også er et time stamp involveret. Mere information kan findes i RFC 1725.
IMAP er en udvidet version af POP. Den kan sætte sig selv til at køre med brugerens privilegier noget af tiden i stedet for root, og man kan meget mere med den end med POP. F.eks. kan man med IMAP være flere brugere om én account, nøjes med at hente headerene fra sine mails og lade resten ligge på serveren, etc.
For at slå POP og IMAP fra i /etc/inetd skal følgende linjer udkommenteres:
pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d imap stream tcp nowait root /usr/sbin/tcpd imapd
bliver til
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd
Anvender du en nyere Linux distribution, kan det være, at du har programmet linuxconf kørende på din maskine på port 98. Du kan i /etc/inetd.conf se, om du har linuxconf kørende ved at lede efter en linje, der indeholder ordet linuxconf. Den kan f.eks. se sådan ud:
linuxconf stream tcp wait root /bin/linuxconf linuxconf --http
Ganske vist kan linuxconf umiddelbart kun tilgås fra den lokale maskine og ikke fra netværket, men programmets egen usikrede webserver bør man ikke stole blindt på. Luk det, hvis du har et usikkert net. Tilsvarende argumenter kan anvendes overfor programmer såsom webmin, som giver et webinterface til systemadministration. Webmin er normalt ikke installeret, men skal hentes som særskilt pakke. For at værktøjet til webadministration kan accepteres på et usikkert net, skal SSL eller bedre kryptering indbygges i server og klient.