securityJag började skriva om hur man installerar webmin på en Raspberry Pi och började skriva en massa om nätsäkerhet så jag beslöt att bryta ut den delen till en separat artikel. Jag är ingen säkerhetsexpert men jag kan ändå dela med mig av mina erfarenheter om grundläggande datasäkerhet. Jag har i mitt arbete stött på alla olika typer av intrång, jag tänker inte dra en lång historia om hur man gör sitt system supersäkert utan ett antal saker som man bör tänka på när man har datorer exponerade mot resten av världen.

Lite historia

Tidigare så satt de flesta datorer som hade ett IP-nummer direkt på nätet utan några åtkomstbegränsningar så risken för ett intrång skulle vara ganska stort om de skulle se ut så idag. Ofta har företag med högre säkerhetskrav sina datorer indelade i olika zoner. Oftast en intern zone och något som man brukar kalla DMZ (DeMilitarized Zone), i den zonen lägger man alla datorer som ska åtkomst utifrån och sedan har man två brandväggar en ut mot internet och en mot det interna nätet för att skydda det om någon av maskinerna i DMZ skulle bli hackad.

Idag exponeras oftast bara enskilda portar på maskiner som ska vara åtkommliga utifrån. De flesta hemanvändare har en router kopplat på bredbandsuttaget och sedan är alla datorer anslutna till den. Om man inte ändrat på något ska man inte ha åtkomst utifrån utan routers uppgift är att släppa igenom svar på paket som datorer på insidan skickat iväg.

 

Hemmaroutern

De flesta hemanvändare har en router kopplat på bredbandsuttaget och sedan är alla datorer anslutna till den. Hemmarouterns uppgift är att göra det möjligt att använda flera datorer samtidigt med endast ett officiellt IP-nummer.  Det finns ett antal nummerserier som är definierade som lokala, dvs de får inte användas för externa kommunikation, de är

  • 10.0.0.0 – 10.255.255.255
  • 172.16.0.0. -172.31.255.255
  • 192.168.0.0 – 192.168.255.255

Routern håller reda på vilken dator som skickade vilket paket och när svar kommer, ser till att rätt dator får svaret. Sättet att byta ut avsändare (lokalt IP) till en annan (externa IP) kallas NAT  (Network Address Translation)

På så sätt skyddar routern alla datorer på insidan från att någon utifrån ska hacka sig in, vad den inte skyddar mot är om man hämtar skadliga filer/program från internet. Vad skaparen av programmet vill, är att kunna köra sitt program innanför din router, eftersom när det är innanför får programmet öppna upp en koppling mot en externa dator och sedan kan den exerna anslutningen göra olika saker inne på ditt nätverk. För att skydda sig mot sådant behöver man en brandvägg

Normat har router också till uppgift att dela ut lokala IP-adresser till datorer som ansluts (DHCP) , routern kombineras ofta med WIFI funktion så att man kan koppla upp enheter trådlöst.

Hur gör man då för att låta andra surfa t.ex på en webserver som man har hemma, man använder sig av en funktion som oftast kallas “Port Forwarding” i routern. Vad den gör är att definiera en port på det externa IP som ska skickas vidare till en maskin på insidan. I exemplet med webservern (om vi säger att den ha ip 192.168.1.20) att man definierar port 80 -> port 80 på IP-nummer 192.168.1.20

Det finns en funktion på många routrar som heter uPNP (Universal Plug and Play) där applikationer kan själv öppna i brandväggen kopplingar mellan sig själv och en port på det externa IPt. Detta är en ganska bra sak, man behöver inte själv öppna upp i routern och veta vilken port som det gäller. MEN detta öppna också upp för illasinnande applikationer att själv öppna upp en väg rakt igenom din router till programmet, så detta är en avvägning mellan bekvämlighet och säkerhet.

 

Brandväggen

Brandväggar finns inbyggda i alla moderna operativsystem och även i vissa hemmaroutrar. Brandväggens uppgift är att titta på alla paket som kommer in och ut till datorn/routern och bestämma om den ska tillåta det att passera. Man bör veta vad man gör då man går in och ändrar på dessa regler då man antingen kan öppna upp mer än man tänkte eller spärra för mycket. Troligtvis kommer jag att skriva en separat artikel om just iptables så jag kommer inte at gå in djupare på detta.

 

Root konto på datorn

Det finns en orsak att många Linux distributioner sätter upp ett annat konto än root som administrativt konto. Om du har t.ex port 22 (ssh) öppet mot internet på någon dator  kommer du troligtvis se 1000-tals inloggningsförsök främst med användare root. Detta är därför att root kontot finns på alla Linux/Unix system. På raspbian är root kontot spärrat för inloggning som en säkerhetsdetalj, för att knäcka en användares lösenord måste man först känna till kontonamnet. På Ubuntu eller andra debian då man får ange namnet på det administrativa kontot under installationen, på Raspian heter alltid kontot pi så det gör den lite mindre säker.

 

Lösenord

Det viktiga är inte att byta lösenord 1 gång i veckan eller ha ett lösenord på 40 tecken, de viktiga är att inte ha löseord som går att gissa eller använda samma lösenord överallt. Lösenord baserade på vanliga ord knäcks ganska lätt, kan var namn på barn eller födelseår. Ett bra löseord bör innehålla minst tre av följande kategorier

  • små bokstäver
  • stora boksäver
  • siffror
  • andra specialteck (t.ex !,% ?)

och vara minst 8 tecken. Man bör undvika att ha samma lösenord på t.ex eposten som inloggningar på tjänster på nätet som innehåller information om din epostadress. Tjänster som man kan beställa i ditt namn eller betala (paypal, itune, ebay m.m) ska alla ha olika lösenord. Det finns en massa olika program på nätet som man kan ha t.ex på mobilen för att hålla reda på alla olika lösenord, själv använder jag jag Keeper, gratis men kostar $9.99/år för backup av informationen.

 

Raspbian

Jag har bara 2 saker som är sämre på Raspbian mot andra Linux distributioner och båda är gjorda för att förenkla för nybörjare. Detta är något man bara bör fundera på om man exponerar sin Raspberry Pi mot internet. Det första är att man använder ett känt användarnamn pi, men har man bara ett bra lösenord så är detta en mindre säkerhetsrisk. Den andra tycker jag är ett större problem, för att förekla har man tagit bort kravet på lösenord när man använder sudo. Oftast när man öppnar upp sudo utan lösenord kopplar man man oftast det till enskilda kommandon och inte generellt som är fallet i Raspbian. Från början körde man alla tjänster på en Unix maskin som användare root då detta var enklast, man hade åtkomst till allt. När man sedan blev hackad hade programmet tillgång till allt i system, t.ex lägga till nya användare m.m. Man började köra tjänster som egna användare med begränsad åtkomst, t.ex kör webserver apache som användare www-data och inte som root. Om man vill höja säkerheten så skulle jag ändra i /etc/sudoes så att man blir tvunget att känna till lösenordet för pi för att utföra kommandot. Man behöver inte skriva lösenordet varje gång man skriver sudo, utan systemet kommer ihåg lösenordet i 15 minuter sedan sista sudo. Om du vill höja säkerheten så gör du såhär, kör

och ändra raden (troligtvis den sista raden i filen)

så att det istället står

Första gång du skriver sudo nästa gång kommer du att få upp följande

Kör man däremot sudo igen inom 15 minuter får man inte frågan igen