Arkiv för '3-ERR kategorin

Är virtualiserade system mer eller mindre säkra?

18 maj, 2010

Jag har haft ovanstående fråga som ställdes tillräckligt många gånger att jag kände det värt ett blogginlägg. Medan ett par år tillbaka svaret kan ha varit "mindre säker", idag svaret är "båda". Jag vet, låter som Chris är icke-förpliktande, men det svaret verkligen så exakt beskriver det aktuella läget av tekniken.

Virtualiseringstjänster för Förändringar Everything

Jag har hört några folk anmärkning om att virtualisering är på väg att påverka branschen på samma sätt som Internet gjorde på 90-talet. För att vara ärlig, tror jag att det finns fördelar med detta yttrande. I början av 90-talet de flesta folk sprang IPX, AppleTalk, NetBUI och en mängd andra protokoll om slutna nät. Vid slutet av 90-talet, var de flesta föräldrar att köra IP uteslutande med anslutning till hela världen. Det sätt vi gjorde affärer, samt hur vi tillämpat säkerhet helt förändrats över att 10 år. Både nätverksadministration och färdigheter säkerhet som i frontlinjen på 1990 var alla utom värdelös 1999.

Virtualisering börjar ramp upp för att få samma effekt på branschen. Virtualisering distribution kräver en fullständig omprövning av hur man ansöker säkerhet. Tillbaka i 1990-talet, fick admins som helt enkelt är anslutna till Internet, utan hänsyn till hur detta skulle påverka deras nätverk, brände big time. Vi kö för att se en liknande resultat som folk antar virtualisering.

Vad gör Virtualisering mindre säkra

Akilleshäl virtualisering är i själva programvaran. Vi hoppas att vi kan lita på programvaran för att hålla gäst-system från varandra, liksom värden och / eller hypervisor. Det finns två stora problem med denna förväntan:

  1. Ingen programvara är buggfri
  2. Programvara kan vara felkonfigurerad

För några år tillbaka huvudsakliga forskningskapacitet visade att de kunde bryta sig ut ur en gäst och få full kontroll av värden OS . Medan en hypervisor är tänkt att begränsa denna typ av exponering, har vi verkligen sett fall där även hypervisorn har förbigås . Vi har även sett fall var programvara blir utnyttjas först när det körs i en virtualiserad miljö . Dessa länkar visar en liten tvärsnitt av virtualisering problem som har upptäckts under de senaste åren. Google kan ge dig en mer komplett lista om du är intresserad.

Så en försiktig Security Professional kommer att vara försiktig med blint lita programvara vara säker. Problemet är leverantörer inte alltid samma tillvägagångssätt. Ta VMware med sin ESX (snart ESXi) produkt som ett exempel. Många av oss var mållös när en VMware representant meddelas vid CanSecWest att det var teoretiskt omöjligt att attackera ESX hypervisor . När vi bara anta något är okrossbar, någon mer kreativ gå till lista ut ett sätt att slå igenom .

En av mina största bekymmer med ESX / ESXi är att VMware har utformat att det är modulära (via VMSafe ). På plussidan, innebär detta att externa leverantörer kan skapa produkter för att bidra till att förbättra hypervisor funktionalitet och säkerhet. Medaljens baksida detta ökar dramatiskt risken för dålig kod införs som kan äventyra säkerheten.

Vi har sett ett bra exempel på detta i det förflutna. Marcus Ranum skapade Gauntlet brandvägg, som då var en av de mest säkra och sparkar enheter rumpa säkerhet tillgängliga. När tre bokstavs-myndigheter ville ha den bästa säkerheten, vände de sig till Gauntlet. Marcus säljs Gauntlet till Network Associates (senare blev McAfee) som genast igång med att lägga in funktioner. Det dröjde inte länge innan en jämn rad sårbarheter var att bli upptäckt, var till följd av dessa nya "Funktioner". Därifrån förlorade produkten dess säkerhet cred och gled bort från radarn.

Nu är det säkert möjligt att lägga till funktioner och hålla saker säkert. De FreeBSD folk är ett utmärkt exempel på hur man gör detta på rätt sätt. För att garantera trygghet de upprätthåller en mycket strikt granskningsprocessen . Är det perfekt? Absolut inte, men deras revision har satt ribban för säker mjukvara genomförande. Med lite tur VMware kommer att göra liknande, men jag har inte hört någon buzz om detta är fallet.

Få huvudet rakt

OK, så vi kan inte blint lita på virtualisering programvara för att hålla angripare borta. Vi kan dock fortfarande vidta försiktighetsåtgärder för att minimera påverkan om det värsta inträffar. En av de största du kan göra är att noga överväga vilka servrar blir värd, och vilka andra gäst-system tillåts att köra på samma låda. Säkerhetszonen begrepp som används av nätverket arkitekter är lika tillämpligt här.

En säkerhetszon är helt enkelt en samling av system som delar samma relativa risknivå. Till exempel webb, och SMTP-servrar är vanligtvis alla ligger på en DMZ, eftersom de alla har liknande risk för direkt angrepp. På den inre delen av nätverket är stationära placeras vanligtvis i en annan säkerhetszon än servrar. Detta beror på att servrar har liten eller ingen tillgång till Internet medan skrivbord brukar tillåts att kommunicera direkt. Detta placerar skrivborden löper högre risk för angrepp än servrar.

Vi kan tillämpa samma logik när de genomför virtualisering. Ett DMZ server och en intern server bör inte vara gäster på samma hårdvara (både CPU och disk array). Om du gör det kan ge en angripare att skapa en alternativ rutt i vårt nätverk. Hellre än att behöva gå via någon brandvägg, NIDS och nationella vägledande programmen, etc. enheter som har utplacerade på tråden, kan en angripare kan få tillgång till interna resurser via virtualization mjukvaran. Är det lätt attack? Inte från vad vi har sett hittills. Funktionella bedrifter har upptäckts dock så varför införa onödiga risker om vi inte måste.

Förresten, borde samma säkerhetszoner regler skall tillämpas för virtualiserade nätverk redskap. Till exempel är det en dålig idé att använda samma fysiska omkopplaren VLAN DMZ och det interna nätverket. Jag har sett ett par kunder får fixat det sättet.

Vad gör Virtualisering säkrare

Lyckligtvis ur ett säkerhetsperspektiv, är virtualisering inte bara dåliga nyheter. I själva verket finns det några mycket häftiga säkerhetsrutiner du kan använda i en virtualiserad miljö som du bara inte kan vara utan det. Detta var en av anledningarna till att vi började använda virtualisering i Honeynet så tidigt som 2000.

En av de största säkerhetsproblemen vi står inför idag är kärnan nivå rootkits . Vad som gör denna stam av malware så lömskt är det faktiskt blir själva operativsystemet till malware. Detta gör upptäckt extremt svårt, eftersom alla säkerhetskontroller måste passera genom kärnan. Om själva kärnan äventyras, kan vi inte lita på kärnan för att noggrant rapportera säkerhetsinformation. Vi sluta med att stänga av systemet, montera enheten på en känd för att vara rena OS, och utför våra kriminaltekniska kontroller därifrån. Åh naturligtvis problemet med denna process är att den inte skala bra. Om vi ​​har tiotals eller hundratals servrar, det finns helt enkelt inte finns tillräckligt med tid på en dag för att kontrollera dem alla ordentligt.

Som tidigare nämnts är VMware tillåter nu tredje part leverantörer tillgång till hypervisorn API via VMSafe. Detta möjliggör tillgång till privilegierad statlig information, såsom minne och nätverkstrafik, på varje gäst operativsystem. Genom att ansluta till hypervisor, några extremt coola säkerhetsalternativ bli möjlig.

Till exempel låt oss säga en gäst OS blir attackerad av en kärna nivå rootkit. Genom att analysera gästerna minnet kan rootkit kan detekteras från utsidan av det virtuella operativsystemet. När du utför kontrollerna via hypervisorn, det finns mycket mindre av en chans att ett rootkit kan stealth sin verksamhet och gå oupptäckta. Som tidigare nämnts finns det ingen jämförbar alternativ med en icke-virtualiserad system.

API kontakten skapar också nya möjligheter för att hantera krypterad trafik. Då avslutar med end-kryptering används (som en VPN), nätverksbaserade kontroller av applikationslagret är lätt kringgås. Din enda verkliga alternativet var att köra agenten på slutpunkten, kan så säkerheten genomföras efter dekrypteringsprocessen. Naturligtvis problemet här är att om agenten blir attackerad, alla satsningar är avstängd. Återigen, genom att ansluta till hypervisorn vi befinner oss i en bättre position att mer säkert granska dessa data.

Vi är bara börjar se nya produkter som utsträcker den VMSafe API kontakten . Eftersom alla produkter är relativt nya, är juryn fortfarande ute på hur effektiva de kan vara. Erbjudanden kör gambit från att ersätta värd brandvägg och IDS skydd fullständiga policy efterlevs. Det ska bli intressant att se hur denna produkt nisch skakar ut över nästa år.

Summary

Så som jag nämnde i början av detta inlägg har virtualisering förmågan att göra din omgivning antingen mer eller mindre säker, beroende på hur du distribuerar det. Om du bara börja köra allt på en enda ruta, kommer ni förmodligen att få fixat. Om du utökar den bästa praxis som har utvecklats under årens lopp i virtualisering riket, och att utnyttja några av de nya säkerhetsfunktionerna som släpps, kan du skapa faktiskt en bättre total säkerhet hållning.

Kombinera logwatch och OSSEC - Del 4

18 feb 2010

I mitt senaste inlägg installerade vi logwatch samt OSSEC. Det är nu dags att få logwatch och OSSEC spela tillsammans i samma sandlåda. I det här inlägget ska jag diskutera hur man får logwatch sammanfatta den information som genereras av OSSEC.

Distributionsalternativ

Vi har två vägar vi kan följa för att ställa in det:

  1. Har logwatch tolka OSSEC loggar direkt.
  2. Har OSSEC skicka sina meddelanden till en Syslog typ server, kör logwatch på Syslog servern.

Nyttan för alternativ # 1 är att vi bara behöver ett system. Logwatch kommer att köras på systemet värd för OSSEC servern. Problemet vi kommer att stöta på men innebär OSSEC varning filen. Loggposterna inte får normaliseras. Detta innebär att formatet kan ändras från uppgift till uppgift, och kan även spridas över flera rader. Det kommer att bli en riktig mardröm att skapa en logwatch skript som filtrera och sammanfatta varningsinformation.

Om vi ​​går med alternativ # 2 kommer vi att kräva en annan låda att fungera som vår centraliserad loggning server. I syfte att ha den OSSEC-servern acceptera loggposterna från icke-agent system, har den för att lyssna på UDP/514. Detta är samma port som används av en centraliserad loggning server, och du kan inte ha två ansökningar dela på samma port (utom med Windows, men uttag tillgång är mycket rörigt). På plussidan kommer larm posterna blir normaliseras när de överförs till syslog servern så skapar en logwatch sammanställning skript kommer att bli mycket lättare. Vidare vet logwatch redan till de vanliga Syslog filerna, så vi kommer att ha mindre anpassning att göra.

Slutligen nämnde jag i ett tidigare inlägg som OSSEC inte är avsedd att vara ett SIM-kort. Detta beror på att det inte spela in allt, bara de händelser som genererar en varning. Så vi förmodligen kommer att ha en central server i alla fall, och det är vettigt att ha det lagra information som genereras av OSSEC.

Så om det låter som jag styra dig mot alternativ # 2, du är helt korrekt. Med det sagt, jag ska faktiskt till att omfatta alternativ # 1 eftersom det är en betydligt mer komplicerad installation.

Hantering av datum / tid Frimärken

Ta en titt på de viktigaste OSSEC loggfilen och du bör se ut ungefär så här:

[Root @ Fubar loggar] # tail -3 / var / ossec / logs / ossec.log

2010/02/18 00:32:05 ossec-rootcheck: INFO: Ending rootcheck scan.

2010/02/18 14:27:06 ossec-syscheckd: INFO: Start syscheck scan.

2010/02/18 14:39:21 ossec-syscheckd: INFO: Ending syscheck scan.

Notera hur datum / tid stämpel formateras. Detta är annorlunda än de flesta applikationer, så det första vi behöver göra är att berätta logwatch hur man skall hantera detta format. Vi kommer att behöva skapa ett skript som vi kan kalla när det behövs som förstår formatet som visas ovan.

Börja med att flytta in den delade skript katalogen:

cd / usr / share / logwatch / scripts / delad

Använd din favorit editor, skapa en fil med namnet "applylongdate":

VI applylongdate

Här är vad du behöver inne i den filen. Känn dig fri att kopiera / klistra in från den här sidan:

Använd logwatch ": datum ';

min $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;

$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');

if ($ Debug> 5) {

print stderr "DEBUG: Inside ApplyLongDate ... \ n";

print stderr "DEBUG: Söker:". $ SearchDate. "\ N";

}

while (definierad ($ ThisLine = <STDIN>)) {

if ($ ThisLine = ~ m / ^ $ SearchDate / o) {

print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..: ..: .. / /;

skriva ut $ ThisLine;

}

}

# VI: shiftwidth = 3 syntax = perl tabstop = 3 et

När du sparar filen måste vi nu att ställa in rätt behörigheter:

chmod 755 applylongdate

Konfigurera loggfiler

Nästa vi måste berätta för logwatch var OSSEC loggfiler finns. Varje gång du lägger till nya loggfiler eller skapa nya tjänster för att övervaka i logwatch, bör du placera dina ändringar i filen / etc / logwatch katalogen. Vi kommer att skapa två konfigurationsfiler. Den första kommer att hantera OSSEC meddelanden och den andra kommer att hantera OSSEC varningar och aktiva förändringar svar.

Låt oss börja med att skapa konfigurationsfilen för den huvudsakliga OSSEC loggfilen:

cd / etc / logwatch / conf / loggfiler

VI ossec.conf

Innehållet i filen ska som följer:

Logfile = / var / ossec / logs / ossec.log

* ApplyLongDate =

Du kan nu spara och avsluta filen. Därefter kommer vi att skapa konfigurationsfilen för återstående loggfiler:

VI ossec-alert.conf

Innehållet i denna filen ska som följer:

Logfile = / var / ossec / logs / aktiv responses.log

Logfile = / var / ossec / logs / varningar / alerts.log

Logfile = / var / ossec / logs / brandvägg / firewall.log

När du är klar, spara och avsluta. De standardbehörigheter bör vara acceptabel för vår inställning.

Konfigurering av OSSEC Tjänster

Sedan behöver vi definiera OSSEC tjänster och identifiera vad vi vill använda som en titel när rapporter genereras. Så här skapar den första filen:

cd / etc / logwatch / conf / services

VI ossec.conf

Innehållet i denna fil är ganska enkel:

Title = "OSSEC meddelanden"

Logfile = ossec

När du är klar kan du spara och avsluta. Vi måste skapa en större fil i denna katalog:

VI ossec-alert.conf

Innehållet i den här filen bör vara:

Title = "OSSEC alarm"

Logfile = ossec-alert

När du är klar, spara och avsluta som vanligt.

Analysera Posterna

Sedan behöver vi tala om för logwatch hur du formaterar loggposterna i rapporten. Vi kommer att behöva skapa en anpassning manus för varje uppsättning av tjänster. Vi kommer att börja med att använda en logwatch medföljande testskript, bara för att se till att allt fungerar.

Börja med att flytta in i lämplig katalog:

cd / etc / logwatch / scripts / tjänster

Använd din favorit editor för att skapa din första manus:

VI ossec

Innehållet i den skriptet bör utgöra det som följas:

#! / Bin / bash

# Det här är så fint script som visar dig raderna du kommer att

# Att bearbeta och rapportera. Det kommer först att visa

# Standard miljövariabler och sedan tar STDIN och

# Dumpa det tillbaka ut till STDOUT.

# Dessa är de vanliga miljövariabler. Du kan definiera

# Mer i din tjänst config fil (se ovan).

echo "Datumintervall: $ LOGWATCH_DATE_RANGE"

echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Level: $ LOGWATCH_DEBUG"

# Nu tar STDIN och dumpa det till STDOUT

katt

Skapa nu din andra skript:

VI ossec-alert

och inkluderar exakt samma innehåll:

#! / Bin / bash

# Det här är så fint script som visar dig raderna du kommer att

# Att bearbeta och rapportera. Det kommer först att visa

# Standard miljövariabler och sedan tar STDIN och

# Dumpa det tillbaka ut till STDOUT.

# Dessa är de vanliga miljövariabler. Du kan definiera

# Mer i din tjänst config fil (se ovan).

echo "Datumintervall: $ LOGWATCH_DATE_RANGE"

echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Level: $ LOGWATCH_DEBUG"

# Nu tar STDIN och dumpa det till STDOUT

katt

Slutligen måste vi ställa in rätt behörigheter:

chmod 755 ossec *

Testa Setup

Det enklaste sättet att testa vår nya inställning är att köra kommandot:

logwatch | less

Om du bara vill se dina ändringar kan du köra en rapport om varje tjänst, en i taget:

logwatch-service ossec | less

logwatch-service ossec-varning | less

Ytterligare anpassning

När du får allt det ovanstående fungerar kan du fokusera på att få logwatch att filtrera och sammanfatta loggposterna. Logwatch är ganska flexibel och du kan anpassa produktionen något sätt du vill. En av de trevliga sakerna med ovanstående testskriptet ovan är att den visar dig exakt vad du har att arbeta med. Så med lite reguljärt uttryck magi kan du sammanfatta poster som du finner lämpligt. För vissa idéer, kolla in filerna under:

/ Usr / share / logwatch / scripts / tjänster

Dessa är de förvalda sammanfattningen skript som medföljer logwatch. Specifikt ta en titt på filerna "pam" och "sshd". De är bra exempel på både en enkel och en komplicerad uppsättning sammanfattande filter.

När du utveckla dina skript noga till $ LOGWATCH_DETAIL_LEVEL "variabel. Detta kommer att tillåta dig att anpassa utnivån av rapporten beroende på hur mycket informationsnivån användaren är ute efter. Till exempel, medan du fortfarande i ovanstående tjänster katalogen genom att köra följande kommando:

mindre sshd

När den första sidan av filens innehåll visas, skriv in:

/ Detalj <Ange Key>

Det omvända snedstrecket låter oss söka efter filen för en viss textsträng. I detta fallet är vi söker efter ordet "detalj". När du trycker Enter kommer sökningen att hoppa igenom filen tills den hittar den första förekomsten av textsträngen. Det kommer också att belysa söksträngen. I den första matchen kommer du att märka att författaren tilldelas variabeln "$ Detalj" att vara samma som variabeln $ LOGWATCH_DETAIL_LEVEL ". Detta är att spara dem lite skriva.

Tryck nu på snedstreck knappen igen följt av Enter. Detta kommer att gå igenom filen till nästa förekomst av "detalj". Du bör se:

if ($ Detaljer> = 20) {

SEK Användare {$ USER} {$ Host} {$ Metod} + +;

} Else {

if ($ Host! ~ / $ IgnoreHost /) {

SEK Användare {$ USER} {$ Host} {"(alla)"} + +;

Notera författaren ger mer information om detaljnivån är inställd på 20 (halvvägs mellan låg och medelstora) eller högre. Håll hoppa igenom filen och du kommer att se andra exempel där författaren belånade denna teknik.

Nu sida ner till slutet av filen och du bör se detta uttalande:

if (nycklar% OtherList) {

print "\ n ** Omatchade Inlägg ** \ n";

print "$ _: $ OtherList {$ _} (s) \ n" foreach nycklar% OtherList;

}

Detta avsnitt är mycket viktigt, eftersom det är en slutlig catchall. Tänk på en brandvägg politik för ett ögonblick. De flesta av oss att skapa en slutlig regel som säger, "Om jag inte specifikt tillät en trafikmönstret igenom förneka det." Med andra ord, om något oväntat händer, är hur jag vill att du ska hantera det.

Ovanstående uttalande tjänar samma syfte vid tolkning av loggfilen. All tidigare "om" uttalanden försöka matcha en viss textsträng i loggposten för att formatera det ordentligt. Detta inlägg säger "Om du inte har matchas och tryckt en särskild loggpost ännu, skriva ut den i ett avsnitt med titeln" ** Omatchade Poster ** ". Detta steg är mycket viktigt för utan det vi aldrig kommer att se oväntade poster. Det är de oväntade poster som är förmodligen den viktigaste och mest intressanta.

Exec Sammanfattning

Både OSSEC och logwatch är utmärkta gratis verktyg. OSSEC utmärker vid varnar dig när en känd attack mönster sker. Logwatch är ett fantastiskt verktyg för att sammanfatta en tid bit av loggar så att människor kan faktiskt förstå vad som pågår. Genom att kombinera de två verktyg som du kan skapa en mycket mer robust försvar på djupet hållning. Hela blir större än summan av delarna.

Kombinering logwatch-och OSSEC - Del 3

17 feb 2010

I mina två senaste inlägg jag diskuterade logwatch och OSSEC, samt hur de kan vara en hävstång för att öka din säkerhet hållning. I den här delen jag att diskutera hur man installerar båda dessa verktyg.

Du installerar logwatch

Logwatch är ganska lätt att installera. I själva verket är det installeras som standard på många Linux-distributioner, så du kanske redan har en kopia på ditt system. Att kontrollera, logga in som root och försöka köra logwatch med "-v" omkopplare. Om du ser:

[Root @ Fubar logwatch] # logwatch-v

Logwatch 7.3.6 (släppt 05/19/07)

Logwatch är installerat och du har en kopia av den senaste versionen. Om du inte har den senaste versionen kan du ta det från logwatch hämtningssidan .

Det finns tre varianter av logwatch som kan laddas ner, binärfiler i RPM-format, källa i RPM-format eller källa i ett Tar boll. Om ditt system stöder RPM pakethantering, är den binära RPM ditt bästa val. Det är enkelt att installera och RPM kommer automatiskt att uppdatera programvaran när nya versioner finns tillgängliga.

Installera logwatch Från RPM

Om du vill installera den binära versionen av RPM, helt enkelt logga in som root och navigera till den katalog där du hämtade RPM filen. Nu kör kommandot:

rpm-U logwatch-7.3.6-1.noarch.rpm

Glöm inte att du kan använda tab-tangenten för att automatiskt fylla i filnamnet i stället för att skriva in det hela.

Installera logwatch Från källa

Installera från källkod är lite mer tidskrävande. Kom ihåg att för att installera källkod du redan måste ha en kompilator (som GCC) installerat på din dator. Loggar in som root och navigera till den katalog där du hämtade Tar bollen. För att extrahera arkivet, köra kommandot:

tjära xvzf logwatch-7.3.6.tar.gz

Du kommer att se en katalogstruktur under din nuvarande position blir skapade och massor av filer kopieras i. Vi behöver nu flytta in i översta katalogen som skapades:

cd logwatch-7.3.6

För logwatch att köra, det finns ett gäng kataloger som måste skapas på ditt system. Dessa dokumenteras i README i den aktuella katalogen. Lyckligtvis finns logwatch en installation skript som kan göra allt arbete åt dig. Tyvärr har manuset fel behörigheter som så att den inte kommer att köras som standard. Detta är ganska lätt att fixa dock med chmod kommandot:

chmod 500 install_logwatch.sh

Nu kan vi köra skriptet att installera vårt system:

. / Install_logwatch.sh

Glöm inte den period i början av raden.

Testning logwatch

Om du vill testa logwatch setup, kör kommandot:

logwatch | less

Du kommer att se din terminal skärmen bli tom, men det är normalt. Du kommer så småningom se en logwatch Anmäl dig ut på skärmen som du kan navigera genom att använda "Page Up" och "Page Down" tangenterna. Hur loggar det tar för den rapport som visas på skärmen beror på hur mycket logginformation behöver få analyserad. Det kan ta några sekunder eller ett par minuter. Hursomhelst kommer det att ge dig en chans att bekanta dig med rapporten format.

Du installerar OSSEC

Som jag nämnde i mitt förra inlägg, har du två alternativ med OSSEC, lokal eller klient / server. I det här inlägget ska jag fokusera på klient / server inställning, eftersom det är lite mer komplex. Om du utför en lokal installation, välj helt enkelt "lokala" alternativ under installationen och hoppa över avsnittet om att inrätta en säker kanal mellan agenten och servern.

Start med servern

OSSEC använder Blowfish kryptering för säker kommunikation mellan klienten och servern. Blowfish är symmetrisk nyckel baserat, så båda sidor måste veta vad nyckelvärdet att använda för att kommunicera. Servern är ansvarig för att generera den symmetriska nyckeln, så vi måste installera serverprogramvaran först. Under kunden installerar vi kommer att uppmanas att ange en nyckel värde så självklart kommer vi att behöva ha det hands i förväg.

Här är en tidsbesparande tips. Den nyckeln Värdet är lång och nästan omöjligt att komma ihåg. Det enklaste sättet att flytta nyckelvärdet från servern systemet till agent system är att använda SSH. Skapa en säker anslutning till OSSEC servern, och extrahera på lämplig knapp (anvisningarna nedan). I en andra terminalfönster, skapa en SSH-session i systemet där du kommer att installera agenten. När klienten installation uppmanas du nyckeln värde, kan du helt enkelt kopiera / klistra in mellan de två terminalerna.

Installera OSSEC Server

Serverprogramvaran finns som Tar boll, så att du kan ta en kopia av den senaste versionen från OSSEC hämtningssidan . Du kommer att behöva för att extrahera innehållet i Tar bollen:

tjära xvzf ossec-HID-2.3.tar.gz

Därefter flyttar in i katalogstrukturen du just skapat:

cd ossec-HID-2,3

OSSEC ger en installation skript för att gå igenom processen att installera servern. För att starta skriptet skriver du:

. / Install.sh

Glöm inte den period i början av kommandot. Du kommer nu att uppmanas genom ett antal installationen alternativ:

  • Språk - Standard är engelska. Ändra den vid behov.
  • Bekräftelse av installation - Tryck på Enter när du har läst på skärmen.
  • Installera typ - Skriv in "server" utan citattecken och tryck på Enter.
  • Installera plats - Acceptera standard.
  • E-post mottagen - Standard är ja, välja om du vill att e-postmeddelanden. Om du väljer Ja, kommer du att bli tillfrågad om en giltig e-postadress och e-postserver.
  • Integrity Check - Standard är ja. Välj om du vill att lokala systemet regelbundet kontrolleras för intrång.
  • Root kit upptäckt - Standard är ja. Bra alternativ eftersom vi måste bibehålla en hög grad av integritet på detta system.
  • Aktiv svar - Standard är ja. Välj det här alternativet om du vill kunna svara på händelser.
  • Brandvägg drop - medger OSSEC servern att försvara sig själv om en direkt attack upptäcks.
  • Vita listan - Detta kommer att tillåta dig att lägga till IP-adresser från vilka möjliga attacker kommer att ignoreras. Var försiktig med detta alternativ. Om du inte har konsolen tillgång till OSSEC server, kan det vara klokt att identifiera en IP-adress som alltid kan komma in bara se till att käll-IP är en pålitlig system.
  • Aktivera Syslog - Standard är ja. Välj det här alternativet om du vill samla in loggar från system som inte kan köra ett OSSEC agent (som brandväggar, switchar, routrar, åtkomstpunkter etc.).
  • Loggfiler som ska övervakas - Den här skärmen identifierar alla de lokala loggfiler OSSEC kommer att bevaka. Det är endast information, så allt du kan göra är att trycka på Enter för att gå förbi den. Om du märker en eller flera loggfiler som saknas i listan kan du lägga till dem senare till ossec.conf filen.

Vid denna punkt OSSEC ska få tillgång till lokala complier och installera alla nödvändiga filer till systemet. När du är klar kan du starta OSSEC servern genom att köra kommandot:

/ Var / ossec / bin / ossec-control start

Som definierar OSSEC Agents

Vi är inte färdig med OSSEC servern ännu. Sedan behöver vi fördefiniera några system som ska kör OSSEC agent (klient) mjukvara. Denna utförs med användning den manage_agents-kommandot. Först måste dock vi göra lite läxor. Gör en lista över alla de system som kommer att köra OSSEC agenten. För varje system, behöver du ett beskrivande namn samt att systemets IP-adress.

Nu kör följande från kommandoraden:

/ Var / ossec / bin / manage_agents

Detta kommer att producera agenthanteraren huvudmenyn. Tryck på "A" följt av Enter för att definiera din första systemet. Ange ett beskrivande namn för det första systemet, följt av systemets IP-adress. Oroa dig inte om agenten ID-nummer. Bara acceptera standard och OSSEC kommer automatiskt tilldela nästa tillgängliga ID-nummer. När du har bekräftat den information du angett, kommer du tillbaka till agenthanteraren huvudmenyn. Upprepa ovanstående process för varje system som kommer att köra en OSSEC medel.

Generera Keys

När du har lagt i alla dina system, är det dags att skapa krypteringsnycklar. Detta steg utförs också med den manage_agents-verktyget. Om du har stängt verktyget efter det sista steget, nystart nu.

Tryck på "E" knappen följt av Enter för att välja "Extract nyckeln till en agent" menyn. Du kommer sedan att bli tillfrågad om ID-numret på nyckeln du vill extrahera. De beskrivande namn och IP-adresser listas med varje ID-nummer, så det borde vara trivialt att identifiera vilken du vill ha. Börja med det system du planerar att installera agenten programvaran på först.

OSSEC Agent Installera på Linux

När du installerar agenten programvaran på en Linux-eller UNIX-klient använder du exakt samma Tar bollen vi använde för att installera serverprogramvaran. Kör samma installationsskriptet, men den här gången när du ombeds för den typ av installation du vill utföra, skriv "agent" följt av Enter.

Kunden installation har många av samma uppmanas som servern installationen. Använd info ovan för att guida dig genom processen. Frågan som kommer att variera är dock att du kommer bli ombedd att lämna IP-adressen för OSSEC servern. När du är klar, kommer OSSEC tillgång till lokala complier och installera alla nödvändiga filer till systemet.

Nästa vi behöver importera Blowfish nyckeln från OSSEC servern. Medan fortfarande på agent system, kör kommandot:

/ Var / ossec / bin / manage_agents

När Agent Manager-menyn visas, välj "I" för att importera Blowfish nyckeln.

När nästa prompten visas måste du manuellt ange rätt Blowfish nyckeln. Återigen, om du kör SSH till båda systemen samtidigt, kan du helt enkelt kopiera / klistra in mellan de två terminalerna. Se till att nyckeln ser korrekt, tryck på Enter och välj sedan "y" för att bekräfta att nyckeln ser korrekt. Du kommer att returneras till Agent Manager-menyn. Välj "q" för att återgå till kommandoraden.

Nu måste vi helt enkelt starta OSSEC medlet. Kan du göra det genom att köra följande kommando:

/ Var / ossec / bin / ossec-control start

Du bör se alla OSSEC agenten komponenterna starta, följt av en "färdig"-meddelande.

OSSEC Agent installerar på Windows

OSSEC har en självextraherande körbar som kommer att tillåta dig att installera agenten programvara på en Windows-system. Helt enkelt dubbelklicka på den körbara för att starta installationen. Du kommer att uppmanas att godkänna licensen samt vilka komponenter du vill installera. Följ bara anvisningarna tills OSSEC Agent Manager öppnas.

Den OSSEC Agent Manager-fönstret kommer att fråga dig för IP-adress OSSEC servern. Det kommer också att fråga dig efter Blowfish nyckelvärdet att använda, så packa lämplig nyckel på servern och ange värdet på detta område. Se till att du tar bort ett snabbt inom detta område innan du klistrar in i Blowfish nyckeln. Annars kommunikationen med servern kan misslyckas.

Välj sedan "Hantera" från OSSEC Agent Manager-menyn, följt av "Start OSSEC". Du bör nu se "Status:" indikatorn förändring "Running ...".

Testning OSSEC

När du har servern och agenten programvara installerad började och lämpliga knapparna konfigureras är det nu dags att titta på vår inställning. Kör följande kommando på OSSEC servern:

cd / var / ossec / logs

Och kolla in ossec.log filen:

mindre ossec.log

Kontrollera loggfilen för eventuella fel. Ett vanligt fel är att OSSEC rapporter den inte kan skicka e-post. Se till att e-postservern är igång och att den accepterar anslutningar. När du är nöjd med servern installationen är det nu dags att kolla in de anställda. Flytta ner till "varningar" katalogen:

cd varningar

Och kolla in alerts.log filen:

mindre alerts.log

Specifikt söker du efter poster som liknar följande:

2010 17 februari 16:09:16 (desktop) 192.168.1.10-> ossec

Regel: 501 (nivå 3) -> "Nytt ossec agent ansluten."

Src IP: (ingen)

Användare: (ingen)

ossec: Agent startade: "test_system-> 192.168.1.10".

Du bör se en post för varje system som du installerade agenten programmet.

Mer kommer

Puh! Det är mer än tillräckligt för en post! I mitt nästa inlägg ska jag få in att utnyttja logwatch att tolka all varningsinformation som genereras av OSSEC.

Kombinering logwatch-och OSSEC - Del 2

16 februari, 2010

I min senaste inlägget jag beskrev hur logwatch kan användas för att förenkla processen loggen översynen. I detta inlägg ska vi titta på OSSEC och vad det innebär för bordet.

Vad Is OSSEC?

OSSEC , kort för "Open Source Security", är en värd baserat Intrusion Detection System (HIDS). Med andra ord är det utformat för att upptäcka angrepp eller brott mot politiken om och när de inträffar. Även om det inte har förmågan att skydda mot okända eller 0-day-attacker (som skulle vara värd baserad intrångsskydd), gör det innehålla en rad olika verktyg som kan hjälpa dig att identifiera ett intrång när den inträffar, samt i vilken utsträckning av de skador som har orsakats.

Plattformar som stöds

För att kunna utnyttja alla funktioner OSSEC har att erbjuda, måste du köra en agent på det system som skyddas. OSSEC agenter kan köras på Windows, Mac OS X, Linux och ett brett utbud av UNIX-system. Om du bara intresserad av logganalys delen kan dock en ännu bredare utbud av system bör stödjas. Detta inkluderar hårdvara från både Cisco och Juniper. Ett antal specifika produkter också får stöd som Checkpoint brandväggar, Symantec Anti-Virus, Snort, Squid, och arpwatch, bara för att nämna några.

När du installerar OSSEC har du två konfigurationsalternativ, lokala eller klient / server. En lokal installation används när du behöver köra allt på ett enda system. Den klient / server installation kan du köra en distribuerad miljö skydda flera system på samma gång. Medan de flesta distributioner är klient / server-baserad, om du vill ge OSSEC en spin du enkelt kan köra allt på en enda test som använder en lokal installation.

Loggar Analys

OSSEC inkluderar en Log-system Intrusion Detection (lock). Detta har förmågan att granska loggfiler i nära realtid, medan granska dem för kända attack mönster. När en logg genereras på ett skyddat system tar agenten hand säkert överföra log (Blowfish kryptering med en pre-delad hemlighet) tillbaka till servern. Servern tar sedan själv hand att utföra analysen.

De flesta log analysverktyg bearbeta sina regler i en linjär format. Med det menar jag om vi har 500 regler, är i regel en markerad, så regeln två, sedan styra tre och så vidare tills en matchning hittas eller vi når slutet av regeluppsättningen. OSSEC fungerar lite annorlunda då det genomför en hierarkisk struktur till reglerna. Loggposter först klassificeras och kontrolleras endast mot beroende reglerna är lämpliga. Resultatet är att i stället för att behöva behandla alla 500 regler, kommer de flesta händelserna få kontrolleras mot 10 regler eller mindre. Detta reducerar dramatiskt den mängd overhead som krävs för att bearbeta det regeluppsättningen.

Integritet Kontroll

OSSEC inkluderar ett verktyg som heter Syscheck för att utföra fil-och katalog integritet kontroll. Om du kör en Windows agent kan du även specifika tangenter i Windows-registret som skall övervakas också. Filändringar kan detekteras med användning både MD-5 och SHA-1-hash-algoritmer. Systemet är mycket anpassningsbart. Du kan inkludera eller exkludera enskilda filer eller hela strukturer katalogen. Du kan även ställa in en flagga för att upptäcka ny fil skapas.

Den agenten programvara är utformad för att använda en minimal mängd av CPU: n under den integriteten checken. Även om detta innebär att kontrollen kommer att ta längre tid, bidrar den också till att minimera prestanda slå till systemet. Hash information sänds tillbaka till servern. Servern tar sedan själv hand utföra den hash jämförelsen för att se om någon av systemets viktiga filer har ändrats. Servern lagrar också en kopia av Integrity Check politik, så att om de politiska förändringar görs på medlet, kan de upptäckas och rapporteras också.

Upptäcka avvikelser

OSSEC går långt utöver log kontroll för att verifiera systemets integritet. Användning politik kan hanteras centralt från servern, och sedan skjuts ut till lämpliga medel. Till exempel kan du definiera en policy om vilka Windows-program är acceptabla (Office, Firefox, etc.) och vilka som inte är (IM-klient, Skype, etc.). Du kan även ange acceptabla konfigurationsalternativ så kontrollera att NT hashar används för lösenord sparas, men inte Lanman hashar.

OSSEC inkluderar ett antal andra godsaker i syfte att hjälpa till att verifiera en systemets: s integritet. Till exempel OSSEC har förmågan att utföra kommandon från agenten och övervaka produktion som blir genereras. Till exempel kan du ha Linux agenten kör "DF"-kommandot med jämna mellanrum och skapa ett larm om diskanvändning överstiger 90%. En Windows exempel kan vara att ha OSSEC generera en varning när filinformation skrivs till alternativa dataströmmar område NTFS.

Aktiv Response

Slutligen innehåller OSSEC förmågan att reagera när misstänkt aktivitet upptäcks. Svar kan genereras från servern eller dennes ombud, som någonsin du anger. Svar kan vara så godartad generera ett e-postavisering, att vara så aktiv som blockerar en IP-adressen under en begränsad tid. Det finns ett antal som ingår aktiva svar skript Du kan rita på, eller så kan du enkelt skriva din egen.

Säker Arkitektur

De OSSEC Författarna har gjort stora ansträngningar för att säkra alla komponenter i produkten. Uppgifter som integritetskontroll utförs på servern, snarare än medlet, så tillförlitlighet hashes inte kan äventyras under en attack. Processer drivs med lägsta behörigheter möjligt, och olika konton används för att köra varje OSSEC komponent. Detta innebär att en kompromiss en enda ansökan inom OSSEC inte omedelbart kommer att leda till en kompromiss om hela paketet. Vidare är de flesta komponenter som körs i en chrootad fängelse för deras tillgång till systemet ytterligare begränsas.

Slutord

Medan OSSEC är ett kraftfullt verktyg, är det viktigt att komma ihåg att det är en HIDS och inte en logghantering lösning. OSSEC kan granska loggposter söker efter misstänkta mönster, men det kommer bara att spara varningsinformation. Så medan OSSEC inte ersätta din Security Information Management (SIM) lösning, kan det säkert öka den. Du kan enkelt ställa in OSSEC att vidarebefordra alla varningar som den genererar till en central loggning server .

Medan OSSEC är öppen källkod, är Trend Micro utvecklas i första hand det. Om du behöver kommersiell support kan du köpa en supportavtal genom dem till en rimlig kostnad.

Mer kommer

I min nästa avbetalning ska vi titta på att installera OSSEC och logwatch. Efter det kommer vi flytta in att integrera de två tillsammans.

Kombinering logwatch-och OSSEC

15 februari 2010

Jag har nyligen hade en elev frågar mig en fråga om integration av logwatch med OSSEC. Jag kände mig som det var en komplicerad och ändå tillräckligt svalt tanken att det motiverade en serie inlägg att täcka det i sin helhet. Så under de närmaste dagarna ska jag tala om vart och ett av dessa verktyg, hur man kan integrera dem tillsammans, samt vad extra säkerhet synlighet kan vinnas När processen är klar.

Vad Is logwatch?

Logwatch är ett utmärkt open source verktyg för att skapa dagliga människoläsbara log rapporter. Loggposterna tenderar att falla i en av tre kategorier:

  • Saker du vet är ond
  • Saker du vet är normalt och kan ignoreras
  • Allt annat

Det är att "allt annat" kategori där logwatch verkligen skiner. För de saker vi vet är ont, kommer vi att ställa någon form av larmsystem. Vi kan till exempel skriva en varning signatur som varnar säkerhet analytiker när ett konto håller på att brute tvingas. Men hur attackerna vet vi inte om eller är osäker på vad de ser ut? Detta skulle vara ett tydligt exempel på att "allt annat" kategori. Trafiken är inte normalt, men vi har inte sett det förut att ha en signatur som väntar på att generera en varning. Eftersom vi inte kommer att kunna fånga attacken i realtid, måste vi fånga den under en daglig logg översyn.

Naturligtvis den problemet med att göra dagliga log betyg är att det är tråkiga och tidskrävande. Jag menar låt oss vara ärliga, vill som verkligen tillbringa sin dag över en miljon plus poster log? Även om du gjorde, du är säker på att du faktiskt skulle fånga utöver det vanliga trafiken?

Hur det fungerar

Vad logwatch gör mycket väl tillåta dig att omorganisera dina data till ett format som är lättare för människor att följa. Dess verkliga styrka är att den tillåter dig att flytta saker du förstår ur vägen (normal eller ont), så att de oväntade loggposterna står ut som en öm tumme. Med andra ord låter logwatch du sammanfatta dina loggposter så ovanliga saker är lättare att upptäcka.

Vad jag verkligen gillar med logwatch är att du inte förlorar något. Många log recension verktyg bara visa dig saker som har på förhand definieras som onda. Problemet de alla delar är att när något ont, men oväntat händer, flyger det rätt under tråden. Eftersom logwatch kan du se allt, du inte längre missa det oväntade.

Logwatch I Åtgärd

Låter diskutera hur logwatch fungerar med hjälp av SSH -servern tjänsten som ett exempel. De skript för att hantera SSH redan fastställs inom logwatch, så du behöver inte göra någon anpassning för att få de funktioner vi kommer att diskutera.

När du granskar en loggfil, inte det första logwatch är omorganiserar loggposter baserat på deras meddelandetyper. Till exempel alla framgångsrika SSH inloggningar grupperas tillsammans, liksom alltför många inloggning misslyckanden, vägrade anslutningar, låsta konton, utan en ordentlig skal, protokoll mis-matcher, etc. etc. etc. När alla SSH-meddelanden grupperas efter sina typ, är de data sammanfattade sedan för att reducera mängden av information som rapporteras.

Till exempel är det standard att sammanfatta misslyckade inloggningsförsök efter konto och källa IP. Så en typisk misslyckats inloggning rapporten avsnitt kan se ut så här:

Misslyckade inloggningar från dessa:

bsmith / lösenord från 1.2.3.4: 637 (s)

jsmith / lösenord från 1.2.3.5: 2 (s)

Så i stället för att granska 639 loggposter rapporterar en dålig inloggningsförsök har vi all relevant information sammanfattas i tre rader (om du inkluderar titeln). Fortsätt denna process för alla de andra SSH budskap, och vi har dramatiskt minskat den tid som krävs för att se över våra loggar.

Men tänk om något händer som logwatch inte är förprogrammerad att känna igen? När en oväntad loggpost hittas lägger logwatch ett avsnitt i slutet av tjänsten rapport kallad "Omatchade poster". Så om vi ser en sådan avdelning i SSH-servern avsnittet vet vi någon händelse har inträffat som antingen är onormal eller oväntad för SSH-tjänsten. Detta kan mycket väl vara någon form av attack som vi inte är medvetna gör rundor.

Genom att fokusera in på oöverträffad Fält för särskilda uppgifter, kan vi snabbt identifiera oväntade aktivitet. Som jag sa tidigare, är detta verkligen det viktigaste målet att göra dagliga log recensioner. För att hitta de saker vi förväntar oss inte som smyga förbi vår larmsystem. Logwatch gör denna process så snabbt och smärtfritt som möjligt.

Feature Sammanfattning

I ovanstående exempel har jag pratat om att göra dagliga log recensioner, men för att vara ärlig logwatch är mycket anpassningsbar. Du kan ange ett intervall du vill använda ner till ett intervall på en sekund. Till exempel låt oss säga att jag undersöker ett intrång istället för att genomföra en daglig logg översyn. Jag kunde ange ett intervall som "2010/02/14 17:05:00 för den timmen" att fokusera rätt i den information som intresserar mig. Jag kan också fokusera på en specifik loggfilen eller tjänst.

Detaljnivå i rapporten är också anpassningsbar. Vanligtvis när man behandlar med säkerhet får du för vana att alltid vilja högsta detaljnivån i rapporteringen. För att vara ärlig med logwatch en hög detaljnivå är förmodligen mer än du någonsin kommer att behöva. Personligen har jag hålla vanligtvis med "med" för medium och som fungerar riktigt bra. Du kan även ange rapportering nivå som "låg" eller "hög" eller använda en numerisk rad 0-10 för en högre grad av detaljnivå (låg = 0, Med = 5, hög = 10).

Logwatch kan köras automatiskt eller som en manuell process. Vanligtvis kommer du vill ställa in den att köras automatiskt varje dag och sammanfatta en dag värde av loggposter. Om du någonsin behöver expandera eller fokusera rapporten kan du alltid köra logwatch från kommandoraden samtidigt som den specificerar exakt vad du vill se. Du kan sedan använda "-save" för att ange en rapport namn och katalog för lagring.

Mer kommer

Ovanstående bör ge dig en god uppfattning om de funktioner logwatch kan ta med till bordet. I nästa inlägg kommer jag att diskutera OSSEC i samma detaljnivå. Efter det ska jag komma in hur du installerar varje verktyg samt hur man kan integrera dem tillsammans.

Dag 2 Keynote-

12 januari 2010

Tack till alla som kom ut till Kryptering / DLP toppmöte. Här är bilderna från min keynote på dag 2.

kryptering DLP-keynote

ICMPv6 Challenge - Svar

13 dec 2009

Utmaningen var: "Skriv en tcpdump / windump filter som kommer att fånga ICMPv6 Multicast Listener paket." Jag har en omfattande skriva upp på vad som gör svaret så komplicerat. Om du vet IPv6 och vill bara svaret, hoppa till slutet.

Först några Bakgrund

Steinar gjort vissa kommentarer till tidigare inlägg och var 100% på rätt spår. Om du läser dem och tänkte "Wow, det låter som verkligen stökigt", förstår du omfattningen av problemet också. :)

Protokoll Vs. Nästa Header Field

Med IPv4 hade vi alternativ fältet. Detta kan leda till att IP-huvudet att växa från 20 bytes så stor som 60 bytes i storlek. Med IPv6, finns det inte längre ett alternativ fält och huvudet är fastställt till 40 bytes i storlek. Då alternativ krävs använder vi förlängning rubriker att identifiera dem. Detta kastar en intressant kurva boll på oss för med IPv4 protokollet fältet (byte 9) skulle (nästan) alltid identifiera det övre planet Transport (TCP, UDP, etc.). Med IPv6 nästa rubrikfältet (byte 6) kan identifiera det övre skiktet transporten, eller det kan identifiera en förlängning huvud som kommer att omfatta ett visst antal alternativ.

Här är en lista över några IPv6 förlängning rubriker du kan stöta på, samt de RFC som definierar dem:

Alternativ # Alternativ Beskrivning RFC
0 Hop-by-hop 2460
6 TCP- 793
17 UDP- 768
43 Routing 5095
44 Fragmentering 2460
50 ESP 4303
51 AH 4302
58 ICMPv6 4443
59 Ingen nästa rubrik 2460
60 Destination alternativ 2460
135 Mobilitet 3775

IPv6 begränsar inte antalet förlängning rubriker du kan använda i en enda packet.There är dock en publicerad "rekommenderad ordning" om hur rubriker ska läggas ut. Ordern är:

  • IPv6 Header
  • Hop-by-Hop Alternativ
  • Routing Sidhuvud
  • -Fragmentet Sidhuvud
  • AH
  • ESP
  • Destination Options
  • Mobilitet Sidhuvud
  • TCP/UDP/ICMPv6

Observera att denna lista är "rekommenderade" men inte obligatoriskt. En IPv6 värd måste kunna behandla rubrikerna i vilken order någonsin de mottagits. Detta innebär att du förmodligen kommer att finna leverantörer följer denna lista men inte anfallare. Jag har personligen sett enheter börja agera riktigt udda när man bråka med huvudet ordning. Faktum är att jag har stött på en hel del "IPv6-kompatibla koden" som inte kan hantera om önskad ordning inte används.

Chasing Protokollet Header

Så med IPv6 kan vi ha flera rubriker bakom IPv6 huvudet. Om detta låter som ett nytt koncept, det är faktiskt inte. Faktum är att du har förmodligen arbetat med det redan. När du distribuerar IPSec de två möjliga säkerhet protokollen är ESP och AH. Dessa var faktiskt lånats från IPv6 och masserade att arbeta med IPv4. Både AH och ESP ingår ett nästa startfält för att identifiera vilken typ av paket det är protecting.This kallas protokoll kedja, som du faktiskt har flera huvuden som sitter bakom lagret 3-protokoll header.

Så för att räkna ut vad den övre nivån transport (TCP, UDP, etc.) används, kan du behöva söka igenom flera rubriker innan du hittar svaret. Detta kallas för "jaga rubriken" och tcpdump / Windump ge oss ett filter möjlighet att utföra denna uppgift. Du kan vara fimiliar med proto filtret. I IPv4 världen, om jag säger:

iP-proto tcp

Filtret läser "kontrollera byte 9 i IPv4 huvudet och om värdet är lika med 6 (protokoll värde för TCP), match på paket". Detta filter är inte lika effektiv i IPv6 världen naturligtvis på byte 6 i IPv6 huvudet kan identifiera det övre skiktet transport, eller det kanske bara identifiera en frivillig förlängning huvud som används. För att lösa detta problem var protochain filtret infördes. Skriva:

ip6 protochain tcp

Lydelse "Kontrollera byte 6 i IPv6 huvudet för att se om värdet är lika med 6. Om du istället hittar ett värde som identifierar en frivillig förlängning huvud, kontrollera förlängningen huvudet nästa startfältet till ett värde av 6. Om du hittar fler frivillig förlängning rubriker fortsätta att upprepa det senaste testet tills du hittar den senaste förlängningen huvudet ".

Ganska enkelt att skriva på engelska, men detta är en mardröm att implementera i koden. De flesta frivillig förlängning rubriker varierar i längd som just bidrar till komplexitet. Jag har gjort en del tester med scapy och du kan faktiskt se skillnaden i prestanda när protochain blir åberopas. Faktum är att du skulle förmodligen göra ett ganska bra jobb med dosering av en IDS / IPS genom att tvinga det att behandla en hel del onödiga förlängning huvuden.

Skriva våra filter

Så vår första problemet skriftligen utmaningen filtret är att ICMPv6 huvudet inte kan visas direkt efter IPv6 huvudet. Vi måste se upp för frivillig förlängning rubriker. I själva verket RFC 2710 säger: "Alla MLD meddelanden som beskrivs i detta dokument skickas med en länk-lokal IPv6 Source-adress, en IPv6 Hop gräns på 1 och en IPv6-router Alert alternativet [RTR-ALERT] i en Hop-by-hop Alternativ rubrik. "Detta innebär att vår multicast lyssnaren paket måste ha en Hop-by-hop förlängningen huvudet med routern Alert alternativet set. Med detta i åtanke bör vår första prövningen:

ip6 protochain icmp6

Att säkerställa att vi bara tittar på ICMPv6 paket. Nu är det bara en fråga om kontroll för att se om fältet Typ (byte 0) sätts till 130 (Multicast Listener Query) eller 131 (Multicast Listener Report). Detta leder oss till vår andra problem dock. I IPv4 värld jag kan göra en:

ICMP [0] = <type värde av interest>

Om jag prova det här med icmp6 jag:

[Root @ Fubar ~] # tcpdump-nn icmp6 [0] = 130
tcpdump: IPv6 övre skikt protokollet stöds inte av proto [x]

Med andra ord kan jag inte använda förskjutningar i icmp6 att söka efter specifika värden. Windump och tcpdump annonseras som IPv6-kompatibla, men förvänta dig inte att få alla samma funktionalitet du har med IPv4. Yuck!

Så vad gör vi? Vi måste falla tillbaka på referera värdet från en offset ip6. Med andra ord, vi måste mäta genom IPv6 huvudet, genom den föreskrivna Hop-by-hop huvud, och in i ICMPv6 huvudet för att se om den typ är inställt på 130 eller 131. Några saker att ta hänsyn till:

  • IPv6 header har fastställts till 40 byte i storlek
  • Hop-by-hop huvudet varierar, men 4 bytes med router Alert in
  • Typen fältet är byte 0 inom ICMPv6 huvudet

Så här är vad vi sluta med:

ip6 protochain icmp6 och (ip6 [44] = 130 eller ip6 [44] = 131)

Puh! Vi fick äntligen det! Eller gjorde vi?

F: Vad händer om paketet har ytterligare förlängning rubriker?

A: Vår filter fungerar inte.

F: Vad händer om Hop-by-hop huvudet har fler alternativ som än Router Alert?

A: Vår filter fungerar inte.

F: Kan vi fixa dessa två problem?

A: Inte förrän tcpdump / Windump filtrering lägger IF / THEN loop support.

Så om vi vill fånga normal ML trafik, kommer ovanstående filtret fungerar bra. Men om vi vill försäkra att vi fånga angripare trickiness också, filtret kommer inte att flyga.

Vad händer om vi försöker så här:

tcpdump-nn-s 1500-x ip6 protochain icmp6 | grep-i multicast> multicast.txt

och sedan bara använda Wireshark s text2cap verktyg för att konvertera den till libpcap format? Problemet här är vi bara kommer att få huvudet info. Grep kommer att matcha huvudraden som innehåller ordet "Multicast", men då hoppa hela Hex under den som är det faktiska innehållet i paketet.

Så det slutgiltiga svaret är: "Kan inte få THEYA av Haya" ;)

Så vad händer om du verkligen behöver för att kunna se denna trafik? Fram till stöd för IPv6 mognar är det enda 100% metod för att ta all ICMPv6 trafik och sedan manuellt gå igenom den.

Åtminstone det är min syn på detta. Om någon kan faktiskt komma med en 100% arbetande lösning, skulle jag gärna höra det.

ICMPv6 Challenge - Tips

9 december 2009

OK, här är en ledtråd att peka dig i rätt riktning.

Utmaningen var: "Skriv en tcpdump / windump filter som kommer att fånga ICMPv6 Multicast Listener paket."

Låter enkelt, eller hur?

Med lite hjälp från Google hittar du att "typ" för multicast lyssnaren är 130, och ICMPv6 typen fältet är den första byten i huvudet. Så detta bör vara så enkelt som:

tcpdump-nn-p-v-ar 0 icmp6 [0] = 130

men om du kör kommandot får du tillbaka:

tcpdump: IPv6 övre skikt protokollet stöds inte av proto [x]

Med andra ord kan du använda "icmp6" för att se alla ICMPv6 paket, men du kan inte använda den för att filtrera på någon av de ICMPv6 rubrikfälten.

Så vi behöver en "Plan B". Räkna ut plan B och du har löst utmaningen. :)

ICMPv6 Utmaning

4 december 2009

Bygga på IPv6 utmaning från förra gången har jag en ny för dig: Skriv en tcpdump / windump filter som kommer att fånga ICMPv6 Multicast Listener paket.

Det är det! Ganska lätt, eller hur? ;)

Weekend Challenge - Svar

3 december, 2009

Tja dess nu torsdag så jag tänkte att det är dags att lägga svaren förra helgens utmaning. ;)

Först, varför skulle du bry dig ens om IPv6 om du inte har börjat distribuera den? Jag kände ungefär på samma sätt tills jag hittade IPv6 används som en förtäckt kommunikationskanal inom en kunds nät. Data som då trycks ut till Internet via Teredo. Om du inte är bekant med tekniken, har Scott Hogg några utmärkta inlägg om ämnet.

Så även om du inte använder för närvarande IPv6, lönar det sig att börja skära botemedlet på teknik samt titta efter den på ditt lokala nätverk.

Så för att översynen var utmaningen:

Skriv en tcpdump eller Windump filter som kommer att fånga all trafik med en källa IPv6-adress 2001: DB8 :: 10 till 2001: DB8 :: 20.

Det finns ett par förbehåll med att skriva detta filter. De första jag täckte i förra inlägget. Den sista, som jag visste men aldrig riktigt trodde var ett problem tills jag började arbeta med IPv6 ganska kraftigt är att tcpdump / Windump bara låter dig använda 1, 2 eller 4 byte masker. Så medan vi skulle älska att lösa detta med en initial filter redogörelse för "ip6 [8:14] =" kan vi inte eftersom vi är begränsade till 4 byte. Det är i själva verket ett sätt att komma runt detta, men jag kommer tillbaka till det.

Så här är filtret jag har arbetat med:

(Ip6 [8:4] = 0x20010db8 och IP6 [00:04] = 0 och ip6 [16:04] = 0 och (ip6 [20:04]> = 0 × 0010 och ip6 [20:04] <= 0050 ))

Lite lång, men det fungerar. Elizabeth kom med en lösning som är långt mer elegant än min egen:

src net 2001: DB8 :: / 122 och ip6 [23]> = 0 × 10 && ip6 [23] <= 0 × 20

Så genom att börja med libpcap formatet, hon kunna kombinera mina första tre uttalanden till en. Inte för att vara en storlek drottning, men det gör hennes lösning är mycket kortare än min. I detta fall det är en bra sak. :)

Det är ungefär det. Jag kommer lägga upp en IPv6 typen utmaning i morgon.