Linux - Friheden til sikkerhed på internettet: Version 2.9.20060510 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 5. Har du haft net-indbrud? | næste |
Tripwire fra 1992, skabt af Eugene Spafford og Gene Kim, og kildeteksten stod fra begyndelsen til rådighed for brugerne. Siden dengang har en kvart million brugere downloadet Tripwire Academic Source. Siden da er der kommet en kommerciel version med lidt flere features og support. (se http://www.tripwire.com). Til Linux findes der stadig en Open Source udgave, som er udgivet under GNU General Public Licence. Open Source udgaven kan hentes fra http://www.tripwire.org. Der er flere svar på den slags spørgsmål på dette site.
Tripwire er et program, der kan tjekke filsystemet for ændringer. Der genereres en database for alle filer i filtræet. For hver fil gemmes informationer om sidste ændringsdato, størrelse, indhold, ejer osv. Når først databasen er genereret, er det nemt at tjekke og opdatere for ændringer.
Den database, der genereres med Tripwire sker ud fra en opsætningsfil /etc/tripwire/twpol.txt, som beskriver hvilke dele af filsystemet, som er med i overvågningen og den opførsel de enkelte filer må tillades. Til eksempel må filen /etc/shadow godt ændre sig - da dette sker hver gang en bruger ændrer password. Modsat så ville det være højst underligt hvis filen /bin/ps har ændret sig over en nat. Det program bruges til at vise hvilke processer, der kører på systemet. Ergo skal opsætningen af overvågningen være skræddersyet til det enkelte system. I praksis betyder det at den Red Hat-opsætningsfil, der kommer med Tripwire skal sandsynligvis modificeres, hvis man vil køre med Debian eller lign.
Tankegangen med Tripwire er at man sætter programmet op før maskinen kommer på netværket og før brugere kommer på - dvs. før maskinen er i risiko-zonen. På dette tidlige tidspunkt genereres en "snapshot" af hvordan det oprindelige system ser ud. For hver af de vigtige filer på systemet gemmes information om fil-størrelse, ændringsdatoer og tjeksummer på filerne, så man kan afgøre om filerne er ændret.
Når maskinen så kommer i drift skal man køre Tripwire hver dag, time eller hvad der nu passer systemadministratoren bedst. Hver eneste gang genereres en rapport typisk per e-post til systemadministratoren over systemets status i forhold til systemets oprindelige "snapshot" - denne rapport skal der være tid til at læse roligt igennem!
Hvis rapporten viser at der er ændringer, så må systemadministratoren tage stilling til om det er i orden eller om der er tegn på indbrud - hvis det sidste er tilfældet, bør maskinen tages af netværket med det samme.
Det kan også ske at der er ændringer på systemet, som er i orden. Hvis man f.eks. installerer en ny RPM-pakke (fra en betroet kilde) så vil Tripwire melde at der er nye programmer typisk i /usr/bin. I dette tilfælde skal man så opdatere Tripwire-databasen med ens "snapshot".
Tripwire installeres på Red Hat ved at man henter en .tar.gz-fil, der indeholder en RPM-pakke, som kan installeres. Tjek at den fil du henter har den rigtige tjeksum - jfr. http://www.tripwire.org/downloads/index.php. Kør md5sum på .tar.gz-filen:
[root@hven /root]# md5sum tripwire-2.3-47.i386.tar.gz 661a54a6429d4ecb0d756de5046da48f tripwire-2.3-47.i386.tar.gz [root@hven /root]# tar xzvf tripwire-2.3-47.i386.tar.gz [root@hven /root]# rpm -ivh tripwire-2.3-47.i386.rpm
Derefter kommer der tekst på skærmen om hvad der skal gøres følgende: Først skal filen /etc/tripwire/twpol.txt ses igennem og rettes til. Det vigtigste at starte med i denne fil er følgende sektion (som startes med @@). Her er kommentarerne oversat til dansk.
@@section FS SEC_CRIT # Kritiske filer, der ikke må ændre sig SEC_SUID # Binære SUID eller SGID-filer, der ikke må ændre sig SEC_BIN # Binære filer, der ikke må ændre sig SEC_CONFIG # Opsætningfiler, der tilgås ofte og ændres sjældent SEC_LOG # Filer, der vokser i størrelse - ændrer ikke ejerskab SEC_INVARIANT # Kataloger, som aldrig ændrer ejerskab eller rettigheder
I slutningen af afsnittet er der også inddelinger efter risiko-niveau.
SIG_LOW # Ikke-kritiske filer med lav sikkerheds-risiko SIG_MED # Ikke-kritiske filer med væsentlig sikkerheds-risiko SIG_HI # Kritiske filer med væsentlig sikkerheds-risiko
Ideen er at man kan betegne filer og kataloger med de ovennævnte risiko-niveau. Til eksempel kan vi fortsætte ned i opsætningsfilen til "OS-Utilities":
################ # ## ################ # # # # # OS Utilities # # # ## ################ ( rulename = "Operating System Utilities", severity = $(SIG_HI) ) { /bin/cat -> $(SEC_CRIT) ; /bin/date -> $(SEC_CRIT) ; /bin/dd -> $(SEC_CRIT) ; ... }
Afsnittet er forkortet her. Forståelsen er at filer såsom /bin/cat er meget kritiske og må aldrig ændre sig i indhold, ejerskab eller rettigheder. Den lille tekst box over "rulename" er kun til pynt.
Opsætningsfilen /etc/tripwire/twpol.txt bør redigeres svarende til det enkelte system - dette kræver systemkendskab. Alternativet er at bruge den originale fil og måske opnå en falsk sikkerhed. Så tag lige tiden til at se filen igennem. Bemærk at der flere steder står anført linjer med hash-tegn foran, f.eks.
# /dev/printer -> $(SEC_CONFIG) ; # Uncomment if you have a printer device
Ideen er at man bør se disse linjer igennem specifikt for at se om du har de filer eller ej. Har man filen, så skal linjen typisk med ved at fjerne udkommenteringen.
Filer såsom /proc/rtc, /proc/mdstat og /usr/sbin/fixrmtab findes ikke på Red Hat 7.1 i standard installation - det er eksempler på filer, dermed linjer i opsætningsfilen som skal fjernes.
Efter opsætningsfilen er rettet til, så skal Tripwire opsætningen krypteres.
[root@hven /root]# /etc/tripwire/twinstall.sh
Det første der nu skal vælges er et løsen (eng. "passphrase") som anvendes til at kryptere databasen så andre ikke kan ændre den.
Nu skal der vælges fire løsener. De fire løsener bør principielt vælges forskellige, men en doven systemadministrator vil nok vælge dem ens (læs; dette er langt det nemmeste). Først for ens site, dvs. for hele maskin-parken. Dernæst for den enkelte maskine. Dernæst skal opsætningsfilen også signeres med et løsen – ideen er at man heller ikke skal have lov til at kunne ændre den opsætningfil, som databasen er laves til /etc/tripwire/tw.cfg (Gemmes også i klar tekst i /etc/tripwire/twcfg.txt). Denne fil gemmer kun på systemparametre, såsom hvilet program der anvendes når tripwire-rapportering skal sendes til systemadministratoren. Til slut skal der vælges et løsen for resten af opsætningen, dvs. "policy"-delen, dvs. hvilke filer skal skannes og hvordan. Filen der gemmes er /etc/tripwire/tw.pol (Gemmes også i klar tekst under /etc/tripwire/twpol.txt). De to filer i klar tekst, mens /etc/tripwire/tw.pol og /etc/tripwire/tw.cfg endelig ikke må ændres manuelt - de er binære og krypterede.
For at resultater af skanning af filsystemet kan sendes til systemadministatoren per e-post så skal man indsætte e-postadressen for hver af de afsnit, der er defineret i filen. Bemærk at der er et komma til at afslutte linjen før emailto = MODTAGERENS_ADRESSE. Hvis man har tænkt sig at køre tripwire tjek via crontab, så er dette ikke nødvendigt, da man får output i et brev alligevel.
# Tripwire Binaries ( rulename = "Tripwire Binaries", severity = $(SIG_HI), emailto = sysadm@hven.dk ) { $(TWBIN)/siggen -> $(SEC_BIN) ; $(TWBIN)/tripwire -> $(SEC_BIN) ; $(TWBIN)/twadmin -> $(SEC_BIN) ; $(TWBIN)/twprint -> $(SEC_BIN) ; }
Nu skal Tripwire databasen genereres og du skal bruge dit løsen til den lokale maskine, som blev sat lige før dette. Det kan let tage 5-10 minutter alt efter maskintype og diskkapacitet.
[root@hven /root]# /usr/sbin/tripwire --init
Det mest sandsynlige er at man får ca. 50 fejl af filer, der ikke findes på systemet. De filer bør man nu udkommentere i /etc/tripwire/twpol.txt og lave en ny database. Dette kunne man have undgået ved at gennemgå /etc/tripwire/twpol.txt meget forsigtigt.
[root@hven /root]# /usr/sbin/twadmin --create-polfile /etc/tripwire/twpol.txt Please enter your site passphrase: Wrote policy file: /etc/tripwire/tw.pol [root@hven /root]# rm -f /var/lib/tripwire/*.twd [root@hven /root]# /usr/sbin/tripwire --init Please enter your local passphrase: Parsing policy file: /etc/tripwire/tw.pol Generating the database... *** Processing Unix File System ***
Nu er man klar til at tjeke maskinen - dette kan køres manuelt (dette kan man gøre uden brug af løsen - men man skal dog være root).
[root@hven /root]# /usr/sbin/tripwire --check
Det er lidt bøvlet at se gamle tripwire rapporter, da disse også er krypterede. Kommandoen er som følger, hvor XX skal erstattes af det filnavn, man har på disken. De er navngivet efter maskinnavn og dato.
[root@hven /root]# /usr/sbin/twprint -m r --twrfile /var/lib/tripwire/report/XX.twr
Lad os nu prøve at lave om på maskinen. Vi opgraderer procmail RPM-pakken og se hvad Tripwire finder. Bemærk de 5 modificerede "user binaries", som dernæst vises nedenfor.
Note: Report is not encrypted. Tripwire(R) 2.3.0 Integrity Check Report Report generated by: root Report created on: Wed Oct 31 00:29:46 2001 Database last updated on: Never =============================================================================== Report Summary: =============================================================================== Host name: k6.sslug Host IP address: 192.168.1.3 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg Database file used: /var/lib/tripwire/k6.sslug.twd Command line used: /usr/sbin/tripwire --check =============================================================================== Rule Summary: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- Invariant Directories 66 0 0 0 Temporary directories 33 0 0 0 * Tripwire Data Files 100 1 0 0 Critical devices 100 0 0 0 * User binaries 66 0 0 5 Tripwire Binaries 100 0 0 0 Libraries 66 0 0 0 File System and Disk Administraton Programs 100 0 0 0 Kernel Administration Programs 100 0 0 0 Networking Programs 100 0 0 0 System Administration Programs 100 0 0 0 Hardware and Device Control Programs 100 0 0 0 System Information Programs 100 0 0 0 Application Information Programs 100 0 0 0 Shell Releated Programs 100 0 0 0 (/sbin/getkey) Critical Utility Sym-Links 100 0 0 0 Critical system boot files 100 0 0 0 Critical configuration files 100 0 0 0 System boot changes 100 0 0 0 OS executables and libraries 100 0 0 0 Security Control 100 0 0 0 Login Scripts 100 0 0 0 Operating System Utilities 100 0 0 0 Shell Binaries 100 0 0 0 Root config files 100 0 0 0 Total objects scanned: 19398 Total violations found: 6 =============================================================================== Object Detail: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: User binaries (/usr/bin) Severity Level: 66 ------------------------------------------------------------------------------- ---------------------------------------- Modified Objects: 5 ---------------------------------------- Modified object name: /usr/bin Property: Expected Observed ------------- ----------- ----------- * Modify Time Sat Oct 20 17:15:27 2001 Wed Oct 31 00:29:44 2001 Modified object name: /usr/bin/formail Property: Expected Observed ------------- ----------- ----------- * Inode Number 443138 442309 * Size 26736 26900 * Modify Time Sat Jan 6 23:13:11 2001 Wed Jul 4 00:55:12 2001 * CRC32 CB/Sfy DJdys6 * MD5 A4Lbe9dcQUPMqvFeZQ/qnF CazhNDHWCoxKh46uXHElej Modified object name: /usr/bin/lockfile Property: Expected Observed ------------- ----------- ----------- * Inode Number 443139 442310 * Size 11124 12440 * Modify Time Sat Jan 6 23:13:11 2001 Wed Jul 4 00:55:12 2001 * Blocks 24 32 * CRC32 CWnVmO A6qdab * MD5 C2Lvt5A+Kx3cjOYgGCdHd9 BQpFs92xGV/D+G+aPGbG8T Modified object name: /usr/bin/mailstat Property: Expected Observed ------------- ----------- ----------- * Inode Number 443140 442311 * Modify Time Sat Jan 6 23:13:10 2001 Wed Jul 4 00:55:11 2001 Modified object name: /usr/bin/procmail Property: Expected Observed ------------- ----------- ----------- * Inode Number 443141 442312 * Size 63484 75420 * Modify Time Sat Jan 6 23:13:11 2001 Wed Jul 4 00:55:12 2001 * Blocks 136 160 * CRC32 A4Xs3q D/ZVXm * MD5 Af2+FBsxRo0LTeWeLim2iB Bez1qNLwdxqPMYR4GPq8EB ------------------------------------------------------------------------------- Rule Name: Tripwire Data Files (/var/lib/tripwire) Severity Level: 100 ------------------------------------------------------------------------------- ---------------------------------------- Added Objects: 1 ---------------------------------------- Added object name: /var/lib/tripwire/k6.sslug.twd =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report *** Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved.
Nu er der selvfølgelig problemer - er det rimeligt at de filer at ændret? I dette tilfælde er det, da filerne kommer fra den nye RPM-pakke. Generelt skal man køre Tripwire-skanningen før man installerer en RPM-pakke for at være sikker på at der ikke er andre ændringer. Dernæst skal man så opdatere databasen med systemets snapshot, så man ikke længere ser de opgraderede pakker med i listen. Igen skal XX erstattes med den seneste .twr-fil for maskinen.
[root@hven /root]# /usr/sbin/tripwire --update --twrfile /var/lib/tripwire/report/XX.twr
Op kommer en fil startet i vi-editoren, hvor en bid af den er som følger:
Remove the "x" from the adjacent box to prevent updating the database with the new values for this object. Modified: [x] "/usr/bin" [x] "/usr/bin/formail" [x] "/usr/bin/lockfile" [x] "/usr/bin/mailstat" [x] "/usr/bin/procmail"
Tripwire foreslår, at man opdaterer alle de ændrede filer, så Tripwire ikke brokke sig over dem igen. Hvis du ikke vil ændre så fjern det kryds (dvs. x) som er i tekst-boksen. Når du forlader editoren skal man igen angive løsen for at opdatere. Herefter vil Tripwire ikke brokke sig over den opdaterede procmail pakke.
Tripwire bør indsættes i /etc/cron.daily, dvs. det bliver kørt en gang hver dag. Resultatet bliver sendt til root på maskinen per e-post.
[root@hven /root]# cat /etc/cron.daily/t #!/bin/sh /usr/sbin/tripwire --check [root@hven /root]# chmod +x /etc/cron.daily/t
Bemærk at det her ikke at valgt at kalde filen tripwire, som ville være naturligt. Men det giver jo kun en angriber nemmere ved at se at tripwire er sat op på maskinen. Det er vigtigt at holde øje med at brevet fra tripwire kommer på ca. det tidspunkt som de bør komme på jfr. /etc/crontab.
Du kan finde en anden vejledning til at installere og bruge Tripwire på http://www.net-security.org/text/articles/tripwire.shtml.