Nästa Föregående Innehållsförteckning

8. Nätverkssäkerhet

Nätverkssäkerhet blir allt viktigare eftersom personer tillbringar allt mer tid uppkopplade. Att äventyra nätverkssäkerhet är ofta mycket lättare än att göra det fysiskt eller lokalt, och det är mycket vanligare.

Det finns ett antal bra verktyg som kan hjälpa till med nätverkssäkerhet, och fler och fler av dem följer med i Linuxdistributioner.

8.1 Paketsniffare

Ett av de vanligaste sätten att få access till fler system på ditt nätverk är att plantera en paketsniffare på en redan erövrad dator. Denna "sniffare" ligger bara och lyssnar på ethernet-porten efter saker som "Password", "Login" och "su" på paketströmmen och sedan loggar trafiken efter det. På detta sätt kan inkräktare få lösenord till system som de inte ens försöker bryta sig in i. Lösenord i klartext är väldigt sårbara för denna typ av attacker.

EXEMPEL: dator A har blivit erövrad. En attackerare installerar en sniffare. Sniffaren loggar när administratören loggar in på dator B från dator C. Sniffaren får då administratörens personliga lösenord när han loggar in på B. Sedan gör administratören en "su" för att fixa ett problem. Nu har sniffaren root-lösenordet för dator B. Senare låter administratören någon telnet:a från hans konto till dator Z på en annan sajt. Nu har attackeraren lösenord och användarnamn på dator Z.

Nuförtiden så måste attackeraren inte ens erövra ett system för att göra detta, det räcker att han tar med sig en laptop in i din byggnad och pluggar in sig på ert nätverk.

Att använda ssh eller andra metoder med krypterade lösenord kväver sådana attacker. Saker som APOP för pop-konton förhindrar också sådana attacker. (Normala pop-inloggningar är väldigt sårbara för detta, såväl som allt annat som skickar löenord i klartext över tråden.)

8.2 Systemtjänster och tcp_wrappers

Så snart som du kopplar upp ditt Linuxsystem på NÅGOT nätverk så bör du fundera på vilka tjänster som du behöver tillhandahålla. Tjänster som du inte behöver tillhandahålla bör du stänga av så att du har en sak mindre att oroa dig för och attackerare har ett ställe mindre att leta efter hål på.

Det finns ett antal sätt att stänga av tjänster i Linux. Du kan titta på din fil /etc/inetd.conf och se vilka tjänster som erbjuds av din inetd. Stäng av alla som du inte behöver genom att kommentera bort dem (en # i början av raden), och sedan skickar du en SIGHUP till inetd-processen.

Du kan även ta bort (eller kommentera bort) tjänster i filen /etc/services. Detta innebär dock att lokala klienter inte kommer att hitta tjänsten (dvs om du tar bort ftp och försöker ftp:a till en annan sajt från den datorn så kommer det att misslyckas med ett meddelande om okänd tjänst). Det är vanligtvis inte värt besväret att ta bort tjänster från /etc/services eftersom det inte skapar någon ytterligare säkerhet. Om en person på det lokala systemet vill använda ftp även att du kommenterat bort det, så kan de göra en egen klient som använder den vanliga ftp-porten och det skulle fungera bra.

Vissa av tjänsterna som du antagligen vill ha kvar är:

Om du vet att du inte kommer använda ett visst paket så kan du även ta bort det helt. I RedHat tar "rpm -e" bort ett helt paket. I Debian gör "dpkg" samma sak.

Dessutom bör du stänga av tjänsterna rsh/rlogin/rcp, inklusive login (används av rlogin), shell (används av rcp) och exec (används av rsh), så att de inte startas av inetd. Dessa protokoll är extremt osäkra och har varit orsaken till attacker tidigare.

Du bör kolla din katalog /etc/rc.d/rcN.d/, där N är ditt systems runlevel, och se om någon av servrarna som startas där inte behövs. Filerna i /etc/rc.d/rcN.d/ är egentligen symboliska länkar till katalogen /etc/rc.d/init.d/. Att ändra namn på filerna i katalogen init.d ger samma effekt som att ta bort alla symboliska länkar i /etc/rc.d/rcN.d/. Om du endast vill stänga av en tjänst i en viss runlevel, ändra namn på den filen till att börja med ett litet `s' istället för ett stort `S', som i S45dhcpd.

Om du har rc-filer i BSD-stil, så skall du kolla i /etc/rc* efter program som du inte behöver.

De flesta Linuxdistributioner kommer med "tcp_wrappers" som "buntar ihop" alla dina tcp-tjänster. En tcp_wrapper (tcpd) startas från inetd istället för den riktiga servern. tcpd kollar då upp datorn som frågar efter tjänsten och startar sedan den riktiga tjänsten eller nekar access från den datorn. tcpd låter dig specificera restriktioner för access till dina tcp-tjänster. Du bör göra en fil /etc/hosts.allow och där skriva in de datorer som behöver ha access till tjänsterna på din maskin.

Om du är en hemanvändare med uppringd anslutning så föreslår vi att du nekar alla (ALL). tcpd loggar alla misslyckade försök att komma åt dina tjänster, så detta kan ge dig tips om att du är under attack. Om du lägger till nya TCP-baserade tjänster så bör du konfigurera även dem med tcp_wrappers. Till exempel, en vanlig användare med uppringd anslutning kan förhindra att andra ansluter till systemet, och fortfarande kunna hämta e-post och göra nätverksanslutningar till Internet. För att göra detta kan du lägga till följande till din /etc/hosts.allow:

ALL: 127.

Och såklart så skall /etc/hosts.deny innehålla:

ALL: ALL

detta förhindrar anslutningar till din maskin utifrån medans du fortfarande kan göra anslutingar till Internet inifrån.

8.3 Verifiera din DNS-information

Att hålla din DNS-information om alla datorer på ditt nätverk uppdaterad kan öka säkerheten. Ifall en otillåten dator ansluts till ditt nätverk så kan du upptäcka den genom att den inte har någon DNS-post. Många tjänster kan konfigureras för att inte acceptera anslutningar från datorer utan giltliga DNS-poster.

8.4 identd

identd är ett litet program som vanligtvis körs från din inetd. Det håller reda på vilka användare som kör vilka tcp-tjänster, och rapporterar det till den som önskar det.

Många personer misuppfattar hur användbart identd är och stänger därför av det eller blockerar alla förfrågningar till det från andra sajter. identd finns inte för att hjälpa andra sajter. Det finns inget sätt att veta om den data du får från en annan sajts identd är korrekt eller inte. Det är ingen autentisering i identd-förfrågningar.

Varför behöver du köra det då? Eftersom det hjälper _dig_, och det är ytterligare ett sätt att hålla koll på systemet. Om din identd inte är attackerad så vet du att den talar om användarnamn för personer som använder tcp-tjänster för andra sajter. Om administratören på en annan sajt talar om för dig att den och den användaren på ditt system försökte hacka sig in på deras sajt, så kan du lätt agera mot den användaren. Om du inte kör identd, så måste du titta i många loggar och lista ut vem som var påloggad vid den tidpunkten, och det tar generellt mycket längre tid att leta fram användaren.

Den identd som följer med de flesta distributioner går att konfigurera mer än många tror. Du kan stänga av identd för vissa användare (de kan skapa .noident filer), du kan logga alla förfrågningar till identd (jag rekommenderar detta), du kan låta identd returnera ett uid istället för ett användarnamn eller till och med NO-USER.

8.5 SATAN, ISS och andra Nätverksscannare

Det finns ett antal olika mjukvarupaket som scannar maskiner eller nätverk baserat på portar eller tjänster. SATAN och ISS är två av de mer kända. Denna mjukvara ansluter till målmaskinen (eller alla målmaskiner på ett nätverk), på alla portar den kan, och försöker avgöra vilken tjänst som kör på den porten. Baserat på denna information så kan du få reda på om maskinen är sårbar för en viss attack på den servern.

SATAN (Security Administrators Tool for Analyzing Networks) är en portscanner med ett webbgränssnitt. Det kan konfigureras för att göra lätt, medium eller starka kontroller på en maskin eller ett nätverk av maskiner. Det är en bra ide att hämta SATAN och scanna din maskin eller ditt nätverk och fixa till problemen som den hittar. Se till att hämta SATAN från sunsite eller en annan välkänd FTP eller webbsajt. Det fanns en trojansk kopia av SATAN som distribuerades över nätverket. http://www.trouble.org/~zen/satan/satan.html

ISS (Internet Security Scanner) är en annan portbaserad scanner. Den är snabbare än SATAN, och kan därför vara bättre för stora nätverk. Men SATAN brukar ge mer information.

Abacus-Sentry är en komersiell portscanner från www.psionic.com. Titta på deras hemsida för mer information. http://www.psionic.com

Upptäcka portscanning.

Det finns några verktyg som är gjorda för att varna dig om att scanning pågår med SATAN, ISS eller annan liknande mjukvara. Men med liberal användning av tcp_wrappers och om du ser till att se över dina loggfiler ofta så skall du kunna upptäcka detta själv. Även med minimala inställningar så lämnar SATAN spår i loggarna på ett normalt RedHat-system.

8.6 Sendmail, qmail och MTAs

En av de viktigaste tjänsterna du kan ha är en e-postserver. Tyvärr så är en sådan även en av de mest sårbara mot attacker, på grund av antalet uppgifter som den måste utföra och de privilegier som den normalt behöver.

Om du använder sendmail så är det väldigt viktigt att du håller det uppdaterat. Sendmail har en lång historia av säkerhetsläckor. Var alltid noga med att köra den senaste versionen. http://www.sendmail.org

Om du är trött på att uppgradera din version av sendmail varje vecka så kan du fundera på att byta till qmail. qmail designades med säkerhet i åtanke från början. Det är snabbt, stabilt och säkert. http://www.qmail.org

8.7 Nekande-av-tjänst attacker

En nekande-av-tjänst attack är när en attackerare försöker göra en resurs för upptagen för att svara på riktiga förfrågningar, eller neka tillåtna användare tillgång till din maskin.

Sådana attacker har ökat mycket de senaste åren. Några av de mest populära listas nedan. Notera att ny dyker upp hela tiden, så detta är bara några exempel. Läs säkerhetlistornaför Linux, bugtraq-listan och arkiv för mer uppdaterad information.

Du kan hitta koden för de flesta attacker, och djupare information om hur de fungerar på http://www.rootshell.com genom att använda deras sökmotor.

8.8 NFS-säkerhet (Network File System)

NFS är ett protokoll för att dela filer som används mycket. Det låter servrar som kör nfsd och mountd exportera hela filsystem till andra maskiner som har stöd för nfs i kärnan (eller någon annan form av klientstöd om det inte är Linuxmaskiner). Mountd håller reda på monterade filsystem i /etc/mtab, och kan lista dem med "showmount".

Många sajter använder NFS för att hålla hemkataloger för användare, så att oavsett vilken maskin i nätverket som de loggar in på så har de alltid tillgång till sina egna filer.

Det finns ett litet mått av säkerhet när man exporterar filsystem. Du kan låta nfsd mappa den andra root-användaren (uid=0) till användaren nobody, vilket nekar dem total access till filerna som exporteras. Men eftersom individuella användare har tillgång till sina egna (eller åtminstonde med samma uid) filer, så kan superusern på den andra maskinen logga in som eller su:a till en annan användare och ha total access till deras filer. Detta är endast ett litet hinder för en inkräktare som har möjlighet att montera dina filsystem.

Om du måste använda NFS, se till att du endast exporterar till de maskiner som du måste exportera till. Exportera aldrig hela din rootkatalog, exportera endast de kataloger som du måste exportera.

För mer information om NFS se: NFS HOWTO

8.9 NIS (Network Information Service) (tidigare YP).

NIS är ett sätt att distribuera information till en grupp av maskiner. NIS-mastern har informationstabeller och konverterar dem till NIS tabellfiler. Dessa tabellfiler skickas sedan över nätverket och låter NIS-klienter att erhålla användarnamn, lösenord, hemkatalog och shellinformation (all information i en standard /etc/passwd). Detta låter användare ändra sitt lösenord en gång och det får effekt på alla maskiner i NIS-domänen.

NIS är inte alls säkert. Det var aldrig meningen att det skulle vara det. Det var meningen att det skulle vara användbart och smidigt. Vem som helst som kan gissa namnet på din NIS-domän (varsomhelst på nätet) kan få en kopia av din passwd-fil, och använda crack och john the ripper för att försöka ta reda på användarnas lösenord. Det är också möjligt att knäcka NIS och göra alla möjliga elaka trix. Om du måste använda NIS, försäkra dig att du vet om alla faror.

Det finns en mycket säkrare ersättare till NIS som heter NIS+. Kolla in NIS HOWTO för mer information: http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html

8.10 Brandväggar

Brandväggar är ett sätt att begränsa vilken information som tillåts komma in i eller komma ut ifrån ditt lokala nätverk. Vanligtvis så är brandväggsdatorn ansluten till Internet och till ditt lokala nätverk och det enda sättet att komma i kontakt med ditt lokala nätverk är genom brandväggen. På detta sätt kan brandväggen kontrollera vad som skickas fram och tillbaka mellan Internet och ditt lokala nätverk.

Det finns ett antal olika metoder att sätta upp brandväggar. Linuxmaskiner är hyfsat bra lågkostnadsalternativ. Kod för brandväggar kan kompileras in direkt i kärnan från version 2.0 och uppåt. Med användarverktyget ipfwadm kan du, medans systemet är igång, ändra vilken typ av nätverkstrafik som du vill tillåta. Du kan även logga viss typ av information.

Brandväggar är en väldigt användbar och viktig teknik för att säkra ditt nätverk. Det är viktigt att inse att bara för att du har en brandvägg så betyder det inte att du inte måste säkra maskinenrna bakom brandväggen. Detta är ett grovt misstag. Titta i den utomordentliga Firewall HOWTOn på sunsite för mer information om brandväggar och Linux. http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html

Mer information hittar du även i IP-Masquerade mini-howto: http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html

Mer information om ipfwadm (verktyget som låter dig ändra inställningarna för din brandvägg) hittar du på dess hemsida: http://www.xos.nl/linux/ipfwadm/


Nästa Föregående Innehållsförteckning