Har Lønnsomheten Kill innovasjon?

02.09.2010 av Chris Ingen kommentarer »

Paul Graham har en utmerket skrive opp på hvorfor Yahoo gikk konkurs . Hele artikkelen er verdt lese, men her er to valg sitater:

Jeg husker forteller David Filo i slutten av 1998 eller tidlig i 1999 at Yahoo skulle kjøpe Google, fordi jeg og de fleste av de andre programmererne i selskapet var å bruke den i stedet for Yahoo for søk. Han fortalte meg at det ikke var verdt å bekymre seg. Søket var bare 6% av trafikken vår, og vi vokste med 10% i måneden. Det var ikke verdt å gjøre det bedre.

Og senere Paulus sier videre:

Hvis omstendighetene hadde vært annerledes, folk kjører Yahoo kan de ha forstått før hvor viktig søket. Men de hadde mest ugjennomsiktig hindring i verden mellom dem og sannheten: penger. Så lenge kundene var å skrive store sjekker for bannerannonser, var det vanskelig å ta søk på alvor. Google hadde ikke som å distrahere dem.

Først et forbehold: Den meninger jeg er om å uttrykke er mine egne. De representerer ikke, eller har noen tilknytning til organisasjonen jeg har jobbet med i fortid, nåtid eller fremtid. Hvis du ser en mangel på innovasjon i organisasjonen, vet jeg har gjort jobben for deg, og tror disse meninger om organisasjonen din, kan jeg forsikre deg om de ikke er. De er observasjoner om en helt annen organisasjon.

Paul's artikkel virkelig treffer hjem for meg. Tenker tilbake på de årene jeg har brukt konsulent for ulike organisasjoner, la jeg merke til et karakteristisk mønster. Internett plassen er full av selskaper som hadde noen kule innovasjon, gjorde innhogg i sine markedsandeler, men da tapte seg i jakten på større fortjeneste. Du kunne se det i organisasjonens interne kultur så vel som deres front mot interaksjon med publikum. Når fokuset endret seg fra langsiktig teknologiutvikling til kortsiktig lønnsomhet, begynte organisasjonen en nedadgående spiral.

Sannsynligvis et av de tidligste mest offentlige eksempler ble Lotus . For folk med så mye grått hår som meg selv, har du sannsynligvis huske at programmer som 1-2-3 og Notes sette PCen på kartet som valget business class-systemet. Tidlig på 90-tallet var alle som kjører Lotus-programvare. For den tiden i historien var det ekstremt innovative og funksjonelle. Det var en rekke år hvor bokstavelig talt hver eneste selskapet jeg gjorde jobber for hadde en stor distribusjon av Lotus programvare.

Deretter rundt midten av 90 tallet alt forandret. Nye utgivelser fast feil i stedet presset på teknologien fremover. En draconian kopibeskyttelse-systemet ble implementert. Kostnader til telefon støtte og lapper gikk gjennom taket. Jeg husker det eksakte øyeblikket jeg bestemte jeg ville gjøre hva noensinne jeg kunne for å komme bort fra Lotus-programvare. I was sitting on hold for cc:Mail support (the datastore had corrupted itself again ) and realized they had hired a disk jockey to play music and announce queue wait times (usually 30-60 minutes). This said to me that Lotus knew they had support problems, but rather than address the root cause they took the cheap way out and hired an entertainer. While I'm sure this increased their short term profitability, it sent folks like myself running into the Microsoft camp.

Of course Louts was not the last. We even watched Microsoft grow in leaps and bounds till the focus changed from innovation to copy protection and marketing slicks. SCO changed their business model from being an SMB solution to being litigators, and quickly slid into oblivion. We may even be seeing it again with Oracle. Noen er hevdet at Oracle kjøpte solen ikke å videresende innovasjon deres, men spesielt til å føre saker mot Google . Hard to argue this point as from the outside it appears that the only other thing they've done with Sun is kill OpenSolaris , thus cutting off a wealth of innovation provided by outside programmers.

In Paul's article he blames the root cause on Yahoo not hiring the best programmers. In my experience the problem goes deeper than that. When a company enters this self destructive phase they focus less on hiring innovators (like programmers) and more on hiring bean counters. The focus changes from fostering new ideas to squeezing out every last penny for short term gain. The first sign is usually absurd policy changes. Cubes can only be decorated in some cookie cutter fashion, engineers must empty their own trash, you spend more of your day accounting for our time rather than actually accomplishing anything, etc. etc.

While I'm sure some accountant can show on a pretty bar chart that these kinds of policy changes increase profitability, they miss a very important point. The changes create an environment that is detrimental to innovative thinking. The culture shift all but guarantees that innovative ideas are going to fail, and innovative thinkers are going to move on to other opportunities. Paul's interaction with Yahoo is an excellent example. Think of it as being synonymous to investing in food at the grocery store. Buying cheap food will result in short term profitability, but long term it will probably dramatically increase your healthcare costs . When you are counting pennies it is easy to loose sight of the long term goal (like living a long healthy life).

So is the problem big business? Er mantraet at bare små sultne bedrifter kan skape noe nytt, mens store selskaper er destine å mislykkes? Personally, I do not think this is true. I have seen large companies that are smart enough to create internal think tanks to foster innovation. Mechanisms are put in place so that new ideas get floated to the top and failure does not become synonymous with termination. While profitability is still important (and IMHO it should be), creative risk taking into potential technology verticals are supported by upper management. A great example of this is probably Apple. Moving from computers to phones was a major change in their vertical market but it paid off in spades.

In the end, I think it really comes down to the corporate culture. Hva dreper et selskap ikke er dens størrelse, men dens evne til å fremme langsiktig i stedet for kortsiktig tenkning. Quick sanity check, if you notice your organization hiring more bean counters than innovators, you may already be on the downward spiral.


VMware Fast Path Versus Slow Path Firewalls

August 30th, 2010 by Chris No comments »

Many of us are now working with virtual firewalls. I did an earlier post regarding the strengths and weaknesses of security within the virtual realm , but today I want to talk about the firewalling possibilities with VMware. There has been a lot of excitement regarding VMware's relatively new VMsafe API . Specifically, everybody is scrambling to create/deploy fast path firewalls. But are all fast path implementations created equal? Are there security concerns with going with a fast path solution? Let's dive in and see.

Breakdown of VMsafe

With the release of the VMsafe security API, VMware has enhanced the options available for implementing security within a vSphere environment by permitting vendors to plug directly into the hypervisor at ring 0. VMsafe consists of three components:

  • VDDK – Disk block inspection. API has been publically released.
  • vCompute – CPU and memory API. Has not been publicly released. Unknown which third parties have access, if any.
  • vNetwork – API to monitor/filter between the vNIC and vSwitch. Has not been publicly released. To the best of my knowledge, only Altor Networks & Reflex Systems have access (two vendors who assisted in the development of the API).

Specifically, I want to speak to the vNetwork API. When controlling network traffic flow within an ESX host, there are two possible implementation, “slow path” and “fast path”.

Slow Path

Slow path is the simplest implementation and the one we have been using for years. Effectively this is just a VM guest, similar to any other VM guest, running on the ESX host. Typically each guest is connected to a unique vSwitch, and each of these vSwitches is connected to a unique vNIC on the firewall. This is similar to a legacy firewall setup, but implemented virtually. The benefit of executing in slow path is that you can run a full blow OS with any libraries or services required to support the firewall.

Fast Path

Fast path is effectively a ring 0 driver that plugs directly into the hypervisor kernel. This allows a third party vendor to leverage the hypervisor for insertion between each vNIC/vSwitch connection. Because a fast path driver is running in kernel context, it adds minimal overhead to the system. The result is code execution within fast path is substantially faster than the same code being executed within slow path (thus the VMware naming convention for each context). Load on the ESX host is minimized, so the end result is you can run far more virtual guests.

Fast Vs Slow

So it sounds like you would want to do everything within fast path, but there are a number of issues. Fast path is a kernel driver plugging into a minimized hypervisor, not a full blow operating system. This limits the libraries and services the firewall has available for controlling traffic flow.  Further, we are plugging in a kernel driver so there needs to be assurances that it does not bloat the hypervisor, increase the attack surface or interfere with other hypervisor functions. VMware performs a code review on all fast path drivers prior to release. So if I could theoretically implement all my code in fast path, I would need VMware approval prior to every patch or feature release.

With this in mind, a vendor claiming “fast path” support is actually going to end up implementing a portion of their code as fast path, a portion as slow path, and then create a connector between the two. How much load is placed on the system will depend on how much of this code is implemented in fast path and how much of it is executed in slow path.

Possible Fast Path Deployments

For example, a vendor could choose to write a fast path driver that simply tunnels all packets back to a slow path implemented firewall. The slow path code then determines if the traffic should be passed or dropped, with passed packets being sent back to the fast path code for insertion into the hypervisor control channel. While this would be the easiest method of deploying fast path, and arguably the safest and most secure, it would provide the least performance benefits. System load would probably not be much better than a full slow path implementation. I see this option as being very attractive to legacy firewall vendors, as it would require the least amount of modification to their existing code while still being able to claim “fast path support”.

Another option would be to use the slow path space for administrative functions with the fast path driver acting as the firewall engine. So for example the firewall administrator would create the policy using an interface running on a slow path VM, which would then push the policy down to a fast path driver. In this setup the fast path driver has a copy of the policy so traffic control can be implemented immediately. The result is faster traffic handling with minimal system load. The trade off is bulkier code at ring 0.

It is also possible to implement a mixture of the two. For example I could use the fast path driver to implement the firewall policy, but then pass all “accepted” packets back to the slow path system for intrusion checking, virus scanning, or whatever is needed. Acceptable packets are then passed back to the fast path driver for insertion. So in this setup all “dropped” packets are handled via fast path, while accepted packets interact with a slow path component.

As a side note, you need to keep the above info in mind when considering all vNetwork implementations, not just firewalls. The vNetwork API can also be used for policy enforcement, QoS, gathering of network statistics, etc. For example the very first vNetwork implementation was actually VMWare's Lab Manager. This tool is used for self service provisioning and does not contain a firewall component (this is implemented via vShield).

Summary

While a VMware product that integrates with VMsafe can strictly be a “slow path” implementation, it is highly unlikely that any product can be considered solely a “fast path” implementation. Any fast path product is most likely going to be a hybrid. It is just a matter of how much code exists in the “fast path” space versus the “slow path” space. When a product claims fast path support, you need to dig a bit deeper to analyze the implementation in order to identify any real performance benefits.

Den Comcast Scam

August 25th, 2010 by Chris No comments »

Completely unrelated to security, but was surprised when this happened to me so I thought I would throw out a heads up.

When you pay your credit card or mortgage, there are laws in place to (try) keep the creditors from gouging you. For example if you make a credit card payment, the creditor has to apply that payment to the oldest purchase. If they didn't, they could easily whack you with higher interest and penalties by only paying off recent purchases. The law is designed to provide some level of consumer protection.

Angivelig de samme reglene ikke gjelder for Comcast. Tilbake i juni gikk jeg inn på lokale Comcast kontoret og plukket opp to nye dekodere. Disse gjorde det på min juni bill, som jeg helt gått glipp av på grunn av reise. Jeg har min bank oppsett for å gjøre bilen-betalinger, men i juni automatisk betaling endte opp med å bli $ 18 kort. Gå til juli og jeg hadde det samme problemet. Fant du ikke se på regningen og bare la auto-pay gjøre dens ting. Bortsett fra nå er det ikke bare $ 18 kort, er det $ 18 pluss gebyrer og straff.

Så her er vi i august. Mindre enn 30 dager siden sist jeg gjorde en betaling og Comcast drepte min tjeneste. Telefon, TV og internett alt frakoblet. Da jeg ringte for å finne ut av problemet, ble jeg fortalt min konto var 60 dager forsinket. Etter å snakke med tre forskjellige personer jeg ble fortalt at Comcast har ingen slike krav til å gjelde betalinger til eldste gjeld. Så mens min juli Lovforslaget ble ansett som aktuelle, var min juni regning anses 60 dager forsinket. Dermed avbrudd i tjenesten, samt flere avgifter til rette mens ting ut. Hvis Comcast ble holdt til samme standard som de fleste kreditorer, ville jeg fortsatt skylder dem $ 18. Fordi de ikke er, med sine gebyrstruktur jeg nå skylder $ 47 og at antallet er fortsatt klatring (tilsynelatende deres Tivo-tjenesten ikke kan slås på igjen uten en tjeneste tech).

Postmortem

  • Bundling hjemme tjenester kan spare penger, men gir en ekkel enkelt punkt av svikt
  • Vær forsiktig ved hjelp av en bank basert automatisk betale regninger som kan variere
  • Comcast gebyrstruktur tillater dem til å oppnå en årlig avkastning på 967% dersom du er så mye som $ 1 forfalte, og savner det den påfølgende måned

Er tidevannet snu?

03.06.2010 av Chris Ingen kommentarer »

Jeg har sagt i årevis at anti-virus er ikke lenger virker, og at en god sikkerhet holdning må omfatte søknad hvitt notering. Her er en kul sitat fra George Kurtz, teknisk sjef for McAfee:

"Du kan ikke bare stole på antivirus programvare - og vi er en antivirus selskap. Og brannmurer alene ikke gir tilstrekkelig beskyttelse, sier han.

Antivirus, brannmurer og oppdage inntrenging er en start. Men "hvit liste" tilbyr et sterkere forsvar. Det vil si, egentlig låste datamaskiner ned slik at bare klarerte programmer kan kjøres. Ingenting kan endres eller legges til eller oppdatert, med unntak av en systemadministrator.

McAfee tror "det er der fremtiden går," sa Kurtz.

Link til hele historien

Moteriktig sent til festen, men jeg tar det. ;-)

Er Virtualisert systemer mer eller mindre sikker?

18 mai 2010 av Chris Ingen kommentarer »

Jeg har hatt det over spørsmålet stilte nok ganger at jeg følte det fortjener et blogginnlegg. Mens noen år tilbake svaret kan ha vært "mindre sikker", er i dag svaret "begge". Jeg vet, høres ut som Chris være uforpliktende, men at svaret virkelig beskriver mest nøyaktig den nåværende tilstand av teknologien.

Virtualisering forandrer alt

Jeg har hørt et par folk bemerkning om at virtualisering er i ferd med å påvirke bransjen på samme måte som Internett gjorde på 90-tallet. For å være ærlig, tror jeg det er fortjent i det mening. Tidlig på 90-tallet mest folk kjørte IPX, AppleTalk, NetBUI og en mengde andre protokoller i lukkede nettverk. Ved slutten av 90-tallet, var folk flest kjører IP utelukkende med tilkobling til hele verden. Måten vi gjorde forretninger, samt måten vi søkt sikkerhet, helt endret seg over at 10 år. Både nettverksadministrasjon og sikkerhet ferdigheter som var banebrytende i 1990 var nesten ubrukelige i 1999.

Virtualisering er i ferd med å rampe opp til å ha samme innvirkning på bransjen. Virtualisering distribusjon krever en fullstendig rethinking av hvordan å søke sikkerhet. Tilbake i 1990-tallet, admins som rett og slett koblet til Internett, uten hensyn til hvordan dette ville påvirke deres nettverk, fikk brent stor tid. Vi er kø for å se en lignende konsekvenser som folk vedta virtualisering.

Hva skaper Virtualisering mindre sikker

Achilles hæl for virtualisering er i selve programvaren. Vi håper vi kan stole på programvaren for å holde gjest systemene fra hverandre, så vel som vert og / eller hypervisor. Det er to hovedproblemer med denne forventningen:

  1. Ingen programvare er feilfri
  2. Programvare kan være feilkonfigurert

For noen år tilbake Core Research viste at de kunne bryte ut av en gjest og få full kontroll over verten OS . Mens en hypervisor skal begrense den type eksponering, har vi jo sett tilfeller hvor selv de hypervisor er blitt forbigått . Vi har også sett tilfeller der programvare blir utnyttes kun når du kjører i et virtualisert miljø . Disse lenkene viser et lite tverrsnitt av virtualisering problemene som har blitt oppdaget de siste årene. Google kan gi deg en mer komplett liste hvis du er interessert.

Så en forsvarlig sikkerhet profesjonell kommer til å være forsiktig med blindt stole programvare for å være sikre. Problemet er leverandørene ikke alltid tar den samme tilnærmingen. Ta med VMware ESX (snart ESXi) produkt som eksempel. Mange av oss ble overrasket da en representant VMware annonserte på CanSecWest at det var teoretisk umulig å angripe ESX hypervisor . Når vi bare anta noe er ubrytelige, noen mer kreative kommer til å finne ut en måte å slå gjennom .

En av mine største bekymringer med ESX / ESXi er at VMware har utviklet det til å være modulbasert (via VMSafe ). På pluss-siden, betyr dette at eksterne leverandører kan lage produkter for å forbedre hypervisor funksjonalitet og sikkerhet. På nedsiden dette dramatisk øker sjansene for dårlige koden innføres som kan kompromittere sikkerheten.

Vi har sett et godt eksempel på dette i det siste. Marcus Ranum skapte Gauntlet brannmuren, som på den tiden var en av de mest sikre og sparke rumpe sikkerhetsenheter tilgjengelig. Når tre brev byråene ville den beste sikkerheten, snudde de til Gauntlet. Marcus solgt Gauntlet til Network Associates (senere ble McAfee) som straks begynte å legge på funksjoner. Det var ikke lenge før en jevn rekke svakheter ble oppdaget, hver introdusert av disse nye "egenskaper". Derfra produktet mistet sin sikkerhet cred og skled ut av radar.

Nå er det absolutt mulig å legge til funksjoner og holde ting sikkert. De FreeBSD foreldre er et utmerket eksempel på hvordan du gjør dette riktig. For å sikre sikkerheten de holder en meget streng revisjon prosessen . Er det perfekte? Absolutt ikke, men deres revisjon prosessen har satt standarden for sikker programvare implementering. Med noe hell VMware vil gjøre det samme, men jeg har ikke hørt noe buzz om dette være tilfelle.

Få Your Head Straight

OK, så vi kan ikke blindt stole på virtualisering programvare holde angripere i sjakk. Vi kan imidlertid fortsatt ta forholdsregler for å minimere virkningen dersom den verste forekommer. En av de største du kan gjøre er å nøye vurdere hvilke servere får kroen, og hvilke andre gjester systemer har tillatelse til å kjøre på samme boks. Sikkerhetssonen begrep som brukes av nettverket arkitekter er like aktuelt her.

En sikkerhetssone er rett og slett en samling av systemer som deler samme relative nivå av risiko. For eksempel web, og SMTP-servere er vanligvis alle ligger i en DMZ, fordi de alle deler tilsvarende risiko fra direkte angrep. På den interne delen av nettverket, er stasjonære vanligvis plassert i en annen sikkerhetssone enn servere. Dette er fordi serverne har liten eller ingen tilgang til Internett, mens stasjonære datamaskiner er som regel lov til å kommunisere direkte. Dette setter skrivebordene høyere risiko for angrep enn servere.

Vi kan bruke den samme logikken ved implementering av virtualisering. En DMZ server og en intern server bør ikke være gjester på den samme maskinvaren (både CPU og disk array). Gjør du det kan gi en angriper å opprette en alternativ rute inn i nettverket vårt. I stedet for å måtte passere gjennom en brannmur, NIDS, NIPS osv. enheter som har vært utplassert på ledningen, kan en angriper kan få tilgang til interne ressurser via virtualisering programvaren. Er det en enkel angrep? Ikke fra det vi har sett så langt. Funksjonell utnytter har blitt oppdaget imidlertid så hvorfor innføre unødig risiko hvis vi ikke må.

Forresten, bør de samme sikkerhetssone regler blir satt inn på virtualiserte nettverket gir. For eksempel er det en dårlig idé å bruke de samme fysiske bytte til VLAN DMZ og det interne nettverket. Jeg har sett et par kunder får whacked den måten.

Hva skaper Virtualisering sikrere

Heldigvis fra et sikkerhetsperspektiv, er virtualisering ikke alle dårlige nyheter. Faktisk er det noen veldig kule sikkerhetsrutiner du kan bruke i et virtualisert miljø som du bare ikke kan gjøre uten. Dette var en av grunnene til at vi begynte å bruke virtualisering innen Honeynet så tidlig som 2000.

En av de største sikkerhetsproblemene vi står overfor i dag, er kjernen nivå rootkits . Det som gjør denne stammen av malware så skummelt er det snur effektivt selve operativsystemet til malware. Dette gjør påvisning ekstremt vanskelig, som alle sikkerhetskontrollene må passere gjennom kjernen. Dersom kjernen i seg selv er kompromittert, kan vi ikke stole på kjernen til nøyaktig rapportere sikkerhetsinformasjon. Vi ender opp med å måtte nedleggelse systemet, montere stasjonen på en kjent for å være ren OS, og utføre våre rettsmedisinske sjekker derfra. Å selvfølgelig problemet med denne prosessen er at den ikke skalere bra. Hvis vi har dusinvis eller hundrevis av servere, er det rett og slett ikke nok tid i dag til å sjekke dem alle riktig.

Som nevnt tidligere, er VMware nå tillater tredjepartsleverandører tilgang til hypervisor API via VMSafe. Dette tillater tilgang til privilegert statusinformasjon, som hukommelse og nettverkstrafikk, på hver av gjestenes operativsystemer. Ved å plugge inn i hypervisor, noen ekstremt kule sikkerhetsalternativer bli mulig.

For eksempel la oss si en gjest OS er angrepet av en kjerne nivå rootkit. Ved å analysere gjest minne, kan rootkit bli oppdaget utenfor den virtuelle operativsystem. Når du utfører kontrollene via hypervisor, er det langt mindre sjanse for at et rootkit kan stealth sine aktiviteter og gå usett. Som nevnt tidligere, ikke er noen sammenlignbar alternativ med et ikke-virtualisert system.

API plug skaper også nye muligheter for å håndtere kryptert trafikk. Når ende til ende kryptering er ansatt (som en VPN), basert kontroller av applikasjonslaget er lett omgås. Din eneste reelle alternativet var å kjøre agent programvare på slutten, slik at sikkerheten kan bli implementert etter dekryptering prosessen. Selvfølgelig er problemet her er at hvis agent blir angrepet, er alle spill av. Igjen, ved å koble inn i hypervisor vi er i en bedre posisjon til tryggere granske disse dataene.

Vi er bare å begynne å se nye produkter som utnytter VMSafe API pluggen . Siden alle produktene er relativt nye, er juryen fortsatt ute på hvor effektive de kan være. Tilbud kjøre gambit fra å erstatte vert basert brannmur og IDS beskyttelse til full politikk håndheving. Det vil være interessant å se hvordan dette produktet nisje rister ut over neste år.

Sammendrag

Så som jeg nevnte i begynnelsen av dette innlegget, har virtualisering muligheten til å gjøre miljøet enten mer eller mindre sikker, avhengig av hvordan du distribuerer den. Hvis du bare begynne alt på en enkelt boks, er du sannsynligvis kommer til å få whacked. Hvis du utvide beste praksis som er blitt utviklet i årenes løp inn i virtualisering riket, samt utnytte noen av de nye sikkerhetsfunksjonene som gis ut, kan du faktisk lage en bedre total sikkerhet holdning.

Kombinere Logwatch og OSSEC - Del 4

18 februar 2010 av Chris 3 kommentarer »

I mitt siste innlegg installerte vi Logwatch samt OSSEC. Det er nå tid for å få Logwatch og OSSEC spille sammen i den samme sandkassen. I dette innlegget vil jeg diskutere hvordan du får Logwatch å oppsummere den informasjonen som blir generert av OSSEC.

Distribusjon Alternativer

Vi har to veier vi kan følge for å sette dette opp:

  1. Har Logwatch analysere OSSEC loggene direkte.
  2. Har OSSEC sende sin varsler til en Syslog type server, så løpe Logwatch på Syslog serveren.

Fordelen til opsjonsavtaler # 1 er at vi kun trenger ett system. Logwatch skal kjøres på systemet vert for OSSEC serveren. Problemet skal vi kjøre inn innebærer imidlertid OSSEC varselet filen. Loggoppføringer ikke får normalisert. Dette betyr at formatet kan endre seg fra oppføring til oppføring, og kan også spres over flere linjer. Det kommer til å være et reelt mareritt å opprette en Logwatch skript som vil filtrere og oppsummere varselet informasjon.

Hvis vi går med alternativ # 2, vil vi kreve en annen boks for å opptre som vår sentralisert logging server. For å få OSSEC serveren godtar loggoppføringer fra ikke-agent systemer, har det å høre på UDP/514. Dette er den samme port som brukes av en sentralisert logging server, og du kan ikke ha to programmer dele de samme port (unntatt med Windows, men socket-tilgang er ekstremt rotete). På pluss-siden, vil den varsle oppføringene blir normalisert når de er overført til syslog serveren slik skape en Logwatch sammendrag skript vil bli langt enklere. Videre Logwatch allerede vet om den vanlige Syslog filene, så vi vil ha mindre tilpasning arbeid å gjøre.

Til slutt, nevnte jeg i et tidligere innlegg at OSSEC ikke er designet for å være et SIM. Dette er fordi den ikke opp alt, bare de hendelser som genererer et varsel. Så vi er trolig kommer til å ha en sentralisert server uansett, og det er fornuftig å ha den lagre den informasjonen som blir generert av OSSEC.

Så hvis det høres ut som jeg er styringsgruppe du mot alternativ # 2, du er helt korrekt. Med det sagt, jeg er faktisk skal dekke alternativ # 1 som det er et langt mer komplisert oppsett.

Takle dato / klokkeslett stempler

Ta en titt på de viktigste OSSEC logfile og du bør se omtrent slik ut:

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

2010/02/18 12:32:05 ossec-rootcheck: INFO: Ending rootcheck skanne.

2010/02/18 14:27:06 ossec-syscheckd: INFO: Fra og syscheck skanne.

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

Legg merke til måten dato / tidsstempel er formatert. Dette er annerledes enn de fleste applikasjoner, så det første vi trenger å gjøre er å fortelle Logwatch hvordan man skal håndtere dette formatet. Vi må lage et skript som vi kan ringe ved behov som forstår formatet som vises ovenfor.

Start med å flytte inn i felles scripts katalogen:

cd / usr / share / logwatch / scripts / delt

Ved hjelp av et redigeringsprogram, oppretter du en fil som heter "applylongdate":

vi applylongdate

Her er hva du trenger på innsiden av denne filen. Føl deg fri til å kopiere / lime inn fra denne siden:

Bruk Logwatch ': datoer';

min $ Debug = $ ENV ('LOGWATCH_DEBUG') | | 0;

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

if ($ Debug> 5) (

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

print standardfeil "DEBUG: Looking for:". $ SearchDate. "\ N";

)

mens (definert ($ ThisLine = <STDIN>)) (

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

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

print $ ThisLine;

)

)

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

Når du lagrer filen, vi nå må stille de nødvendige tillatelsene:

chmod 755 applylongdate

Konfigurer loggfilene

Neste vi trenger å fortelle Logwatch hvor OSSEC loggen filene ligger. Når du legger til nye loggfiler eller lage nye tjenester til skjermen i Logwatch, bør du plassere endringene under / etc / logwatch katalogen. Vi kommer til å lage to konfigurasjonsfiler. Den første vil håndtere OSSEC meldinger, og den andre skal håndtere OSSEC varsler og aktiv respons endringer.

La oss starte med å opprette konfigurasjonsfilen for de viktigste OSSEC loggfil:

cd / etc / logwatch / conf / loggfiler

vi ossec.conf

Innholdet i filen skal være som følger:

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

* ApplyLongDate =

Nå kan du lagre og lukke filen. Deretter vil vi lage config-filen for resten av loggfiler:

VI ossec-alert.conf

Innholdet i denne filen skal være som følger:

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

Logfile = / var / ossec / logger / varsler / alerts.log

Logfile = / var / ossec / logger / brannmur / firewall.log

Når den er ferdig, lagre og avslutte. Standardtillatelsene bør være akseptabelt for setup vår.

Konfigurere OSSEC Tjenester

Deretter må vi definere OSSEC tjenester og finne ut hva vi ønsker å bruke som tittel når rapportene er generert. Slik oppretter du den første filen:

cd / etc / logwatch / conf / tjenester

vi ossec.conf

Innholdet i denne filen er ganske enkelt:

Title = "OSSEC Meldinger"

Logfile = ossec

Når du har gjort kan du lagre og avslutte. Vi må lage enda en fil i denne katalogen:

VI ossec-alert.conf

Innholdet i denne filen skal være:

Title = "OSSEC Alerts"

Logfile = ossec-varsel

Når den er ferdig, lagre og avslutte som vanlig.

Analysere Entries

Deretter må vi fortelle Logwatch hvordan du formaterer loggen oppføringer i rapporten. Vi må opprette en tilpasning skript for hvert sett av tjenester. Vi kommer til å starte med å bruke en Logwatch medfølgende testskriptet, bare for å sørge for at alt fungerer.

Start med å flytte inn i den aktuelle katalogen:

cd / etc / logwatch / scripts / tjenester

Bruk din favoritt editor for å lage din første skriptet:

vi ossec

Innholdet i manuskriptet skal være som følger:

#! / Bin / bash

# Dette er like fin skript som vil vise deg de linjene du vil

# Være behandling og rapportering. Det vil først vise

# Standard miljøvariabler, og så tar det STDIN og

# Dumpe det rett ut igjen til stdout.

# Dette er standard miljøvariabler. Du kan angi

# Mer i ditt config-filen (se over).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detaljnivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Reg: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nå tar STDIN og dumpe det å STDOUT

cat

Nå oppretter andre skriptet:

VI ossec-varsel

og ta med nøyaktig samme innhold:

#! / Bin / bash

# Dette er like fin skript som vil vise deg de linjene du vil

# Være behandling og rapportering. Det vil først vise

# Standard miljøvariabler, og så tar det STDIN og

# Dumpe det rett ut igjen til stdout.

# Dette er standard miljøvariabler. Du kan angi

# Mer i ditt config-filen (se over).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detaljnivå: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Reg: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nå tar STDIN og dumpe det å STDOUT

cat

Til slutt må vi stille de riktige tillatelsene:

chmod 755 ossec *

Testing av installasjonen

Den enkleste måten å teste vårt nye oppsett er å kjøre kommandoen:

logwatch | mindre

Hvis du bare vil se endringene, kan du kjøre en rapport på hver service, en om gangen:

logwatch-tjenesten ossec | mindre

logwatch-tjeneste ossec-varsling | mindre

Ytterligere tilpassing

Når du får alle de ovennevnte arbeider, kan du fokusere på å få Logwatch å filtrere og oppsummere loggoppføringene. Logwatch er ganske fleksibel, og du kan tilpasse resultatet akkurat slik du vil. En av de fine ting om det over testskriptet ovenfor, er at den viser deg nøyaktig hva du har å jobbe med. Så med litt vanlig uttrykk magi du kan oppsummere oppføringene som du finner hensiktsmessig. For noen ideer, sjekk ut filene som ligger under:

/ Usr / share / logwatch / scripts / tjenester

Disse er standard sammendraget skriptene følger med Logwatch. Nærmere bestemt, ta en titt på filene "Pam" og "sshd". De er gode eksempler på både en enkel og et komplekst sett av sammendrag filtre.

Etter hvert som du utvikler din skript være oppmerksom på $ LOGWATCH_DETAIL_LEVEL "variabel. Dette vil tillate deg å tilpasse utgangsnivået av rapporten avhengig av hvor mye detaljnivå brukeren er ute etter. For eksempel mens du fortsatt er i tjenestene ovenfor katalog, kjører du følgende kommando:

mindre sshd

Når den første siden av innholdet i filene vises, skriver du følgende:

/ Detalj <Skriv Key>

Den omvendte skråstreken lar oss søke i filen for et bestemt tekststreng. I dette tilfellet er vi søker etter ordet "Detail". Når du trykker Enter søket hoppe gjennom filen til den finner første forekomsten av tekststreng. Det vil også markere søkestrengen. I den første kampen vil du legge merke til at forfatteren tildelt variabelen "$ Detalj" for å være den samme som den variable $ LOGWATCH_DETAIL_LEVEL ". Dette er å spare dem litt å skrive.

Nå trykker du på tasten igjen backslash etterfulgt av Enter-tasten. Dette vil hoppe gjennom filen til neste forekomst av "Detail". Du bør se:

if ($ Detail> = 20) (

$ Brukere ($ Bruker) ($ Host) ($ Metode) + +;

) Else (

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

$ Brukere ($ Bruker) ($ Host) ("(alle )"}++;

Merk at forfatteren er mer informasjon om detaljnivået er satt til 20 (midt mellom lav og medium) eller høyere. Hold hoppe gjennom filen og du vil se andre eksempler der forfatteren utnyttes denne teknikken.

Nå side ned til slutten av filen og du burde se denne uttalelsen:

if (nøkler% OtherList) (

print "\ n ** Uslåelig Entries ** \ n";

print "$ _: $ OtherList ($ _) gang (er) \ n" foreach nøkler% OtherList;

)

Denne delen er svært viktig, ettersom det er en avsluttende oppsamlingsadresse. Tenk på en brannmur politikk for et øyeblikk. De fleste av oss lage en endelig regel som sier, "Hvis jeg ikke spesifikt tillater en trafikk mønster gjennom, nekte for det". Med andre ord, hvis noe uventet skjer, dette er hvordan jeg vil at du skal håndtere det.

Ovennevnte uttalelse tjener samme formål under analyse av loggfilen. Alle de tidligere "hvis" utsagn forsøker å matche en bestemt tekststreng i loggen for å formatere den riktig. Denne oppføringen sier "Hvis du ikke har matchet og trykte en bestemt logg posten ennå, skrive den ut i et avsnitt med tittelen" ** Uslåelig Entries ** ". Dette trinnet er svært viktig fordi uten den vil vi aldri se uventede oppføringer. Det er den uventede innganger som sannsynligvis er den viktigste og mest interessante.

Exec Summary

Både OSSEC og Logwatch er utmerket gratis verktøy. OSSEC utmerket til advarsel når et kjent mønster angrep finner sted. Logwatch er et veldig bra verktøy for oppsummering av en tid blings av logger, slik at mennesker faktisk kan gjøre følelse av hva som skjer. Ved å kombinere de to verktøyene kan du lage en langt mer robust forsvar i dybden stilling. Hele blir større enn summen av delene.

Kombinere Logwatch og OSSEC - Del 3

17 februar 2010 av Chris Ingen kommentarer »

I mine siste to innlegg drøftet jeg Logwatch og OSSEC, samt hvordan de kan dra nytte av å øke din sikkerhet holdning. I denne avbetaling vil jeg diskutere hvordan du installerer begge disse verktøyene.

Installere Logwatch

Logwatch er ganske enkel å installere. Faktisk er det installert som standard på mange Linux-distribusjoner, slik at du kanskje allerede har en kopi på systemet. Hvis du vil kontrollere, pålogging som root og prøv å kjøre Logwatch med "-v" bryter. Hvis du ser:

[Root @ Fubar logwatch] # logwatch-v

Logwatch 7.3.6 (utgitt 05/19/07)

Logwatch er installert og du har en kopi av den nyeste versjonen. Hvis du ikke har den nyeste versjonen, kan du hente det fra Logwatch nedlastingssiden .

Det er tre varianter av Logwatch som kan lastes ned; Binærfiler i RPM-format, kilde i RPM-format, eller kilde i et Tar ball. Hvis systemet ditt støtter RPM pakkesystem, den binære RPM er ditt beste valg. Det er enkelt å installere og RPM vil automatisk oppdatere programvaren når nye versjoner er tilgjengelige.

Installere Logwatch Fra RPM

Hvis du vil installere den binære versjonen av RPM, bare pålogging som root og navigere til katalogen der du har lastet ned RPM filen. Nå utføre kommandoen:

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

Glem ikke at du kan bruke TAB for å auto-fullføre filnavn i stedet for å måtte skrive inn hele greia.

Installere Logwatch fra Kilde

Installere fra source er litt mer tidkrevende. Husk at for å installere kildekoden må du allerede har en kompilator (som gcc) installert på systemet ditt. Pålogging som root og navigere til katalogen der du har lastet ned Tar ballen. For å pakke ut arkivet, utføre kommandoen:

tar xvzf logwatch-7.3.6.tar.gz

Du vil se en katalogstruktur under stedet der du befinner få laget og masse filer som kopieres i. Vi må nå flytte inn i den øverste katalogen som ble laget:

cd logwatch-7.3.6

For Logwatch å kjøre, er det en haug med kataloger som må opprettes på systemet ditt. Dette er dokumentert i README i gjeldende katalog. Heldigvis inneholder Logwatch en installerer skript som kan gjøre alt arbeidet for deg. Dessverre har skriptet feil tillatelser satt slik at den ikke vil kjøre som standard. Dette er ganske enkelt å fikse men med chmod kommandoen:

chmod 500 install_logwatch.sh

Nå kan vi kjøre skriptet å sette opp systemet vårt:

. / Install_logwatch.sh

Ikke glem den perioden på begynnelsen av linjen.

Testing Logwatch

For å teste Logwatch oppsettet, utføre kommandoen:

logwatch | mindre

Du vil se din terminal skjermen gå tom, men det er normalt. Du vil etter hvert se en Logwatch rapport får skrevet ut til skjermen som du kan navigere gjennom ved hjelp av "Page Up" og "Page Down"-tastene. Hvordan logger det tar for rapporten skal vises på skjermen vil avhenge av hvor mye logginformasjonen trenger å få analysert. Det kan ta noen sekunder eller et par minutter. Uansett vil det gi deg en sjanse til å gjøre deg kjent med rapporten format.

Installere OSSEC

Som jeg nevnte i mitt siste innlegg, har du to alternativer installasjon med OSSEC, lokale eller klient / server. I dette innlegget skal jeg fokusere på klient / server setup, som det er litt mer komplisert. Hvis du utfører en lokal installasjon, velger du bare "lokale" valget under installasjonen, og hoppe over den delen om å sette opp en sikker kanal mellom agent og serveren.

Start med tjeneren

OSSEC bruker Blowfish kryptering for å sikre kommunikasjon mellom klienten og serveren. Blowfish er symmetrisk nøkkel basert, slik at begge sider må vite hva nøkkelen verdi som skal brukes for å kommunisere. Serveren er ansvarlig for å generere den symmetriske nøkkelen, så vi må installere serverprogramvaren først. Under kunden installerer vi vil bli spurt om en nøkkel verdi så åpenbart vi trenger å ha det praktiske forut for sin tid.

Her er et tidsbesparende tips. Nøkkelen verdien er lang og nesten umulig å huske. Den enkleste måten å flytte nøkkelen verdien fra serveren systemet til agent systemet er å bruke SSH. Opprette en sikker forbindelse til OSSEC serveren, og pakke den aktuelle tasten (veibeskrivelse nedenfor). I et annet terminalvindu, opprette en SSH sesjon til systemet hvor du skal installere agenten. Når klienten installerer ber deg om nøkkelen verdien, kan du bare kopiere / lime mellom de to terminalene.

Installere OSSEC Server

Serverprogramvaren er tilgjengelig som en Tar ball, slik at du kan ta en kopi av den nyeste versjonen fra OSSEC nedlastingssiden . Du må da pakke ut innholdet i Tar ballen:

tar xvzf ossec-hids-2.3.tar.gz

Deretter flytter inn i katalogstrukturen du nettopp opprettet:

cd ossec-hids-2.3

OSSEC gir en installerer skript for å lede deg gjennom prosessen med å installere serveren. For å starte skriptet, type:

. / Install.sh

Ikke glem perioden på begynnelsen av kommandoen. Du vil nå bli bedt om gjennom en rekke installasjonsalternativer:

  • Språk - Standard er engelsk. Endre etter behov.
  • Stadfesting av installasjon - Trykk Enter når du har lest skjermen.
  • Installere type - Skriv inn "server" uten anførselstegn, og trykk Enter.
  • Installere beliggenhet - Godta standard.
  • E-post varsling - Standard er ja, velge om du vil e-postvarsler. Hvis du velger ja, vil du bli bedt om en gyldig e-postadresse og e-postserveren.
  • Integritet sjekk - Standard er ja. Velg om du vil at lokale systemet regelmessig kontrolleres for inntrenging.
  • Root kit gjenkjenning - Standard er ja. Godt alternativ siden vi trenger for å opprettholde en høy grad av integritet på dette systemet.
  • Aktiv respons - Standard er ja. Velg dette alternativet hvis du ønsker å være i stand til å reagere på hendelser.
  • Brannmur drop - tillater OSSEC serveren til å forsvare seg selv om et direkte angrep blir oppdaget.
  • White list – This will permit you to add IP addresses from which possible attacks will be ignored. Be careful with this option. If you will not have console access to the OSSEC server, it might be wise to identify one IP address that can always get in. Just ensure the source IP is a trustworthy system.
  • Enable Syslog – Default is yes. Select this option if you wish to collect logs from system that cannot run an OSSEC agent (like firewalls, switches, routers, access points, etc.).
  • Log files to be monitored – This screen identifies all of the local log files OSSEC will monitor. It is purely information, so all you can do is press Enter to move past it. If you notice one or more log files missing from the list, you can add them later to the ossec.conf file.

At this point OSSEC will access the local complier and install all needed files onto the system. Once complete, you can start the OSSEC server by executing the command:

/var/ossec/bin/ossec-control start

Defining OSSEC Agents

We are not done with the OSSEC server just yet. Next, we need to pre-define any systems that will be running the OSSEC agent (client) software. This is performed using the manage_agents command. First however, we need to do a bit of homework. Make a list of all of the systems that will be running the OSSEC agent software. For each system, you will need a descriptive name as well as that system's IP address.

Now, execute the following from the command line:

/var/ossec/bin/manage_agents

This will produce the Agent Manager main menu. Press “A” followed by the Enter key to define your first system. Enter a descriptive name for the first system, followed by the system's IP address. Don't worry about the agent ID number. Simply accept the default and OSSEC will auto-assign the next available ID number. Once you confirm the information you entered, you will be returned to the Agent Manager main menu. Repeat the above process for each system that will be running an OSSEC agent.

Generating Keys

Once you have added in all of your systems, it is time to generate encryption keys. This step is also performed with the manage_agents utility. If you closed the tool after the last step, relaunch it now.

Press the “E” key followed by Enter to select the “Extract key for an agent” menu option. You will then be prompted for the ID number of the key you wish to extract. The descriptive names and IP addresses are listed with each ID number, so it should be trivial to identify which one you want. Start with the system you plan to install the agent software onto first.

OSSEC Agent Install On Linux

When installing the agent software on a Linux or UNIX client, you use the exact same Tar ball we used to install the server software. Run the same install script, but this time when you are prompted for the type of install you wish to perform, type in “agent” followed by the Enter key.

The client install has many of the same prompts as the server install. Use the info above to guide you through the process. The prompt that will vary however is that you will be asked to provide the IP address of the OSSEC server. Once complete, OSSEC will access the local complier and install all required files onto the system.

Next we need to import the Blowfish key from the OSSEC server. While still on the agent system, run the command:

/var/ossec/bin/manage_agents

When the Agent Manager menu appears, select “I” to import the Blowfish key.

When the next prompt appears, you need to manually enter the appropriate Blowfish key. Again, if you are running SSH to both systems at the same time, you can simply copy/paste between the two terminals. Make sure the key looks correct, press the Enter key, and then select “y” to confirm that the key looks correct. You will be returned to the Agent Manager menu. Select “q” in order to return to the command line.

Now we simply need to start the OSSEC agent. You can do so by executing the following command:

/var/ossec/bin/ossec-control start

You should see all of the OSSEC agent components start up, followed by a “Completed” message.

OSSEC Agent Install On Windows

OSSEC has a self-extracting executable that will permit you to install the agent software on a Windows system. Simply double click the executable to start the install process. You will be prompted to agree to the license as well as which components you wish to install. Simply follow the prompts till the OSSEC Agent Manager window appears.

The OSSEC Agent Manager window will prompt you for the IP address of the OSSEC server. It will also prompt you for the Blowfish key value to use, so extract the appropriate key on the server and enter the value in this field. Make sure you delete the prompt within this field before you paste in the Blowfish key. Otherwise communication with the server may fail.

Next, select “Manage” from the OSSEC Agent Manager menu, followed by “Start OSSEC”. You should now see the “Status:” indicator change to “Running…”.

Testing OSSEC

Once you have the server and agent software installed, started and the appropriate keys configured, it is now time to check our setup. Execute the following command on the OSSEC server:

cd /var/ossec/logs

And check out the ossec.log file:

less ossec.log

Check the log file for any errors. A common error is that OSSEC reports it cannot send e-mail. Make sure the mail server is running and that it is accepting connections. Once you are happy with the server setup, it is now time to check out the agents. Move down to the “alerts” directory:

cd alerts

And check out the alerts.log file:

less alerts.log

Specifically, you are looking for entries similar to the following:

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

Rule: 501 (level 3) -> 'New ossec agent connected.'

Src IP: (none)

User: (none)

ossec: Agent started: 'test_system->192.168.1.10′.

You should see an entry for every system on which you installed the agent software.

More To Come

Whew! That's more than enough for one post! In my next post I'll get into leveraging Logwatch to parse all of the alert information being generated by OSSEC.

Combining Logwatch and OSSEC – Part 2

February 16th, 2010 by Chris No comments »

In my last post I described how Logwatch could be used to simplify the log review process. In this post we'll look at OSSEC and what it brings to the table.

What Is OSSEC?

OSSEC , short for “Open Source SECurity”, is a host based intrusion detection system (HIDS). In other words, it is designed to detect attacks or policy violations if and when they occur. While it does not have the ability to protect against unknown or 0-Day attacks (that would be host based intrusion prevention), it does include a wide range of tools which can help you identify an intrusion when it occurs, as well as the extent of the damage that has been caused.

Supported Platforms

To take advantage of all of the features OSSEC has to offer, you have to run an agent on the system being protected. OSSEC agents can run on Windows, Mac OS X, Linux, and a wide range of UNIX systems. If you are just interested in the log analysis portion however, an even wider range of systems can be supported. This includes hardware from both Cisco and Juniper. A number of specific products are also supported like Checkpoint firewalls, Symantec Anti-Virus, Snort, Squid, and Arpwatch, just to name a few.

When you install OSSEC you have two configuration options, local or client/server. A local install is used when you need to run everything on a single system. The client/server installation lets you run a distributed environment protecting multiple systems at the same time. While most deployments are client/server based, if you want to give OSSEC a spin you can easily run everything on a single test system using a local install.

Log Analysis

OSSEC includes a Log-based Intrusion Detection System (LIDS). This has the ability to review log files in near real time, while scrutinizing them for known attack patterns. When a log is generated on a protected system, the agent takes care of securely transmitting the log (Blowfish encryption using a pre-shared secret) back to the server. The server then takes care of performing the analysis.

Most log analysis tools process their rules in a linear format. By that I mean if we have 500 rules, rule one is checked, then rule two, then rule three and so on till a match is found or we reach the end of the rule set.  OSSEC works a bit differently as it implements a hieratical structure to the rules. Log entries are first classified and then checked only against whichever rules are appropriate. The result is that rather than needing to process all 500 rules, most events will get checked against 10 rules or less. This dramatically reduces the amount of overhead required to process the rule set.

Integrity Checking

OSSEC includes a tool called Syscheck for performing file and directory integrity checking. If you are running a Windows agent, you can also include specific keys within the Windows registry to be monitored as well. File changes can be detected using both MD-5 and SHA-1 hash algorithms. The system is extremely customizable. You can include or exclude single files, or entire directory structures. You can even set a flag to detect new file creation.

The agent software is designed to use a minimal amount of CPU during the integrity check. While this means the check will take longer, it also helps to minimize the performance hit to the system. Hash information is transmitted back to the server. The server then takes care of performing the hash comparison to see if any of the system's critical files have been changed. The server also stores a copy of the integrity check policy, so that if policy changes are made on the agent, they can be detected and reported as well.

Anomaly detection

OSSEC goes far beyond log checking to verify system integrity. Usage policies can be centrally managed from the server, and then pushed out to the appropriate agents. For example you could define a policy regarding which Windows applications are acceptable (Office, Firefox, etc.) and which ones are not (IM client, Skype, etc.). You can even define acceptable configuration options like verifying that NT hashes are being used for password stored but not LanMan hashes.

OSSEC includes a number of other goodies in order to help verify a system's integrity. For example OSSEC has the ability to execute commands from the agent and monitor the output that gets generated. For example you could have the Linux agent execute the “df” command at regular intervals and generate an alert if disk usage exceeds 90%. A Windows example may be to have OSSEC generate an alert whenever file information is written to the alternate data streams area of NTFS.

Active Response

Finally, OSSEC includes the ability to respond when suspicious activity is detected. Responses can be generated from the server or the agent, which ever you specify. Responses can be as benign as generating an e-mail alert, to being as proactive as blocking a remote IP address for a limited amount of time. There are a number of included active response scripts you can draw on, or you can easily write your own.

Secure Architecture

The OSSEC authors have gone to great lengths to secure all of the components within the product. Tasks such as integrity checking are performed on the server, rather than the agent, so the trustworthiness of the hashes cannot be compromised during an attack. Processes are run with the lowest level of permissions possible, and different accounts are used to run each OSSEC component. This means that a compromise of a single application within OSSEC will not immediately lead to a compromise of the full package. Further, most components are run within a chrooted jail so their access to the system is even further restricted.

Final Words

While OSSEC is a powerful tool, it is important to remember that it is a HIDS and not a log management solution. OSSEC can review log entries looking for suspicious patterns, but it will only save alert information. So while OSSEC will not replace your Security Information Management (SIM) solution, it can most certainly augment it. You can easily setup OSSEC to forward all alerts it generates to a central logging server .

While OSSEC is open source software, Trend Micro is primarily developing it. If you need commercial support, you can purchase a support contract through them at a reasonable fee.

More To Come

In my next installment we'll look at installing OSSEC and Logwatch. After that, we'll move into integrating the two together.

Combining Logwatch and OSSEC

February 15th, 2010 by Chris No comments »

I recently had a student ask me a question regarding the integration of Logwatch with OSSEC. I felt like this was a complex and yet cool enough idea that it warranted a series of posts to cover it in full. So over the next few days I'll talk about each of these tools, how to integrate them together, as well as what additional security visibility can be gained once the process is complete.

What Is Logwatch?

Logwatch is an excellent open source tool for generating daily human readable log reports. Log entries tend to fall into one of three categories:

  • Stuff you know is evil
  • Stuff you know is normal and can be safely ignored
  • Everything else

It is that “everything else” category where Logwatch really shines. For the stuff we know is evil, we will setup some form of alerting system. For example we may write an alert signature that warns the security analyst when an account is being brute forced. But what about the attacks we don't know about or are not sure what they look like? This would be a clear example of that “everything else” category. The traffic is not normal, but we have not seen it before to have a signature waiting to generate an alert. Since we will be unable to catch the attack in real time, we will need to catch it during a daily log review.

Of course the problem with doing daily log reviews is that it is tedious and time consuming. I mean let's be honest, who really wants to spend their day reviewing one million plus log entries? Even if you did, are you sure you would actually catch the out of the ordinary traffic?

How It Works

What Logwatch does very well is permit you to reorganize your data into a format that is easier for humans to follow. Its real strength is that it permits you to move the stuff you understand out of the way (normal or evil), so that the unexpected log entries stand out like a sore thumb. In other words, Logwatch lets you summarize your log entries so the unusual stuff is easier to spot.

What I really love about Logwatch is that you don't lose anything. Many log review tools will only show you the stuff that has been pre-defined as being evil. The problem they all share is that when something evil but unexpected happens, it flies right under the wire. Because Logwatch lets you see everything, you no longer miss the unexpected.

Logwatch In Action

Lets discuss how Logwatch works using the SSH server service as an example. The scripts to deal with SSH have already been defined within Logwatch, so you do not need to do any tweaking to receive the features we are going to discuss.

When reviewing a log file, the first thing Logwatch does is reorganize log entries based on their message types. For example all Successful SSH logons are grouped together, as well as too many logon failures, refused connections, locked accounts, accounts without a proper shell, protocol mis-matches, etc. etc. etc. Once all the SSH messages are grouped by their type, the data is then summarized to reduce the amount of information being reported.

For example, the default is to summarize failed logon attempts by account and source IP. So a typical failed logon report section might look like this:

Failed logins from these:

bsmith/password from 1.2.3.4: 637 time(s)

jsmith/password from 1.2.3.5: 2 time(s)

So rather than having to review 639 log entries reporting a bad logon attempt, we have all the pertinent information summarized into three lines (if you include the title). Continue this process for all of the other SSH messages, and we have dramatically reduced the amount of time required to review our logs.

But what if something happens that Logwatch is not pre-programmed to recognize? When an unexpected log entry is found, Logwatch adds a section to the end of the service report called “Unmatched Entries”. So if we see this title in the SSH server section, we know some event has occurred that is either abnormal or unexpected for the SSH service. This could very well be some form of attack that we are not aware is making the rounds.

By focusing in on the unmatched entries section, we can quickly identify unexpected activity. As I stated earlier, this is really the main goal of doing daily log reviews. To find the stuff we don't expect which will sneak past our alerting system. Logwatch makes this process as quick and as painless as possible.

Feature Summary

In the above example I talked about doing daily log reviews, but to be honest Logwatch is highly customizable. You can specify any range you wish to use down to an interval of one second. For example let's say I'm investigating an intrusion rather than performing a daily log review. I could specify a range such as “2010/02/14 17:05:00 for that hour” to focus right in on the information that interest me. I can also focus in on one specific log file or service.

The detail level of the report is also customizable. Typically when you deal with security you get in the habit of always wanting the highest detail level of reporting. To be honest, with Logwatch a high level of detail is probably more than you will ever need. Personally I typically stick with “med” for medium and that works out nicely. You can also specify the reporting level as “low” or “high” or use a numeric range of 0-10 for a higher level of granularity (low =0, med=5, high=10).

Logwatch can be run automatically or as a manual process. Typically you will want to set it up to run automatically each day and summarize one day's worth of log entries. If you ever need to expand or focus the report, you can always run Logwatch from the command line while specifying exactly what you want to see. You can then use the “–save” option to specify a report name and directory location for storage.

More To Come

The above should give you a good idea as to the features Logwatch can bring to the table. In the next post I'll discuss OSSEC in the same level of detail. After that, I'll get into how to install each tool as well as how to integrate them together.

Dag 2 Keynote

January 12th, 2010 by Chris No comments »

Thanks to all who came out to the Encryption/DLP summit. Here are the slides from my keynote on day 2.

encryption-dlp-keynote