Faq: Brandvägg
Postat: 06 feb 2008, 16:01
Har ubuntu en brandvägg från början?
Kort svar: Ja, det heter iptables och är ett terminalkommando. Det finns grafiska hjälpmedel för att ställa in den där firestarter verkar vara den mest populära. Firestarter fungerar så att man ställer in brandväggen i den, och sedan kan man stänga ner programmet firestarter och behöver inte starta det vid inloggning, de regler du ställt in i firestarter startas med iptables när datorn startas.
Långt svar: Ja, den ligger i linuxkernel (dvs kärnan i ubuntu) och heter netfilter, netfilter har ett terminalkommando för att lägga till regler i netfilter som heter iptables. Eftersom iptables kan vara krångligt att ställa in så finns flertalet hjälpmedel för att göra det, t.ex. ufw (som följer med ubuntu), shorewall och fwbuilder (som oxå är ett "terminalprogram") men dessutom grafiska som firestarter (rekommenderas, som passar bra in grafiskt i ubuntu och xubuntu), fireflier (som jag har haft problem med och jag rekommenderar folk från att hålla sig borta från) och för kubuntu finns guidedog och guarddog (rekommenderas). Det går alldeles utmärkt att använda firestarter i kubuntu och guarddog i ubuntu eller xubuntu, de ser bara snyggast ut med firestarter i ubuntu och guarddog i kubuntu.
Behöver jag aktivera brandväggen i ubuntu?
Kort svar: Nej, egentligen inte. Man kan vara van vid att en brandvägg alltid behövs från andra operativsystem, men det beror på vad deras användningsområden varit från början. T.ex. windows var egentligen byggt för att användas i lokala nätverk och de har tjänster som netbios, cifs och smb vilket är jättebra om datorn är på ett lokalt nätverk och man lätt vill använda varandras resurser. När direkta internetuppkopplingar mot internet blev vanliga för hemdatorer så behövde dessa tjänster skyddas från illasinnade på internet. Ubuntu är redo att kopplas direkt mot internet och har inga sådana tjänster efter en installation och behöver inte skyddas från internet på det viset.
Långt svar: Nej, egentligen inte. Ubuntu har haft som policy att inte ha några "öppna portar" efter en installation (vilket iofs inte stämde med fiesty fawn, där de provade att ha en tjänst som hette avahi igång från början på desktop-versionen av ubuntu, vilket inte föll så väl ut så man återgick till sin gamla policy "inga öppna portar"). Det finns alltså ingen anledning att stoppa trafik in (tvångsstänga portar med en brandvägg) då inga portar var öppna. Vidare antas det att de personer som har tillgång till datorn är pålitliga och de program du använder är tillförlitliga och då är det oftast ett större problem med att stoppa trafik ut, eftersom det kan uppstå problem som är svåra att diagnosticiera när plötsligt ett program inte kan ansluta utåt då du stoppat den trafiken.
Vad är en port?
Det är lite svårt att förklara utan att förklara lite hur internet fungerar. På internet har varje varje dator ett ipnummer (det kan liknas vid ett telefonnummer, eller nedan, husnummer), när olika datorer kommunicerar skicker de paket mellan sig. För att datorn ska kunna sortera vilka processer som ska ha paketen så får varje process ett eller flera portnummer (varje dator har 65 536 stycken portar, det är 2^16). Man valde ordet port eftersom det betyder hamn, men i den här liknelsen kommer vi använda det mer svenskliknande port=dörr.
Så, tänk dig att varje dator är ett hus med en massa dörrar. Varje dator har oxå ett ip-nummer (husnummer). På din dator startar du firefox och ber att få se sidan google.se, först så får firefox en temporär dörr att skicka informationen ifrån (ett helt slumpat dörrnummer, men i den högre skalan typ 59135) och skickar sedan några paket till googles ipnummer och till port 80 (för hemsidor ska typiskt ligga på port 80, så firefox antar bara att det är dit den ska skicka förfrågan). Paketen går över internet och datorerna där skickar hela tiden vidare paketen tills de hamnar hos google och googles dator ser att paketet ska till port 80 och ger paketen till det program som använder port 80 (hemsidan), programmet svarar med att skicka ett antal paket tillbaka till din dator, men skickar svaret till din dators dörrnummer 59135 (det stod i de paket som din dator skickade). Svarspaketen skickas tillbaka över internet och när de kommit fram ser din dator att de skulle till port 59135 och ger den till firefox, som packar upp paketen och visar hemsidan på din skärm.
Vad är en öppen/stängd port?
Det klassiska svaret (och i egentlig mening "korrekta") är att en öppen port är en port där en tjänst aktivt lyssnar, medan en stängd port är en port där ingen tjänst lyssnar. I och med mjukvarubrandväggarnas intåg så blev flera användare vana vid att en öppen port är en som brandväggen inte stoppar, och en port som brandväggen stoppar är då "stängd". Därigenom kan man idag säga att en port är öppen om inte en brandvägg stoppar och det finns en tjänst på porten, och en port är stängd om ingen tjänst lyssnar (oavsett brandvägg) och dessutom stängd om brandväggen stoppar (trots att en tjänst lyssnar).
Dvs, får man svar, är porten öppen, får man inte något svar är porten stängd.
Man kan även tala om "gömda portar"/"stealth", vilket är när en dator inte ens skickar ett svar "tyvärr, porten är stängd" utan låtsas att datorn inte existerar. De flesta "experter" är någorlunda överens om att detta är en falsk trygghet, då den som utför attacken antingen redan vet att datorn existerar (datorn är uppe på internet och skickar information över andra portar) eller svarar på en annan port.
Hur fungerar öppen/stängd/"gömd" port i det tidigare exemplet?
Tja, du skulle kunna likna en brandvägg med en vakt som övervakar alla dörrar. Om din vakt har fått regler som i ubuntus grundutförande så har han blivit tillsagd att han ska tillåta alla försändelser, dvs kommer ett paket till en dörr så stoppar inte vakten det, är dörren stängd så får den som skickat paketen ett meddelande om att porten är stängd, är dörren öppen så är det bara för paketen att komma in genom dörren. Om du ger dörrvakten (brandväggen) bestämmelser om vad som ska gå igenom så tar denne först och kontrollerar paketen, har du godkänt paket till den dörren så släpper den igenom paketen, är dörren stängd så får avsändaren reda på att dörren är stängd. Om du sagt till vakten att den ska påstå att dörren är stängd så får avsändaren reda på att dörren är stängd (oavsett om dörren verkligen är stängd eller inte) och "gömd" så bestämmer portvakten (brandväggen) att inget meddelande om dörren ska skickas tillbaka, vilket får avsändaren att tro att huset inte existerar (att ipnumret inte har någon dator, dvs att din dator inte finns).
Vad menar du med "Nej, egentligen inte", behöver jag aktivera brandväggen eller inte?
Nej, det behöver du inte.
Det finns rent klassiskt bara en anledning till att ens ha en brandvägg, det är om du har två nät som du ska koppla ihop och du tror att de är olika säkra, t.ex. internet och ditt företagsnätverk, eller två olika delar inom ditt företagsnät. Iom den stora vågen av mjukvarubrandväggar så skaffar man en brandvägg för att du inte litar på mjukvaran på ditt system. Så det vanliga svaret som man får i typiska ubuntu-sammanhang är "Installerar du en server så är det bra att konfiguera en brandvägg", men inte ens det är ett bra svar.
Låt oss säga att du installerar en typisk serverapplikation i linux, en ssh-server (en jättebra högsäkerhetstjänst som låter en styra datorn, dela filer, tunnla trafik och mycket mer), den lyssnar bara på en port så det finns ingen anledning till att konfiguera brandväggen att stoppa trafik på andra portar. Det är likadant med andra tjänster, som t.ex. apache eller vsftpd. Du kan däremot känna att det finns ett behov av att bara låta somliga datorer ansluta till denna tjänst, men det är "säkrare" och "lättare" att konfigurera detta direkt i den applikationen än att låta brandväggen sortera detta. Ett typexempel för detta är de olika databasapplikationerna som mysql, ställ alltid in mysql att endast lyssna på de datorer som ska kunna ansluta till databasen (typisk endast samma dator, dvs "localhost").
Kort sagt: Den enda gången du behöver en mjukvarubrandvägg är när du inte litar på mjukvaran du använder eller din förmåga att ställa in denna. Det är oftast lättare att ställa in programvaran än att att förstå hur mjukvaran fungerar och konfiguera brandväggen efter detta. Du ska kunna lita på programvaran som ubuntu själva tillhandahåller. För yttersta säkerhet, använd bara de programvarukällor som ubuntu tillhandahåller och se till att hålla den programvaran uppdaterad med ubuntus uppdateringshanterare.
Fortsättning följer
Kort svar: Ja, det heter iptables och är ett terminalkommando. Det finns grafiska hjälpmedel för att ställa in den där firestarter verkar vara den mest populära. Firestarter fungerar så att man ställer in brandväggen i den, och sedan kan man stänga ner programmet firestarter och behöver inte starta det vid inloggning, de regler du ställt in i firestarter startas med iptables när datorn startas.
Långt svar: Ja, den ligger i linuxkernel (dvs kärnan i ubuntu) och heter netfilter, netfilter har ett terminalkommando för att lägga till regler i netfilter som heter iptables. Eftersom iptables kan vara krångligt att ställa in så finns flertalet hjälpmedel för att göra det, t.ex. ufw (som följer med ubuntu), shorewall och fwbuilder (som oxå är ett "terminalprogram") men dessutom grafiska som firestarter (rekommenderas, som passar bra in grafiskt i ubuntu och xubuntu), fireflier (som jag har haft problem med och jag rekommenderar folk från att hålla sig borta från) och för kubuntu finns guidedog och guarddog (rekommenderas). Det går alldeles utmärkt att använda firestarter i kubuntu och guarddog i ubuntu eller xubuntu, de ser bara snyggast ut med firestarter i ubuntu och guarddog i kubuntu.
Behöver jag aktivera brandväggen i ubuntu?
Kort svar: Nej, egentligen inte. Man kan vara van vid att en brandvägg alltid behövs från andra operativsystem, men det beror på vad deras användningsområden varit från början. T.ex. windows var egentligen byggt för att användas i lokala nätverk och de har tjänster som netbios, cifs och smb vilket är jättebra om datorn är på ett lokalt nätverk och man lätt vill använda varandras resurser. När direkta internetuppkopplingar mot internet blev vanliga för hemdatorer så behövde dessa tjänster skyddas från illasinnade på internet. Ubuntu är redo att kopplas direkt mot internet och har inga sådana tjänster efter en installation och behöver inte skyddas från internet på det viset.
Långt svar: Nej, egentligen inte. Ubuntu har haft som policy att inte ha några "öppna portar" efter en installation (vilket iofs inte stämde med fiesty fawn, där de provade att ha en tjänst som hette avahi igång från början på desktop-versionen av ubuntu, vilket inte föll så väl ut så man återgick till sin gamla policy "inga öppna portar"). Det finns alltså ingen anledning att stoppa trafik in (tvångsstänga portar med en brandvägg) då inga portar var öppna. Vidare antas det att de personer som har tillgång till datorn är pålitliga och de program du använder är tillförlitliga och då är det oftast ett större problem med att stoppa trafik ut, eftersom det kan uppstå problem som är svåra att diagnosticiera när plötsligt ett program inte kan ansluta utåt då du stoppat den trafiken.
Vad är en port?
Det är lite svårt att förklara utan att förklara lite hur internet fungerar. På internet har varje varje dator ett ipnummer (det kan liknas vid ett telefonnummer, eller nedan, husnummer), när olika datorer kommunicerar skicker de paket mellan sig. För att datorn ska kunna sortera vilka processer som ska ha paketen så får varje process ett eller flera portnummer (varje dator har 65 536 stycken portar, det är 2^16). Man valde ordet port eftersom det betyder hamn, men i den här liknelsen kommer vi använda det mer svenskliknande port=dörr.
Så, tänk dig att varje dator är ett hus med en massa dörrar. Varje dator har oxå ett ip-nummer (husnummer). På din dator startar du firefox och ber att få se sidan google.se, först så får firefox en temporär dörr att skicka informationen ifrån (ett helt slumpat dörrnummer, men i den högre skalan typ 59135) och skickar sedan några paket till googles ipnummer och till port 80 (för hemsidor ska typiskt ligga på port 80, så firefox antar bara att det är dit den ska skicka förfrågan). Paketen går över internet och datorerna där skickar hela tiden vidare paketen tills de hamnar hos google och googles dator ser att paketet ska till port 80 och ger paketen till det program som använder port 80 (hemsidan), programmet svarar med att skicka ett antal paket tillbaka till din dator, men skickar svaret till din dators dörrnummer 59135 (det stod i de paket som din dator skickade). Svarspaketen skickas tillbaka över internet och när de kommit fram ser din dator att de skulle till port 59135 och ger den till firefox, som packar upp paketen och visar hemsidan på din skärm.
Vad är en öppen/stängd port?
Det klassiska svaret (och i egentlig mening "korrekta") är att en öppen port är en port där en tjänst aktivt lyssnar, medan en stängd port är en port där ingen tjänst lyssnar. I och med mjukvarubrandväggarnas intåg så blev flera användare vana vid att en öppen port är en som brandväggen inte stoppar, och en port som brandväggen stoppar är då "stängd". Därigenom kan man idag säga att en port är öppen om inte en brandvägg stoppar och det finns en tjänst på porten, och en port är stängd om ingen tjänst lyssnar (oavsett brandvägg) och dessutom stängd om brandväggen stoppar (trots att en tjänst lyssnar).
Dvs, får man svar, är porten öppen, får man inte något svar är porten stängd.
Man kan även tala om "gömda portar"/"stealth", vilket är när en dator inte ens skickar ett svar "tyvärr, porten är stängd" utan låtsas att datorn inte existerar. De flesta "experter" är någorlunda överens om att detta är en falsk trygghet, då den som utför attacken antingen redan vet att datorn existerar (datorn är uppe på internet och skickar information över andra portar) eller svarar på en annan port.
Hur fungerar öppen/stängd/"gömd" port i det tidigare exemplet?
Tja, du skulle kunna likna en brandvägg med en vakt som övervakar alla dörrar. Om din vakt har fått regler som i ubuntus grundutförande så har han blivit tillsagd att han ska tillåta alla försändelser, dvs kommer ett paket till en dörr så stoppar inte vakten det, är dörren stängd så får den som skickat paketen ett meddelande om att porten är stängd, är dörren öppen så är det bara för paketen att komma in genom dörren. Om du ger dörrvakten (brandväggen) bestämmelser om vad som ska gå igenom så tar denne först och kontrollerar paketen, har du godkänt paket till den dörren så släpper den igenom paketen, är dörren stängd så får avsändaren reda på att dörren är stängd. Om du sagt till vakten att den ska påstå att dörren är stängd så får avsändaren reda på att dörren är stängd (oavsett om dörren verkligen är stängd eller inte) och "gömd" så bestämmer portvakten (brandväggen) att inget meddelande om dörren ska skickas tillbaka, vilket får avsändaren att tro att huset inte existerar (att ipnumret inte har någon dator, dvs att din dator inte finns).
Vad menar du med "Nej, egentligen inte", behöver jag aktivera brandväggen eller inte?
Nej, det behöver du inte.
Det finns rent klassiskt bara en anledning till att ens ha en brandvägg, det är om du har två nät som du ska koppla ihop och du tror att de är olika säkra, t.ex. internet och ditt företagsnätverk, eller två olika delar inom ditt företagsnät. Iom den stora vågen av mjukvarubrandväggar så skaffar man en brandvägg för att du inte litar på mjukvaran på ditt system. Så det vanliga svaret som man får i typiska ubuntu-sammanhang är "Installerar du en server så är det bra att konfiguera en brandvägg", men inte ens det är ett bra svar.
Låt oss säga att du installerar en typisk serverapplikation i linux, en ssh-server (en jättebra högsäkerhetstjänst som låter en styra datorn, dela filer, tunnla trafik och mycket mer), den lyssnar bara på en port så det finns ingen anledning till att konfiguera brandväggen att stoppa trafik på andra portar. Det är likadant med andra tjänster, som t.ex. apache eller vsftpd. Du kan däremot känna att det finns ett behov av att bara låta somliga datorer ansluta till denna tjänst, men det är "säkrare" och "lättare" att konfigurera detta direkt i den applikationen än att låta brandväggen sortera detta. Ett typexempel för detta är de olika databasapplikationerna som mysql, ställ alltid in mysql att endast lyssna på de datorer som ska kunna ansluta till databasen (typisk endast samma dator, dvs "localhost").
Kort sagt: Den enda gången du behöver en mjukvarubrandvägg är när du inte litar på mjukvaran du använder eller din förmåga att ställa in denna. Det är oftast lättare att ställa in programvaran än att att förstå hur mjukvaran fungerar och konfiguera brandväggen efter detta. Du ska kunna lita på programvaran som ubuntu själva tillhandahåller. För yttersta säkerhet, använd bara de programvarukällor som ubuntu tillhandahåller och se till att hålla den programvaran uppdaterad med ubuntus uppdateringshanterare.
Fortsättning följer