Linux Security HOWTO Kevin Fenzi, kevin@scrye.com & Dave Wreski, dave@nic.com Vertaler: Reggy Ekkebus, reggy@zeelandnet.nl v1.0.2, 25 April 1999 Dit document is een algemeen overzicht van de security onderwerpen die een administrator van een Linux systeem tegenkomt. Het houdt een algemene security gedachte in en een paar bijbehorende voorbeelden, over hoe je je Linux systeem beter kunt beveiligen tegen indringers. Er zijn ook verwijzingen naar programma's en materiaal dat met security te maken heeft. Verbeteringen, constructieve kritiek, toevoegingen en correcties zijn welkom. Mail je feedback naar bijde auteurs met "Security HOWTO" als subject. ______________________________________________________________________ Inhoudsopgave 1. Introductie 1.1 Nieuwe versies van dit document 1.2 Feedback 1.3 Disclaimer 1.4 Copyright Informatie 2. Overzicht 2.1 Waarom hebben we Security nodig 2.2 Hoe veilig is veilig? 2.3 Wat probeer je te beschermen? 2.4 Een security politiek ontwikkelen 2.5 Bedoelingen van het beveiligen van je netwerk 2.5.1 Host Security 2.5.2 Netwerk Security 2.5.3 Security door onbekendheid 2.6 Organisatie van dit Document 3. Fysieke Security 3.1 Computer sloten 3.2 BIOS Security 3.3 Boot Loader Security 3.4 Xlock en V lock 3.5 Een Fisieke Security aanval detecteren 4. Lokale Security 4.1 Een nieuw account aanmaken 4.2 Root Security 5. Files en Filesystem Security 5.1 Umask Instellingen 5.2 File Permissies 5.3 Integriteit verificatie met 5.4 Trojaanse paarden 6. Password Security en Versleuteling 6.1 PGP en Public-Key Versleuteling 6.2 SSL, S-HTTP, HTTPS en S/MIME 6.3 Linux IPSEC Uitvoering 6.4 (TT 6.5 PAM - Pluggable Authentication Modules 6.6 Cryptographic IP Encapsulation (CIPE) 6.7 Kerberos 6.8 Shadow Passwords. 6.9 "Crack" en "John the Ripper" 6.10 CFS - Cryptographic File System en TCFS - Transparent Cryptographic File System 6.11 X11, SVGA en display security 6.11.1 X11 6.11.2 SVGA 6.11.3 GGI (Generic Graphics Interface project) 7. Kernel Security 7.1 2.0 Kernel Compilatie Opties 7.2 2.2 Kernel Compilatie Opties 7.3 Kernel Devices 8. Netwerk Security 8.1 Pakket Sniffers 8.2 Systeem diensten en tcp_wrappers 8.3 Je DNS Informatie nakijken 8.4 (TT 8.5 SATAN, ISS en andere netwerk scanners 8.5.1 Poort scans detecteren. 8.6 (TT 8.7 Denial of Service Aanvallen 8.8 NFS (Network File System) Security. 8.9 NIS (Network Information Service) (vroeger YP). 8.10 Firewalls 8.11 IP Chains - Linux Kernel 2.2.x Firewalling 8.12 VPN's - Virtual Private Networks 9. Security Preparatie (voordat je online gaat) 9.1 Maak een volledige Backup van je Machine 9.2 Een goed Backup plan kiezen 9.3 Backup Je RPM of Debian File Database 9.4 Houd je Systeem Accounting data in de gaten 9.5 Systeem Updates doen. 10. Wat te doen Tijdens en na een Inbraak 10.1 Een Security aanval is bezig 10.2 De security aanval is al geweest 10.2.1 Het gat dichten 10.2.2 De schade schatten 10.2.3 Backups, Backups, Backups! 10.2.4 De indringer terug vinden. 11. Security Bronnen 11.1 FTP Sites 11.2 Web Sites 11.3 Mailing Lists 11.4 Boeken - Geprint materiaal 12. Lijst van begrippen 13. Frequently Asked Questions 14. Conclusie 15. Erkentenis ______________________________________________________________________ 1. Introductie Dit document bevat enkele van de belangrijkste onderwerpen die te maken hebben met Linux Security. Algemene gedachten en netwerk geboren bronnen worden besproken. Enkele andere HOWTO documenten overlappen met de security onderwerpen, en naar die document wordt verwezen waar ze ook zijn. Dit document is niet bedoeld als een bij de tijds document over misbruik. Grote aantallen nieuw misbruik vindt plaats van tijd tot tijd. Dit document verteld je waar te kijken voor zulk soort informatie, en zal enkele algemene methodes geven om je er tegen te beschermen. 1.1. Nieuwe versies van dit document Nieuwe versies van dit document zullen regelmatig naar comp.os.linux.answers worden gestuurd. Ze zullen worden toegevoegd aan verschillende anonieme FTP sites die zulke informatie bevatten. O.a: ftp://metalab.unc.edu/pub/Linux/docs/HOWTO Je zult 'm normaal gezien ook moeten vinden op de Linux World Wide Web home page via: http://metalab.unc.edu/mdw/linux.html De allerlaatste versie van dit document zou ook verkrijgbaar moeten zijn op: http://scrye.com/~kevin/lsh/ 1.2. Feedback Alle opmerkingen, fout verslagen, extra informatie en kritiek van alle soorten moeten gestuurd worden naar: kevin@scrye.com en dave@nic.com Notitie: Zendt je feedback naar beide auteurs. Zet ook "Linux" "Security" of "HOWTO" in je subject om Kevin's spam filter te omzeilen. 1.3. Disclaimer Geen verantwoordelijkheid voor de inhoud van dit document kunnen worden geaccepteerd, voorbeelden en andere inhoud zijn te gebruiken op eigen risico. Toevoeging, dit is een vroege versie, er kunnen veel kleine foutjes in staan. Een aantal voorbeelden en beschrijvingen gebruiken RedHat(tm) package indeling en systeem setup. Zo ver we weten, alleen programma's die, onder zulke termen mogen gebruikt worden of gewaardeerd voor persoonlijke doelen worden beschreven. Veel van die programma's zijn verkrijgbaar, compleet met source, onder de GNU <http://www.gnu.org/copyleft/gpl.html> termen. 1.4. Copyright Informatie Dit document is copyright (c)1998,1999 Kevin Fenzi en Dave Wreski, en is gedistributeerd onder de volgende termen: · Linux HOWTO documenten mogen worden gereproduceerd en gedistributeerd geheel of gedeeltelijk, in elk medium, fysiek of elektronisch, zolang de copyright notitie verwerkt is in elke kopie. Commericiele re-distributie is toegestaan en aangemoedigd, hoewel, de auteurs er wel van op de hoogte gesteld moeten worden. · Alle vertalingen, afgeleide werken, andere werken die te maken hebben met een Linux HOWTO document moet uitgebracht worden onder dit copyright. Dat is, je mag een HOWTO document niet reproduceren en enkele beperkingen toevoegen. Uitzonderingen op deze regels mogen worden gegeven onder bepaalde omstandigheden; Neem contact op met de HOWTO coördinator op het onderstaande adres. · Als je vragen hebt, neem dan contact op met Tim Bynum, de Linux HOWTO coordinator, tjbynum@metalab.unc.edu 2. Overzicht Dit document zal enkele procedures en vaak gebruikte software om je Linux systeem veiliger te proberen uit te leggen. Het belangrijkste is dat we eerst de basis concepten bespreken, zodat we een soort security basis krijgen, voordat we beginnen. 2.1. Waarom hebben we Security nodig In de altijd veranderende wereld van globale data communicatie, goedkope Internet connecties, en snelle software ontwikkeling is security een steeds belangrijker onderwerp. Security is nu een basis behoefte, omdat internet zeer onveilig is. Als je data van punt A naar B gaat over het internet, kan het door verschillende andere punten gaan onderweg, dat geeft andere gebruikers de mogelijkheid het te onderscheppen en ze kunnen het zelfs veranderen. Zelfs gebruikers om jouw systeem kunnen je data veranderen in iets anders wat je niet bedoelde. Onbevoegde toegang tot je systeem kun verschaft worden door indringers, ook wel bekend als "crackers", die dan gevorderde wetenschap gebruiken om je privacy te schenden, je informatie stelen of je zelfs je toegang tot je eigen files te ontzeggen. Als je benieuwd bent naar de verschillen tussen een "Hacker" en een "Cracker", kijk dan in Eric Raymond's document, "How to become A Hacker", verkrijgbaar op: http://sagan.earthspace.net/~esr/faqs/hacker-howto.html. 2.2. Hoe veilig is veilig? Eerst, houdt in gedachten dat geen computer systeem ooit helemaal veilig kan zijn. Je kunt het alleen heel moeilijk maken voor iemand om je systeem binnen te dringen. Voor de gemiddelde Linux thuis gebruiker, is niet veel nodig om de cracker buiten de deur te houden. Voor high tech linux gebruikers (banken, telecommunicatie bedrijven, etc), is veel meer werk vereist. Een andere factor om te onthouden is hoe beter je systeem beveiligd is, hoe minder je met je systeem kunt doen. Je moet beslissen waar de balans te vinden voor jouw systeem zodat het bruikbaar blijft, en ook nog veilig is voor jouw gedachten. Bijvoorbeeld, je zou iedereen kunnen laten in-bellen en ze dan thuis terug bellen. Dit is veiliger, maar als iemand niet thuis is, wordt het moeilijk voor hem om inteloggen. Je zou ook je linux systeem kunnen instellen zonder netwerk en zonder internet, maar dat is niet nodig. Als je een groot tot gemiddeld bedrijf hebt, moet je een security politiek maken beginnend met hoeveel security je in je bedrijf nodig hebt. En wie/wat dat gaat controleren. Een voorbeeld van een bekende security politiek is http://ds.internic.net/rfc/rfc2196.txt. Het is pas aangepast, en het bevat een groot lijstwerk voor het maken van een security politiek voor jouw bedrijf. 2.3. Wat probeer je te beschermen? Voordat je je systeem probeert veilig te maken, moet je eerst vast stellen waartegen je je moet beschermen, welke risico's je moet nemen en welke niet, en hoe gevoelig je systeem is als gevolg hiervan? Je moet je systeem analyseren om te weten wat je beschermt, waarom je het beschermt, welke waarde het heeft, en wie de verantwoordelijk heeft voor je data en ander bezit. · Risico is de mogelijkheid dat een indringer succesvol binnenkomen in je computer. Kan een indringer files lezen of schrijven of programma's draaien die schade kunnen veroorzaken? Kan hij belangrijke data weggooien? Kan hij jouw of je bedrijf van belangrijk werk ontdoen? Niet vergeten: iemand toegang geven to je account, of je computer, kan ook je privacy bloot leggen. En, als je een in-secure account hebt op je systeem kan het hele netwerk worden binnen gedrongen. Als je een gebruiker laat inloggen door de .rhosts file, of een andere onveiligere manier, zoals tftp, loop je het risico dat een indringer binnen komt. Als een indringer een account heeft op je systeem, of op het systeem van iemand anders, kan hij dat gebruiken om toegang te krijgen tot een ander account of een ander systeem. · Een gevaar is iemand die motivatie heeft om een netwerk of een computer binnen te dringen. Je moet beslissen wie je moet vertrouwen om op je systeem te komen, en welk gevaar dat kan veroorzaken. Er zijn verschillende types van indringers, en het is makkelijk om hun verschillen te onthouden als je je systeem beveiligd. · De nieuwsgierige - Dit type indringer is normaal geïnteresseerd in welk systeem en data je hebt. · De kwaadwillige - Dit type van indringers is er op uit om je computer uit te zetten of je web pagina te bekladden of anders dwingt hij je om geld en tijd te spenderen om zijn schade te herstellen. · De geavanceerde indringer - Dit type indringer probeert je systeem te gebruiken om populair en gevreesd te worden. Hij kan je systeem gebruiken om te adverteren over de dingen die hij kan. · De mededinger - Dit type indringer is geïnteresseerd in welke data je hebt op je systeem. Het kan iemand zijn die denkt dat je iets hebt waarvan hij kan profiteren, finanancieel of iets anders · De lener - Dit type indringer is geïnteresseerd in het opzetten van een winkel op je systeem en de bronnen gebruiken voor eigen doel. Ze zullen een chat of irc server draaien, een porno site, of zelfs een DNS server. · De gebruiker - Dit type indringer is alleen geintersseerd in je systeem om het te gebruiken om in andere systemen te komen. Als je systeem veel connecties heeft of een gateway is naar verschillende interne computers, dan kun je dit type vaak zien om je systeem in te nemen. · Gevoeligheid beschrijft hoe goed je systeem beschermt is van ander netwerk, en de mogelijkheid voor iemand om ongewilde toegang te krijgen. Wat is er aan de hand als iemand je systeem binnendringt? Natuurlijk de bezorgdheid van een dynamisch PPP thuis gebruiker zijn anders dan die van een groot bedrijf dat zijn computers aan het internet hangt, of een ander groot netwerk. Hoeveel tijd neemt het in om de data die verdwenen was op te halen of opnieuw te maken? Een tijdige tijd investering kan later tien maal zoveel tijd besparen als je je data opnieuw moet aanmaken als het verdwenen is. Heb je je backup strategie onderzocht, en laatst je data nagekeken? 2.4. Een security politiek ontwikkelen Maak een simpele, algemene politiek voor je systeem dat gebruikers kunnen begrijpen en opvolgen. Het zou je data die je waarborgt moeten beschermen en ook de privacy van de gebruikers. Enkele andere dingen die je zou moeten overwegen zijn: Wie hebben toegang tot het systeem (Kan mijn vriend mijn account gebruiken?), wie mag software op het systeem installeren, wie is de eigenaar van data, rampen verbetering, en wie mag het systeem gebruiken. Een algemene goede security politiek start met de volgende zin Dat wat niet toegestaan is, is verboden Dat betekend dat tenzij je toegang geeft tot een bepaalde dienst aan een gebruiker. Weet zeker dat die politiek wel werkt op je reguliere gebruikers account. Zeggen, "Ah, ik kan dat permissie probleem niet oplossen, ik doe het wel even als root" kan tot security gaten leiden en die zijn erg opvallend, en zelfs de genen die nog niet misbruikt zijn. rfc1244 is een document dat beschrijft hoe je een netwerk veiligheids politiek moet maken. rfc1281 is een document dat een voorbeeld laat zien van een veiligheids politiek met gedetailleerde beschrijvingen van elke stap. Tot slot, je kan ook kijken naar het COAST politiek archief op ftp://coast.cs.purdue.edu/pub/doc/policy om te zien hoe een echte veiligheids politiek er uit ziet. 2.5. Bedoelingen van het beveiligen van je netwerk Dit document zal verschillende middelen bespreken om de dingen waar je hard voor hebt gewerkt te beschermen: je lokale machine, je data, je gebruikers, je netwerk, en zelfs je reputatie. Wat gebeurt er met je reputatie als een indringer de data van een gebruiker weggooit? Of je web pagina beklad? Of de kolectieve plannen publiceert van je bedrijf voor het volgende kwartaal? Als je een netwerk installatie plant, zijn er vele factoren waar je rekening mee moet houden voordat je een enkele computer aan het netwerk toevoegt. Zelfs als je een enkel in-bel PPP account hebt, of maar een klein bedrijf, wil dit niet betekenen dat indringers niet geïnteresseerd zijn in je systeem. Grote high-tech bedrijven zijn niet het enige doel. Veel indringers willen simpelweg zoveel mogelijk netwerken binnendringen, voor hen maakt het niet uit welk netwerk het is. En, ze kunnen een beveiligings gat in je netwerk gebruiken om op een ander netwerk te komen waarmee jij in verbinding staat. Indringers hebben heel veel geduld, en kunnen mijden hoe je je systeem hebt verduisterd, door gewoon alles te proberen. Er zijn een hele hoop dingen waarom een indringer geïnteresseerd kan zijn in je systeem, maar dat bespreken we later. 2.5.1. Host Security Het gebied van security waar systeem administrator het meest op gericht zijn is host security. Dit betekend meestal je eigen systeem veilig maken en hopen dat iedereen op het netwerk hetzelfde doet. Goede pas-woorden kiezen, de lokale netwerk diensten van je host veilig maken, alles goed bijhouden en programma's upgraden met een security gat. Dat is wat een systeem administrator moet doen. Hoewel dit zeer nodig is, wordt dit een vervelend werkje als je een netwerk hebt met meer dan een paar computers. 2.5.2. Netwerk Security Netwerk security is even belangrijk als host security. Met honderd, duizend, of zelfs meer computers op het zelfde netwerk, kun je niet vertrouwen op elk systeem apart. Beloven dat alleen goedgekeurde gebruiker het netwerk kunnen gebruiken, bouw firewalls, gebruik sterke versleuteling, en weet zeker dat er geen onveilige machines zijn op het netwerk. Dit zijn ook allemaal Systeem Administrator taken. Dit document zal enkele van de technieken bespreken die gebruikt worden om een netwerk te beveiligen, en we hopen je te laten zien hoe je een indringer buiten de deur houdt om er zo voor te zorgen dat hij niet aan de data kan komen die jij probeert te beschermen. 2.5.3. Security door onbekendheid Een type van security dat moet besproken worden is "Security door onbekendheid" Dat betekend bijvoorbeeld, dat je een dienst verplaats die bekend is als een zwakke schakel naar een andere niet standaard poort in de hoop dat aanvallers het niet opmerken en het dus niet misbruiken. Security door onbekendheid is geen security. Simpel, omdat als je een klein netwerk hebt, of niet echt een high-tech netwerk kan een indringer toch nog interesse hebben. 2.6. Organisatie van dit Document Dit document is verdeeld in een aantal secties. Deze verslaan enkele globale security onderwerpen. De eerste, ``Fysieke Security'', houdt in hoe je fysieke security moet verzorgen. De tweede, ``Lokale Security'', beschrijft hoe je je systeem moet beschermen tegen aanvallen van lokale gebruikers. De derde ``Files en Filesystem Security'', laat zien hoe je je filesysteem moet instellen en permissies zetten op je files. De volgende, ``Passwoord Security en Encryptie'', bespreekt hoe je encryptie moet gebruiken om je machine en je netwerk beter te beveiligen. ``Kernel Security'' bespreekt welke kernel opties je moet nemen om een veiliger systeem te creeëren. ``Netwerk Security'', beschrijft hoe je je Linux systeem beter kunt beveiligen tegen netwerk aanvallen. ``Security voorbereidingen'', bespreekt hoe je je machine er op moet voorbereiden om hem online te brengen. Daarna, ``Wat te doen onder en na een inbraak'', bespreekt wat je moet doen als een er inbraak plaatsvindt of hoe een te detecteren die pas is gebeurt. In ``Security Bronnen'', worden enkele primaire security bronnen opgesomd. De V en A sectie ``Veel gestelde vragen'', beantwoordt enkele veel gestelde vragen, en tot slot een conclusie in de ``Conclusie'' sectie. De twee algemene punten om te realiseren als je dit document leest zijn: · Houdt je systeem in de gaten. Kijk in de systeem log files zoals /var/log/messages en houdt een oog op je systeem. En, · Houdt je systeem up to date door altijd de nieuwste versies van software te installeren en upgrade op security alarm. Dit doen maakt je systeem al veel veiliger. 3. Fysieke Security De eerste laag van security is de fysieke security van je systeem. Wie heeft er directe fysieke toegang tot je computer? Moeten ze dat? Kan je je machine beschermen tegen hun aanvallen? Moet je dat? Hoeveel fysieke security je nodig hebt op je systeem hangt af van je situatie, en/of budget. Als je thuis gebruiker bent, hebt je niet zoveel nodig (hoewel je kan je machine moeten beschermen tegen je kinderen die het kapot proberen te maken of een vervelend familielid). Als je in een Lab bent, heb je veel meer fysieke security nodig, maar de gebruikers moeten nog steeds hun werk kunnen doen op de machine. Veel van de volgende secties zullen je uit de problemen helpen. Als je op een kantoor bent, moet je je computer wel of niet beveiligen in je vrije uren of als je weg bent. Bij sommige bedrijven, als je je computer daar laat staan, onbeveiligd is dat een overtreding. Eenvoudige fysieke security methodes zoals sloten op deuren, kabels, gesloten kastjes, en video bewaking zijn ook goede ideeën, maar dat is buiten beschouwing van dit document:) 3.1. Computer sloten Veel moderne PC kasten hebben ook een "op slot" mogelijkheid. Normaal is dit een kontakt aan de voorkant van de computer kast dat je instaat stelt om de computer in gesloten of open positie te zetten. Kast sloten kan helpen tegen diefstal van je computer, of de kast openen en direct de hardware stelen. Dit kan ook soms ook helpen tegen iemand die je computer wil opstarten met z'n eigen hardware of floppy. Deze kast sloten doen andere dingen dan de steun in het moederbord en hoe de kast gemaakt is. Op veel PC maken ze het zo dat je de kast eerst moet open breken om erin te komen. Op sommige andere maken ze het zo dat je geen ander toetsenbord kan in pluggen of een andere muis. Kijk in het boekje van je moederbord of de kast instructies voor meer informatie. Dit kan soms een zeer nuttige eigenschap zijn, omdat de sloten vaak van zeer lage kwaliteit zijn kunnen aanvallers ze vaak makkelijk openbreken. Sommige kasten (meestal Sparc's en Mac's) hebben een hardware-sleutel aan de achterkant waar je een kabel door kan doen, aanvallers moeten dan de kabel doorknippen of de kast breken om er in te komen. Een hangslot of een combinatie slot erdoor en het wordt al een stuk moeilijker voor iemand om je computer te stelen. 3.2. BIOS Security De BIOS is het laagste niveau van software dat een x86 hardware configureert en in werking stelt. Lilo en andere Linux start methodes kijken in de BIOS om te kijken hoe ze je Linux machine moeten starten. Andere hardware waar Linux op draait heeft dergelijke software (OpenFirmware op Macs en nieuwe Suns, Sun boot PROM, etc...). Je kan je BIOS gebruiken om een aanvaller tegen te houden om je linux systeem opnieuw op te starten en te gebruiken. Veel PC Bios-en laten je een boot pas-woord instellen. Dit houdt niet veel Security in(de BIOS kan ge-reset worden, of verwijderd als iemand in de kast kan komen), maar het kan goed afschrikken (o.a het kost tijd en laat sporen achter). Op de zelfde manier, op S/Linux (Linux voor een SPARC(tm) processor), kun je de EEPROM ook instellen om om een boot pass-woord te vragen. Dat vertraagt aanvallers. Veel x86 BOISen laten je ook andere goede security settings instellen. Kijk in je BIOS manual of kijk er naar de volgende keer als je re- boot. Bijvoorbeeld, enkele Bios-en laten je niet van floppy booten en sommige vragen een pas-woord om enkele BIOS dingen in te stellen. Notitie: Als je een server hebt, en je zet er een boot pas-woord op dan kun je de machine niet zonder aandacht laten opstarten. Onthoudt dat je moet komen om het pas-woord in te tikken als de stroom is uitgevallen. ;( 3.3. Boot Loader Security De verschillende Linux boot loaders kunnen ook een boot pas-woord hebben. LILO, bijvoorbeeld, heeft een password en restricted instelling. password vraagt altijd om een pass-woord en restricted vraagt om een password als je een optie achter linux zet (zoals single), bij de LILO: prompt natuurlijk. Onthoudt dat als je als deze pas-woorden instelt je ze ook nog moet onthouden. :) Onthoud ook dat deze pas-woorden de aanvaller vertragen. Dit houdt ze niet tegen om je computer te booten van flop en dan je root partitie te mounten. Als je security gebruikt in samenwerking met de boot Loader, kun je booten van een floppy ook uitzetten in de BIOS van je computer en de BIOS met een pas-woord beschermen. Als iemand security gerelateerde informatie heeft over de verschillende boot loaders, zouden we dat graag willen horen. (grub, silo, milo, linload, etc). Notitie: Als je een server hebt, en je zet er een boot pas-woord op dan kun je de machine niet zonder aandacht laten opstarten. Onthoudt dat je moet komen om het pas-woord in komen tikken als de stroom is uitgevallen. ;( 3.4. Xlock en V lock Als je van tijd tot tijd weg gaat bij je machine is het leuk als je je scherm kunt "locken", zodat niemand met je werk kan knoeien of je werk kan zien. Daar zijn twee programma's voor: xlock en vlock. xlock is een X display locker. Het zou bij elke linux distributie moeten zitten die X support. Kijk in de man page voor meer informatie over de opties, maar normaal kun je het starten met xlock vanuit elke xterm op je console en het zal de display locken en een pas-woord vragen om het te unlocken. vlock is een simpel klein programma dat je instaat stelt om enkele of alle virtuele consoles op je Linux box te locken. Je kunt enkel de gene waar je in werkt locken of allemaal. Als je er maar een doet kunnen andere achter je computer komen en je console gebruiken; ze kunnen het virtuele console dat je gelockt hebt niet gebruiken totdat je het weer hebt ge-unlockt. vlock zit bij RedHat Linux. Natuurlijk, je console locken zal iemand tegen houden om je werk te verknoeien, maar het houdt hem niet tegen je machine te re-booten of je werk verstoren. Het houdt hen ook niet tegen om je computer via het netwerk te bereiken om zo problemen te veroorzaken. Belangrijker, het houdt iemand niet tegen van X weg te switchen en naar de gewone console te gaan, of naar het VC waarvan jij X hebt gestart. Zo kunnen ze je X stoppen en hebben ze jouw privileges. Je zou beter Xdm kunnen draaien, bijvoorbeeld. 3.5. Een Fisieke Security aanval detecteren Het eerste waar je naar moet kijken is of je machine is gereboot. Linux is een robuust en stabiel OS, de enige keer dat je re-boot is als jij je computer plat legt voor een OS upgrade, hardware verwisseling, of zoiets. Als je machine opnieuw is opgestart zonder dat jij het deed, kan dat een signaal zijn van 'er is een indringer geweest'. Veel van de manieren hoe je computer aangevallen kan worden, willen eerst dat de computer is ge-reboot of uitgezet. Kijk voor signalen van knoeien op de kast en in het computer gebied. Hoewel veel indringers sporen van hun aanwezigheid uit de log files halen, is het een goed idee om in de log files te kijken voor enige tegenstellingen Het is ook een goed idee om je log data op een veilige plek te bewaren, zoals een aparte log server in je goed beschermde netwerk. Als je machine is aangevallen is log data belangrijk, ook als het is aangepast door de indringer. De syslog deamon kan zo worden geconfigureerd dat deze de log files naar een centrale syslog server zend, maar dit wordt normaal gezonden als clear text. Dus de indringer kan de data zien als het wordt getransporteerd. Dit kan informatie dat niet publiek is onthullen over je netwerk. Er zijn syslog deamons verkrijgbaar die de data encrypted zenden. Onthoud ook dat het heel simpel is om syslog messages te vervalsen - met een misbruik programma dat is gemaakt. Zal syslog zelfs messages accepteren van het netwerk met als host local host, zonder dat syslog naar de werkelijke afkomst kijkt. Enkele dingen om in je logs te checken: · Korte of incompele logs. · Logs met een vreemde tijd. · Logfiles met verkeerde permissies. · Regeltjes van re-boot en het stop/starten van een dienst. · missende stukjes log. · su invoer en login van een vreemde plaats. We zullen log data ``later'' in de HOWTO nog bespreken. 4. Lokale Security Het volgende wat we gaan doen is je systeem beschermen tegen lokale gebruikers. Zijn er lokale gebruikers? Ja! Toegang krijgen tot het account een lokale gebruiker is het eerste wat een indringer doet om toegang te krijgen tot het root account. Met lakse lokale security, kunnen ze hun normale account "upgraden" naar het root account door gebruik van een aantal bugs en armzalig opgezette lokale diensten. Als je zorgt dat je lokale security goed is, heeft de indringer nog een hindernis die hij voorbij moet komen. Lokale gebruikers kunnen een hoop schade aanrichten op je systeem (speciaal) als ze zijn hoe ze zeggen dat ze zijn. Een account verstrekken aan mensen die je niet kent of geen informatie over hebt is een slecht idee. 4.1. Een nieuw account aanmaken Je moet een gebruikers account maken met de minimale benodigd heden voor de taken die hij moeten doen. Als je een account wilt maken voor je zoon (10 jaar), kun je hem alleen toegang geven tot een text verwerker of een tekenprogramma, maar hem niet de mogelijkheid geven om data te deleten dat niet van hem is. Enkele goede aanwijzingen om iemand een veilig account te geven op je Linux machine: · Geeft ze de minimale rechten die ze nodig hebben. · Kijk wanneer/waar ze moeten inloggen, of wanneer ze niet moeten inloggen. · Verwijder inactieve accounts · Het gebruik van het zelfde user-ID op elke computer en netwerk is aanteraden om het account onderhoud makkelijk te maken, en het makkelijker maken van het analyseren van log data. · De creatie van groep, user-IDs moet absoluut verboden zijn. Gebruikers accounts hebben ook accountability, en dat is niet mogelijk met een groep account. Veel gebruikers account's die gebruikt worden bij een aanval zijn die die maanden of jaren niet gebruikt zijn. Omdat niemand ze gebruikt, is het een ideaal aan-vals 'voertuig' 4.2. Root Security Het meest gevaarlijke account op je machine is dat van root (super- user). Dit account heeft bevoegdheid over de gehele machine, en dat kan ook betekenen bevoegdheid over andere machines op het netwerk. Onthoud dat je het root account alleen moet gebruiken voor hele kort, specifieke taken, en je moet meestal draaien als een normale gebruiker. Zelfs kleine foutjes als je in-gelogd bent als root kunnen problemen veroorzaken. Hoe korter je root ben hoe veiliger je bent. Enkele trucks om te voorkomen dat je je computer overhoop haalt als root: · Als je complexe commando's moet uitvoeren doe ze dan eerst op de niet-vernietigende manier.. vooral commando's die wildcards gebruiken: b.v, als je "rm foo*.bar" wilt doen, doe dan eerst "ls foo*.bar" en kijk dan of je de files weg gooit die je wilde weggooien. echo gebruiken i.p.v vernietigende commando's werkt soms ook. · Voorzie je gebruikers van een standaard alias voor het rm commando om te vragen voor bevestiging voordat je ze files weggooien. · Wordt alleen root om enkele specifieke taken uit te voeren. Als je probeert uit te vinden hoe iets werkt ga dan eerst terug naar de gewone gebruiker, totdat je zeker weet wat je moet doen als root. · Het commando path voor de root gebruiker is erg belangrijk. Het commando path (dat is het PATH variabel) specificeert de directories waar de shell moet kijken voor programma's. Probeer het commando path voor de root gebruiker zoveel mogelijk te beperken, en zet er nooit . (dat betekend "de actuele directorie") in. En, zorg dat je nooit schrijf-bare directories in je PATH hebt, dit kunnen aanvallers de mogelijkheid geven nieuwe binaries in je path te zetten, dat kan betekenen dat ze de volgende keer root zijn als je dat commando draait. · Gebruik nooit het rlogin/rsh/rexec stel van tooltjes (genoemd de r- utilities) als root. Ze zijn onderwerp van elk soort aanval, en ze zijn absoluut gevaarlijk om te draaien als root. · Maak nooit een .rhosts file voor root. · In de /etc/securetty file staat een lijst van terminals waar root van mag inloggen. Standaard (bij Red Hat Linux) zijn dit alleen de virtuele consoles(vtys). Wees voorzichtig met het toevoegen van iets anders aan die file. Je moet kunnen inloggen als je eigen reguliere gebruiker vanaf een andere computer en dan su draaien als je moet (hopelijk over ``ssh'' of een ander versleuteld kanaal), dus het is niet nodig om direct als root in teloggen. · Altijd langzaam en oplettend als root draaien. Je acties kunnen een hoop dingen betreffen. Denk voor je typt! Als je iemand absoluut root toegang moet geven (hopelijk iemand die je goed vertrouwd) op je machine zijn daar enkele hulp middelen voor. sudo geeft gebruikers de mogelijkheid om hun eigen pas-woord te gebruiken om een aantal commando's te mogen gebruiken als root. Dit geeft je de mogelijkheid, bijvoorbeeld, om een gebruiker de mogelijkheid te geven om removable media(cdrom, etc...) te mounten en eruit halen op je linux machine, maar ze hebben geen andere root rechten. sudo houdt ook een log file bij van alle succesvolle en on- succesvolle sudo pogingen, dit geeft je de mogelijkheid om te kijken wie welk commando gebruikte voor wat. Daarom werkt sudo goed in plaatsen waar een paar mensen root moeten zijn, omdat het je instaat stelt om te zien wat ze doen. Hoewel sudo specifieke gebruikers specifieke rechten kan geven voor specifieke taken, heeft het toch tekort komingen. Het zou alleen maar moeten worden gebruikt voor taken als de server re-starten, een gebruiker toevoegen. Elk programma dat een shell escape heeft geeft root toegang tot de gene die het programma heeft gestart heeft. Dit zijn bijvoorbeeld de meeste editors. Ook een onschadelijk programma as /bin/cat kan gebruikt worden om files teoverschrijven, dit kan veroorzaken dat het root account wordt misbruikt. beschouw sudo als een verantwoording, maar verwacht niet dat het het root account kan vervangen en dan nog steeds secure is. 5. Files en Filesystem Security Een paar minuten van voorbereiding en planning voordat je je systemen online zet kan helpen om ze te beschermen en de data erop ook. · Er moet nooit een reden zijn om vanuit de homedir van users een SUID/SGID commando te draaien. Gebruik de nosuid optie in /etc/fstab voor partities die schrijf-baar zijn voor gebruikers die niet root zijn. Je kan ook nodev en noexec gebruiken op de user's home partitie, en ook /var, dit verbied het draaien van programma's en het aanmaken van character en block devices, wat eigenlijk nooit nodig is. · Als je een filesysteem exporteert met NFS, configureer je /etc/exports dan met de meest beperkende toegang mogelijk. Dit betekend geen wildcards, geen root schrijf toegang, en zoveel mogelijk als read-only(alleen lezen) exporteren. · Configureer je users file creatie umask zo beperkt mogelijk. Zie ook ``umask settings''. · Als je een filesysteem gebruikt over het netwerk met NFS, configureer dan je /etc/fstab met goede beperkingen. Zoals, `nodev'. `nosuid', en misschien `noexec'. · Zet filesysteem limitaties ipv alles toestaan, zoals het default is. Je kan dat per gebruiker instellen door gebruik te maken van de resource-limits PAM module en /etc/pam.d/limits.conf. Bijvoorbeeld, limieten voor de groep users kan er zo uitzien: @users hard nproc 50 @users hard rss 5000 Dit zegt dat het verboden is om core files te maken, dat er maar 50 processen magen draaien, en maar 5M geheugen. · De /var/log/wtml en /var/run/utml files bevatten de login lijst van alle gebruikers op je systeem. Hun eenheid moet bewaard blijven, want het kan gebruikt worden om vast te stellen wanneer en van waar een gebruiker (of een mogelijke indringer) het systeem is binnen gekomen. Deze files moeten ook de 644 permissie hebben, zonder het beïnvloeden van het normale systeem. · De immutable bit kan gebruikt worden om per ongeluk deleten of overschrijven van een file tegen te gaan een file die beschermt moet worden. Het houd ook iemand tegen om een symbolic link naar de file te maken (zulke symbolische links zijn een bron van aanvallen die verwijder van /etc/passwd en /etc/shadow to gevolg hebben). Zie de chattr(1) man page voor meer informatie over het immutable bit. · SUID en SGID files op je systeem zijn een mogelijk security risico, en moet nauwlettend in de gaten gehouden worden. Omdat deze programma's extra rechten geven aan de persoon die ze gebruikt, het is nodig dat in-secure programma's niet worden geïnstalleerd. Een favoriete truck van crackers is een SUID-root programma misbruiken, en dan een SUID programma achter laten als een achterdeur om de volgende keer door die achterdeur binnen te komen, zelfs als het originele gat is dichtgestopt. Vindt alle SUIT/SGID programma's op je systeem en houdt deze in de gaten, dus wees bewust van elke verandering, die kan duiden op een waarschijnlijk indringer. Gebruik het volgende commando om alle SUID/SGID programma's op je systeem te vinden: root# find / -type f \( -perm -04000 -o -perm -02000 \) De Debian distributie draait een job elke nacht om vast te stellen welke SUID files er zijn. Het vergelijkt ze dan met de vorige nacht. Je kan kijken in /var/log/suid* voor een log. Je kan het SUID of SQID permissie verwijderen op een verdacht programma met chmod, dan het terug veranderen als je het nodig vindt. · Wereld schrijf-bare files, vooral systeem files, kunnen een security hole zijn als een cracker toegang to je systeem weet te verkrijgen en ze dan veranderd. Wereld schrijf-bare directories zijn gevaarlijk, doordat ze een cracker files laten toevoegen en verwijderen als hij dat wil. Om alle wereld schrijf-bare files op te sporen, gebruik dan het volgende commando: root# find / -perm -2 ! -type l -ls En weet zeker waarom deze files schrijf-baar zijn. In de normale gang van zaken , zijn enkele files wereld leesbaar, inclusief enkele van /dev, en symbolische links, dus de ! -type l haalt ze uit het vorige find commando. · Files zonder eigenaar kunnen ook ook een indicatie van een indringer zijn. Je kan alle files zonder eigenaar en groep op je systeem vinden door het volgende commando: root# find / -nouser -o -nogroup -print · Alle .rhosts files vinden zou een van je reguliere taken moeten zijn als systeem administrator, omdat deze files niet zijn toegestaan op je systeem. Onthoud een cracker heeft maar een in- secure account nodig om toegang te krijgen tot het hele netwerk. Je kunt alle .rhosts files op je systeem vinden door het volgende commando: root# find /home -name .rhosts -print · Tot slot, voordat je de permissies veranderen op iedere systeem file, weet dan zeker wat je doet. Verander nooit permissies op een files omdat dat je makkelijkste weg lijkt om iets werkende te krijgen. Altijd eerst vaststellen waarom de file die permissies heeft voordat je het veranderd. 5.1. Umask Instellingen Het umask commando kan gebruikt worden om de standaard file creatie mode op je systeem in te stellen. Het is de octale aanvulling op de verzochte file mode. Als een files is aangemaakt zonder om te kijken naar hun permissie instellingen, kan de gebruiker lees en schrijf bevoegdheden geven aan iemand die dat niet mag. Meestal bevatten de umask instellingen 022, 027 en 077 ( wie het meest beperkt is). Normaal is het umask ingesteld in /etc/profile, zodat het betrekking heeft op elke gebruiker op het systeem. Het file aanmaak mask kan uitgerekend worden door de gewilde permissies van 777 af te trekken. In andere woorden, een umask van 777 zou betekenen dat de file niet leesbaar, niet schrijf-baar of niet uitvoerbaar is voor iedereen. Een mask van 666 zou betekenden dat de file een mask heeft van 111. Bij voorbeeld, je kan een regel hebben als deze: # Set the user's default umask umask 033 Weet zeker dat je root's umask 077 maakt, dat schakeld lezen, schrijven en uitvoer rechten voor iedere ander gebruiker uit, tenzij deze is veranderd met chmod. Be sure to make root's umask 077, which will disable read, write, and execute permission for other users, unless explicitly changed using chmod. In dit geval zou een nieuwe directore de 744 permissies hebben, verkregen door 033 van 777 aftetrekken. Nieuwe files met het 033 mask hebben de 644 permissie. Als je Red Hat gebruik, en de gebruiker zit alleen in een groep met een zelfde naam (User Private Groups), is 002 voldoen als umask. Dit is doordat de standaard configuratie is 1 gebruiker per groep. 5.2. File Permissies Het is belangrijk dat je systeem files niet open zijn voor het zomaar bewerken van gebruikers en groepen die niet zulk systeem onderhoud moeten doen. Unix verdeeld toegang controle op files en directories over drie groepen: owner(eigenaar), group(groep) en other(andere). Er is altijd een eigenaar, elk aantal leden van een groep, en de rest. Een snelle uitleg over Unix rechten(permissions): A quick explanation of Unix permissions: Eigendom(ownership) - Welke gebruiker(s) en groep(en) heeft(hebben) controle over de permissies over de node en de moeder node. Permissies - Bits capable of being set or reset to allow certain types of access to it. Permissies van directories kunnen verschillende betekenissen hebben dan die van files. Lezen: · De mogelijkheid om de file te lezen · De mogelijkheid om in de directorie te kijken. Write: · De mogelijkheid om een file te veranderen, toe te voegen of verwijderen. · De mogelijkheid om files in een directorie te verplaatsen, verwijderen of toevoegen. Uitvoeren: · De mogelijkheid om binary programma's of shell scripts uit te voeren · De mogelijkheid om te zoeken in de directory in combinatie met het lees recht Text attributen opslaan: (voor directories) Het "sticky bit" heeft ook een andere betekenis op directories dan op files. Als de sticky bit op een directory staat mag iemand alleen files weg gooien als hij de eigenaar is, zelfs als hij schrijf rechten heeft op de directorie. Alleen als er uitzonderlijke rechten worden toegewezen mag hij de file weggooien. Dit is gemaakt voor directories als /tmp, die voor iedereen schrijf-baar zijn, maar waar het niet gewild is dat iedereen zomaar elke file kan weggooien. De sticky bit is te zien als een t in een lange directorie lijst. SUID Attribuut: (Voor files) Dit beschrijft het set-user-id recht op een file. Als de set user ID toegangs mode is ingesteld in de eigenaars rechten, en de file is uitvoerbaar, processen die het draaien hebben toegang de systeem bronnen als de eigenaar van de file, in tegenstelling to de gene die het proces startte. Dit is de oorzaak van veel "buffer overflow" misbruik. SGID Attribuut: (Voor file) Als dit ingesteld is in de groep permissies, houdt dit bit het "set group id" status van een file. Dit gedraagt zich net als SUID, alleen de groep is beïnvloed. De file moet uitvoerbaar zijn voor dit. SGID Attributen: (Voor directories) Als je het SGID bit op een directorie instelt (met chmod g+s directorie), files die aangemaakt worden in die dir hebben als groep de groep die eigenaar is van de directorie. Jij - De eigenaar van de file Groep - De groep waar de file aan toebehoord Iedereen - Iedereen op het systeem die niet de eigenaar is of in de groep hoort. File Voorbeeld: -rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin 1st bit - directorie? (nee) 2nd bit - lezen door eigenaar? (ja, door kevin) 3rd bit - schrijven door eigenaar? (ja, door kevin) 4th bit - uitvoeren door eigenaar? (nee) 5th bit - lezen door groep? (ja, door users) 6th bit - schrijven door groep? (nee) 7th bit - uitvoeren door groep? (nee) 8th bit - lezen door iedereen? (ja, door iedereen) 9th bit - schrijven door iedereen? (nee) 10th bit - uitvoeren door iedereen? (nee) De volgende regels zijn voorbeelden van de minimale instellingen van rechten om aan de er achter getypte rechten te voldoen. Je kan meer rechten willen geven dan hieronder staan beschreven, maar dit moet beschrijven wat deze minimale rechten met files doen: -r-------- Lees rechten op de file voor de eigenaar --w------- Laat de eigenaar de file aanpassen of weggooien (Notitie dat iedereen met schrijf rechten op de directory de file kan overschrijven en dus verwijderen) ---x------ De eigenaar kan het programma uitvoeren, maar geen shell script want deze hebben ook lees rechten nodig. ---s------ Laar de file uitvoeren met een effectief User ID = aan eigenaar --------s- Laat de file uitvoeren met een effectief Group ID = aan de groep -rw------T Geen update van "laatst veranderd tijd". Meestal voor swap files. ---t------ Geen effect. (sticky bit) Directory Voorbeeld: drwxr-xr-x 3 kevin users 512 Sep 19 13:47 .public_html/ 1st bit - directorie? (ja, er staan veel files in) 2nd bit - lezen door eigenaar? (ja, door kevin) 3rd bit - schrijven door eigenaar? (ja, door kevin) 4th bit - uitvoeren door eigenaar? (ja, door kevin) 5th bit - lezen door groep? (ja, door users) 6th bit - schrijven door groep? (nee) 7th bit - uitvoeren door groep? (ja, door users) 8th bit - lezen door iedereen? (ja, door iedereen) 9th bit - schrijven door iedereen? (nee) 10th bit - uitvoeren door iedereen? (ja, door iedereen) De volgende regels zijn voorbeelden van de minimale instellingen van rechten om aan de er achter getypte rechten te voldoen. Je kan meer rechten willen geven dan hieronder staan beschreven, maar dit moet beschrijven wat deze minimale rechten met directories doen: dr-------- De inhoud kan bekeken worden, maar de file attributen kunnen niet gelezen worden d--x------ Je kan de directory binnen gaan, en je kan hem gebruiken in een lang uitvoer path dr-x------ De file attributen kunnen gelezen worden door eigenaar. d-wx------ Files kunnen worden aangemaakt en verwijderd, zelfs als het niet de actieve directorie is d------x-t Hou het tegen voor anderen met schrijf rechten om files weg te gooien. Gebruikt in /tmp d---s--s-- Geen effect. Systeem configuratie files (Normaal in /etc) hebben meestal de 640 mode (-rw-r-----) en root is de eigenaar. Afhankelijk van je bedrijfs security eisen, kun je dit veranderen. Laat een systeem file nooit schrijf-baar door een groep of iedereen. Enkele configuratie files, zoals /etc/shadow, moeten alleen leesbaar zijn voor root, en directories in /etc moeten op z'n minst niet toegankelijk zijn voor anderen. SUID Shell Scripts SUID shell scripts zijn een serieus security risico, en daardoor laat de kernel die scripts niet toe. Ongeacht van hoe secure je denkt dat je shell script is, het kan worden misbruikt om een cracker een root shell te geven. 5.3. Integriteit verificatie met Tripwire Een ander zeer goede manier voor het detecteren van locale aanvallen (en ook op het netwerk) op je systeem is het draaien van een intergeriteit controleur zoals Tripwire. Tripwire draait een aantal controles op alle belangrijke binaries en configuratie files en vergelijkt ze met een database met de vorige files, goed voor een opmerking. Dus, elke verandering in een file wordt aangegeven. Het is een goed idee om Tripwire te installeren op een floppy, en dan het floppy fysiek op write protected zetten. Door dit kunnen indringers niet met Tripwire zelf knoeien en ook de database niet veranderen. Zodra Tripwire hebt geïnstalleerd, is het een goed idee om het te draaien als een van je normale security administratie taken om te zien of er iets is veranderd. Je kan het ook toevoegen aan je crontab en Tripwire elke nacht van je floppy laten draaien en je resulten 's morgens laten mailen. Zoiets als: # set mailto MAILTO=kevin # run Tripwire 15 05 * * * root /usr/local/adm/tcheck/tripwire zal je elke morgen om 5:15 een verslag sturen. Tripwire kan een geluk zijn om indringers te detecteren voor dat je ze zelf opmerkt. Doordat een hoop files veranderen op het gemiddelde systeem, moet je onderscheid maken tussen wat je jouw werk is en wat het werk van een cracker is. Je kunt Tripwire vinden op http://www.tripwiresecurity.com, Gratis. Handboeken en steun kan gekocht worden. 5.4. Trojaanse paarden "Trojaanse paarden" zijn genoemd naar de fabelachtige strategie in Homer's "Iliad". Het idee is dat een cracker een programma maakt of een binary dat geweldig lijkt, en andere mensen aanmoedigt het te downloaden en het te draaien als root. Dan kan het programma hun systeem kraken als ze geen aandacht besteden. Terwijl ze denken dat het programmaatje dat ze net uitgevoerd hebben maar een ding doet, heeft het wel hun security doorbroken. Je moet oppassen met de programma's die je installeert op je machine. Redhat heeft MD5 controles en PGP handtekeningen op hun RPM files zodat je kan verificeren dat het is wat je denk. Andere distributies hebben soortgelijke methoden. Je moet niet zomaar ieder onbekend programma draaien, vanwaar je geen source hebt, als root! Veel aanvallers willen een source code uitgeven aan het publieke onderzoek. Hoewel het complex is, haal altijd je source van een echt distributie site. Als het gaat draaien als root, kijk dan eerst naar de source en bevestig deze. 6. Password Security en Versleuteling Een van de meest belangrijke security onderwerpen van vandaag de dag zijn pas-woorden. Het is belangrijk dat jij en de andere gebruikers een secure en onraad-baar pas-woord hebben. De meest recente Linux distributies hebben het passwd programma dat je niet instaat stelt om een makkelijk raad-baar pas-woord te nemen. Weet zeker dat je passwd programma deze opties heeft en bij de tijd is. Een diepgaande discussie over Versleuteling is te ver gaand voor dit document, maar een kleine introductie is wel op z'n plaats. Versleuteling is erg handig, misschien is het zelfs nodig. Er zijn allemaal verschillende methoden van data encryptie, allemaal met z'n eigen eigenschappen. De meeste Unicies (een Linux is geen uitzondering) gebruiken standaard een manier van ecriptie, genoemd DES (Data encryptie standaard) op je pas-woorden te ver-sleutelen De ver-sleutelde pas-woorden staan (normaal) in /etc/passwd (of minder vaak in) /etc/shadow. Als we proberen in te loggen, wordt het pas-woord dat we ingetypt hebben weer versleuteld en vergeleken met het pas-woord in de pas-woord file. Als ze gelijk zijn, mag je inloggen, want de pas-woorden moeten wel hetzelfde zijn. Hoewel DES een twee weg versleutelings algoritme is ( je kan de en-coderen en decoderen, als je de goede sleutel geeft), de variant die most unices is een een weg versleutelings algoritme. Dit betekend dat het niet mogelijk is om te achterhalen wat er staat in /etc/passwd (of /etc/shadow) heeft gestaan. Brute sterke aanvallen, zoals "Crack of "John the Ripper" (zie sectie ``'') kunnen vaak het pas-woord raden tenzij je pas-woord voldoende toevallig is. De PAM module (zie hieronder) geeft je de mogelijkheid om een andere versleutelings routine te nemen (MD5 of iets anders). Je kan Crack ook gebruiken voor eigen voordeel. Probeer Crack te runnen op je pas-woord database om in-secure pas-woorden te vinden. Dan neem je contact op met de desbetreffende gebruiker, en vraag je hem zijn pas-woord te veranderen. Je kan gaan naarhttp://consult.cern.ch/writeup/security/security_3.html om informatie te vinden over hoe je een goed pas-woord moet kiezen. 6.1. PGP en Public-Key Versleuteling Public-Key versleuteling, zoals PGP die gebruikt, gebruikt een sleutel voor encryptie en een voor decrytie. Traditionele versleuteling, gebruikt meestal maar een sleutel voor encryptie en een voor descriptie; deze sleutel moet bij beide partijen bekend zijn, en dus moet het verstuurd worden van de een naar de ander, veilig. Om de behoefte van het veilig sturen van een versleutelings sleutel te verzachten, gebruikt Public-Key versleuteling twee verschillende sleutels: een publieke sleutel en een prive sleutel. Ieders prive sleutel is verkrijgbaar voor iedereen om de encryptie te doen, maar de prive sleutel van iedereen moet bewaard blijven. Om messages te de- crypten met hun prive sleutel met het versleuteld zijn met de correcte publieke sleutel. Er zijn voordelen aan beiden public key en prive key versleuteling, en je kan de verschillen tussen die twee lezen in de RSA Versleutelings FAQ <http://www.rsa.com/rsalabs/newfaq/>, PGP (Pretty Good Privacy) is goed ondersteund in Linux. Versie 2.6.2 en 5.0 werken goed. Voor een goede inleiding op PGP en hoe het te gebruiken kijk in de PGP FAQ: http://www.pgp.com/service/export/faq/55faq.cgi Weet zeker dat je de goede versie voor je land gebruik. Door export beperkingen van de regering van de VS, sterke versleuteling is verboden om ge transporteert te worden in elektronische data van buiten de VS. VS export controle wordt nu gedaan door EAR (Export Administration Regulations). Dat gebeurt niet meer door ITAR. Er is ook een stap voor stap gids voor het configureren van PGP in linux, deze is te vinden op: http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html. Het is geschreven voor de Internationale versie van PGP, maar het is makkelijk te gebruiken voor de VS versie. Misschien heb je ook wel een patch nodig voor de nieuwste versies voor Linux; de patch is verkrijgbaar op ftp://metalab.unc.edu/pub/Linux/apps/crypto. Er is een project voor een gratis her uitvoering van pgp met open source. GnuPG is een compleet en gratis vervanger voor PGP. Omdat IDEA of RSA niet gebruikt kan het worden worden gebruikt zonder beperkingen. GnuPG is bijna compatible met RPC2440 (OpenPGP). Kijk op de GNU Privacy Guard web pagina voor meer info: http://www.gpg.org/. Meer informatie over versleuteling kan gevonden worden in de RSA versleutelings FAQ, verkrijgbaar op http://www.rsa.com/rsalabs/newfaq/. Hier vindt je info over termen als "Diffie-Hellman", "Public-Key cryptography", "digitaal certificaten", etc. 6.2. SSL, S-HTTP, HTTPS en S/MIME Vaak vragen gebruikers de verschillen tussen de verschillende security en versleutelings protocollen, en ze ze moeten gebruiken. Often users ask about the differences between the various security and encryption protocols, and how to use them. Terwijl dit geen security document is, is het toch een goed idee om globaal uitte-leggen wat elk protocol is, en waar je meer informatie kan vinden. · SSL: - SSL, of Secure Sockets Layer, is een versleutelings methode gemaakt door Netscape om security over het internet aan tebieden. Het ondersteund enkele verschillende versleutelings methoden, en verzorgt ook client en server authenticatie. SSL handelt op de transport laag, het maakt een secure versleuteld kanaal van data, en kan dus naadloos data ver-sleutelen van verschillende soorten. Dit is vaak te zien als je naar een secure web-site gaat en een secure online document bekijkt met Communicator en dient als basis voor secure communicaties met Communicator, net als andere Netscape Communicaties dat versleuteling. Meer informatie kan gevonden worden op http://www.consensus.com/security/ssl-talk-faq.html. Informatie over Netscape 's andere security uitvoeringen is een goed startpunt voor deze protocollen verkrijgbaar op http://home.netscape.com/info/security-doc.html. · S-HTTP: is een ander protocol dat voorziet in beveiligingsservices over het Internet. Het werd ontworpen om te voorzien in vertrouwelijkheid, authenticatie, integriteit, en zonder verwerping-en (kan niet per abuis voor iemand anders aangezien worden). Het biedt ondersteuning voor meerdere vormen van sleutel- beheer mechanismen en crypto-grafische algoritmen via option negotiation tussen de betrokken partijen in iedere transactie. S- HTTP is beperkt tot de specifieke software dat het implementeert, en versleutelt ieder bericht individueel. (Afkomstig uit de RSA Cryptography FAQ, pagina 138). · S/MIME: - S/MIME, of Secure Multipurpose Internet Mail Extension, is een versleuteld standaard om electronishe post te ver-sleutelen en andere typen berichten op het internet. Het is een open standaard ontworpen door RSA, dus het is mogelijk dat we het binnenkort in Linux zien. Meer informatie over S/MIMI kan gevonden worden op http://home.netscape.com/assist/security/smime/overview.html. 6.3. Linux IPSEC Uitvoering Samen met CIPE, en andere vormen van data versleuteling, zijn er ook nog een aantal andere uitvoeringen van IPSEC voor Linux. IPSEC is een operatie van de IETF om een versleutelings-secure communicaties te maken op een IP netwerk, en om verificatie te verzorgen, intergeriteit, toegang controle en vertrouwen. Informatie over IPSEC en Internet ontwerp kan gevonden worden op http://www.ietf.org/html.charters/ipsec-charter.html. Je kan er ook links vinden naar andere protocollen die betrekking hebben op sleutel controle en een IPSEC mailing lijst met archieven De x-kernel Linux uitvoering, die wordt ontwikkeld op de Universiteit van Arizona, gebruikt een object gebaseerd lijstwerk voor het uitvoeren van het netwerk protocol genoemd x-kernel, het kan gevonden worden op http://www.cs.arizona.edu/xkernel/hpcc-blue/linux.html. Simpel weg, de x-kernel is een methode van passerende berichten op kernel niveau, dat maakt de uitvoering makkelijker. Een andere gratis verkrijgbare IPSEC uitvoering is Linux FreeS/WAN IPSEC. Hun home page verklaard, "Deze diensten stellen je in staat om veilige tunnels te bouwen door on-vertrouwde netwerken. Alles dat door het on- vertrouwde netwerk gaat wordt versleuteld door de IPSEC gateway machine en weer gedecrypt aan de andere kant van de tunnel. Het resultaat is een Virtual Private Network of VPN. Dit een netwerk dat effectie prive zelfs als het machine betreft op verschillen de plaatsen op de wereld verbonden door het onveilige Internet. Het is te downloaden op http://www.xs4all.nl/~freeswan/, en is aan versie 1.0 als we dit document schrijven. Als met andere vormen van versleuteling is het niet uitgegeven met de kernel standaard door de export beperkingen. 6.4. ssh (Secure Shell) en stelnet ssh en stelnet zijn programma's die je instaat stellen om inteloggen op een andere computer met een ver-sleutelde verbinding. ssh is een pakket van programma's gebruikt als een veilige vervanger voor rlogin, rsh en rcp. Het gebruikt Public-Key versleuteling om de communicaties tussen twee computers te ver-sleutelen, net als de gebruikers te verifiëren. Het kan gebruikt worden om veilig in te loggen op een andere computer of om data tussen twee computers te zenden, terwijl het man-in-the-middle attacks en Dns spoofing tegen gaat. Het gebruikt data compressie op je connecties, en secure X11 communicaties tussen de hosts. De ssh home kan gevonden worden op http://www.cs.hut.fi/ssh/ Je kan ssh ook gebruiken om van je Windows machine naar je linux machine ssh server te gaan. Er zijn verschillende gratis Windows ssh clienten zoals de client op: http://guardian.htu.tuwien.ac.at/therapy/ssh/ ook de commercieële uitvoering van DataFellows, op http://www.datafellows.com. Er is ook een open source project opnieuw uit te rusten genoemd "pssst..." Voor meer informatie zie: http://www.net.lut.ac.uk/psst/ SSLeay is een gratis uitvoering van Netscape's Secure Sockets Layer protocol, ontwikkeld door Eric Young. Het bevat enkele applicaties, zoals Secure telnet, een module voor Apache, verschillende database, zo wel als verschillende algorithme's zoals DES, IDEA en Blowfish. Als je deze bibliotheek gebruik, is er een secure telnet vervanger die de telnet connectie versleuteld. Het met SSH is dat stelnet SSL gebruikt, het Secure Socket Layer protocol ontwikkeld door Netscape. Je kan Secure telnet en Secure FTP vinden door de starten met de SSLeay FAQ, verkrijgbaar op http://www.psy.uq.oz.au/~ftp/Crypto/. SRP is een andere secure telnet/ftp uitvoering. Van hun web pagina: "Het SRP project ontwikkeld secure Internet software, gratis voor wereldwijd gebruik. Startend met een geheel secure Telnet en FTP distributie, we hopen zwakke netwerk verificatie te vervangen met sterke vervangers die niet verliezen met gebruikers vriendelijke security. Security moet de standaard zijn, niet een optie!" Voor meer informatie, ga naar http://srp.stanford.edu/srp. 6.5. PAM - Pluggable Authentication Modules Nieuwere versies van de Red Hat Linux distributie leveren een samengebonden bevestigings schema genoemd "PAM". PAM stelt je in staat om je bevestigingen en benodigdheden gelijk te veranderen, en alle lokale bevestigings methoden veranderen zonder dat je het opnieuw moet compileren. PAM configureren hoort niet tot dit document, maar ga eens kijken op de PAM web-site voor meer informatie. http://www.kernel.org/pub/linux/libs/pam/index.html. Een paar dingen die je kan doen met PAM: · Een andere encryptie methode dan DES gebruiken voor je pas-woorden. (Het moeilijker maken om ze zomaar de decoden) · Bronnen limieten instellen voor al je gebruikers zodat ze je diensten niet kunnen tegenwerken (aantal processen, hoeveelheid geheugen, etc) · Shadow passwords aanzetten (zie hieronder). · Gebruikers alleen laten inloggen op bepaalde tijden en van bepaalde plaatsen. In een paar uur van installeren en con-figuren van je systeem, kan je veel aanvallers tegenhouden voordat ze verscheinen. Bijvoorbeeld, kun je PAM gebruiken om .rhosts uit te zetten, door een regel aan /etc/pam.d/rlogin toetevoegen: # # Disable rsh/rlogin/rexec for users # login auth required pam_rhosts_auth.so no_rhosts 6.6. Cryptographic IP Encapsulation (CIPE) Het belangrijkste doel van deze software is een middel aan te bieden voor veilige(tegen afluisteren, met o.a verkeer analyse, en vervalste berichten injectie) sub-netwerk interconnecite over een onveilig packet netwerk als Internet. CIPE versleuteld de data op de netwerk laag. Packet-en die tussen de computers reizen worden versleuteld. De encryptie motor is geplaatst naar de driver die de packet-ten ontvangt en verstuurd. Dit is niet net als SSH, wie de data versleuteld bij de connectie, op de socket laag. Een logische connectie tussen twee programma's die draaien op verschillende computers word versleuteld. CIPE kan gebruikt worden voor tunneling, om bijvoorbeeld een Virtual Private Netwerk te maken. Het lage encryptie niveau heeft voordelen dat het transparant werkt tussen twee computers die zitten in het VPN, zonder verandering in de applicatie software. Overgenomen uit de CIPE documentatie: De IPSEC standaard defineerd een aantal protocollen die gebruikt kunnen worden (met andere dingen) om ver-sleutelde VPN's te maken. Hoewel, IPSEC een zwaar en complex protocol is met een hoop opties, uitvoeringen van de full protocol versie zijn nog maar zelden gebruikt en sommige delen (zoals een sleutel manager) zijn nog steeds niet helemaal klaar. CIPE gebruikt een soortgelijke aanpak, waarin veel dingen als parameter ingesteld worden( zoals de gebruikte versleutelings methode die gebruikt wordt) zijn een installatie optie. Dit limiteert de flexibiliteit, maar het is dan wel een simpelere (en daardoor efficient, makkelijk te debuggen...) uitvoering. Meer informatie kan gevonden worden op http://www.inka.de/~bigred/devel/cipe.html Net als andere vormen van versleuteling, is het niet gedistributeerd met de kernel door de export limitaties. 6.7. Kerberos Kerberos is een verificatie systeem ontwikkeld door het Athena Project op MIT. Als een gebruiker inlogt, Kerberos bevestigd de gebruiker (doormiddel van een paswoord) en geeft hem de mogelijkheid zijn identiteit door te-geven aan andere servers en computers verspreid over het netwerk. Deze bevestiging is dan gebruikt door andere programma's zoals rlogin om gebruikers de mogelijkheid te geven om op andere computers inteloggen zonder pas-woord (ipv de .rhosts file). Kerberos en andere programma's die erbij zitten, houden gebruikers tegen om het systeem te "bedriegen" zodat ze denken dat je iemand anders bent. Helaas, is het installeren van Kerberos een zeer opdringerig, vragend om verandering en vervanging van een aantal standaard programma's Je kan meer informatie vinden over Kerberos op the Kerberos FAQ, en de code is te vinden op http://nii.isi.edu/info/kerberos/. [Van: Stein, Jennifer G., Clifford Neuman, and Jeffrey L. Schiller. "Kerberos: Een bevestigings dienst voor een Open netwerk systeem." USENIX Conference Proceedings, Dallas, Texas, Winter 1998.] Kerberos moet niet je eerste stap zijn om veiligheid te bevorderen op je hosts. Het is best ingewikkeld, en het is niet veel gebruikt, zeg, SSH. 6.8. Shadow Passwords. Shadow passwords wordt gebruikt om je versleutelde pas-woorden geheim te houden voor normale gebruikers. Anomaal zijn deze versleutelde pas- woorden opgeslagen in de /etc/passwd file voor iedereen te lezen. Iedereen kan er dan een programmaatje op loslaten om te kijken welke het zijn. Shadow passwords, worden opgeslagen in /etc/shadow, deze file kan alleen gelezen worden door de mensen die dat mogen. Om shadow passwords te gebruiken, moet je al je programmaatjes her compileren die de /etc/passwd file gebruiken. PAM (hierboven) geeft je ook de mogelijkheid om de shadow module er zo in te zetten; het is niet nodig dat de uitvoerbare bestanden worden ge her compileert. Je kan in de Shadow-Password HOWTO kijken voor meer informatie als deze nodig is. Hij is verkrijgbaar op http://metalab.unc.edu/LDP/HOWTO/Shadow- Password-HOWTO.html Het is goed bij de tijd, en hoeft geen distributie met PAM. 6.9. "Crack" en "John the Ripper" Als om een of andere reden je passwd programma niet dwingt om moeilijk te raden pas-woorden te nemen, kun je een pas-woord kraak programmaatje draaien om zeker te weten dat je gebruikers moeilijk te raden pas-woorden nemen. Pas-woord kraak programma's werken op een simpel idee: ze proberen elk woord in het woordenboek, en dan variaties op die woorden, vesleutelen ze en kijken of deze gelijk is aan je versleutelde pas-woord. Als ze een zelfde vinden weten ze je pas-woord. Er zijn een aantal van die programmatjes... de twee meest bekende zijn "Crack" en "John the Ripper" (http://www.false.com/security/john/index.html) . Ze nemen wel een hoop van je cpu tijd in, maar het loont de moeite, want als je de pas- woorden eruit haalt die slecht zijn, heeft de aanvaller niets meer aan het programma. Onthoudt dat een aanvaller altijd eerst een paar andere gaten probeert om de /etc/passwd te lezen, maar zulke gaten zijn meer gewoon dan je zou denken. Omdat security alleen sterk is als er geen zwakke hosts zijn, is het de moeite als je Windows machine(s) op je netwerk checkt met L0phtCrack, een Crack uitvoering voor Windows. Het is verkrijgbaar op http://www.l0pht.com 6.10. CFS - Cryptographic File System en TCFS - Transparent Cryptographic File System CFS is een manier om een gehele directorie structuur te versleutelen en de gebruikers in staat stellen om er versleutelde files in te zetten. Het gebruikt een NFS server op de locale machine. De RPM is verkrijbaar op http://www.replay.com/redhat/, en meer informatie over hoe het werkt op ftp://ftp.research.att.com/dist/mab/. TCFS verbeterd CFS door meer integratie te bieden met het file systeem, zodat het transparant is voor de gebruiker dat het filesysteem versleuteld is. meer informatie op: http://edu- gw.dia.unisa.it/tcfs/. Het is niet nodig om het op het gehele filesysteem te gebruiken. Het werkt ook op alleen directories. 6.11. X11, SVGA en display security 6.11.1. X11 Het is belangrijk om je grafische display te beschermen tegen indringers die je pas-woorden overnemen terwijl je het typt, informatie lezen op je scherm, of zelfs een gat gebruiken om root toegang te krijgen. Remote X applicaties draaien over een netwerk kan ook een gevaar zijn, sniffers kunnen al je contacten met de andere computer zien. X heeft een aantal toegangs controle mechanismen. De simpelste van deze is computer-gebaseerd: je gebruikt xhost om in te stellen welke machines toegang hebben tot je X display. Dit is helemaal niet secure, want als iemand toegang heeft tot je machine, kunnen ze xhost +hun machine doen en ze kunnen gemakkelijk binnen komen. Ook, als je ook ondertrouwde machines toegang moet geven tot je display kan iedereen je display overnemen. Als je xdm (X Display Manager) gebruikt om in te loggen, krijg je een veel betere toegangs methode: MIT-MAGIC-COOKIE-1. Een 128-bit "cookie" wordt gegenereerd en opgeslagen in .Xauthority. Als je een andere machine toegang moet geven tot je display kun je het xauth commando gebruiken en de info in je .Xauthority file gebruiken om alleen die connectie toe te staan. Zie de Remote-X-Apps mini-howto, verkrijgbaar op http://www.nl.linux.org/doc/HOWTO/Remote-X-Apps-NL.html. Je kan ssh ook gebruiken (zie ``'', hierboven) om secure X connecties toe te staan. Dit heeft als voordeel dat alle data wordt versleuteld en dat er niets naar het netwerk weg lekt. Kijk in de Xsecurity man pagina voor meer informatie over X security. Het veiligste om te gebruiken is xdm om in te loggen op je console en dan ssh te gebruiken om naar andere computers te gaan en daar je X programma's draaien. 6.11.2. SVGA SVGAlib programma's zijn typisch SUID-root om toegang te krijgen to je Linux machines video hardware. Dit maakt ze er gevaarlijk. Als ze crashen, moet je re-booten om een bruikbaar console terug te krijgen. Weet zeker dat de SVGA programma's die je draait vertrouwbaar zijn, zo dat ze nog een beetje te vertrouwen zijn. Nog beter, draai ze helemaal niet. 6.11.3. GGI (Generic Graphics Interface project) Het Linux GGI project probeert problemen op te lossen met het video interface in linux. GGI verplaatst een klein deel van de video code in de kernel, en dan neemt het controle over het video systeem. Dit betekend dat GGI instaat is om je console te herstellen en het zo weer goed te maken. Ze hebben ook een security waarschuwings sleutel, zodat je zeker weet dat er geen Trojan horse login programma's draaien. http://synergy.caltech.edu/~ggi/ 7. Kernel Security Dit is een beschrijving van de kernel configuratie opties die te maken hebben met security, en een uitleg wat ze doen en hoe ze te gebruiken. Als de kernel je netwerk op je computer beheerst, is het belangrijk dat het erg veilig is, en dat het niet misbruikt kan worden. Om enkele van laatste netwerk aanvallen tegen te gaan, moet je je kernel versie goed houden. Je vind nieuwe kernels op <ftp://ftp.kernel.org> of van je distributie leverancier. 7.1. 2.0 Kernel Compilatie Opties Voor 2.0.x kernels, hebben de volgende opties effect. Je moet de opties zijn onder het kernel configuratie proces. Veel van het commentaar is uit ./linux/Documentation/ Configure.help, Dat is dezelfde help als in het make config proces van de kernel. · Network Firewalls (CONFIG_FIREWALL) Deze optie zou aan moeten staan als je een firewall of masquerading wilt draaien op je linux machine. Als het gewoon een algemene client machine wordt, is het veilig om nee te zeggen. · IP: forwarding/gatewaying (CONFIG_IP_FORWARD) Als je IP forwarding aanzet, wordt je Linux machine een router. Als je machine op het netwerk is, kun je data van het ene naar het andere netwerk doorsturen, en misschien een firewall zetten om dat te voorkomen. Normale dail-up gebruikers zullen dit uitzetten, en andere zullen zicht concentreren op de security overwegeningen om dit te doen. Firewall willen dit aan hebben staan, en is gebruikt in combinatie met de firewall software. Je kan IP forwarding dynamisch aanzetten met het volgende commando: root# echo 1 > /proc/sys/net/ipv4/ip_forward en weer uit met: root# echo 0 > /proc/sys/net/ipv4/ip_forward Onthoud deze files, en hun grote, weerkaats niet hun eigenlijke grootte, en ondanks worden ze leeg, mag of mag niet. · IP: syn cookies (CONFIG_SYN_COOKIES) Een "SYN Aanval" is een denial of service (DoS) aanval die alle systeem bronnen waarom je dit moet uitzetten. In de 2.1 kernel series staat deze optie !!mearly!! syn cookies toe, maar zet ze niet aan. Om ze aan te zetten doe: root# echo 1 > /proc/sys/net/ipv4/tcp_syncookies <P> Deze optie is nodig als je je machine gaat configureren als een firewall, of als je masquerading gaat doen, of als je je dail-up computer wilt beschermen tegen iemand die wil binnen dringen via je PPP dail-up interface. · IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) Deze optie geeft je informatie over packets die je firewall ontvangt, zoals zender, ontvanger, poort, etc. · IP: Drop source routed frames (CONFIG_IP_NOSR) Deze optie moet aan staan. Source gerouteerde frames houden het gehele pad naar hun bestemming in het pakket. Dit betekend dat routers waar het pakket door gaat niet het pakket eerst moeten inspecteren maar het gelijk kunnen doorsturen. Dit kan leiden tot data die je systeem binnen gaat en een mogelijke aanval kan zijn. · IP: masquerading (CONFIG_IP_MASQUERADE) Als er een van de computers op je lokale netwerk waar je Linux doos als firewall voor dient iets naar buiten wilt zenden, kan je linux machine de host "masqueraden", b.v, stuurt het het verkeer door naar de bedoelde bestemming, maar het laat het eruit zien of het van de firewall doos kwam. Zie http://www.indyramp.com/masq voor meer informatie. · IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) De optie voegt ICMP masquerading to toe aan de vorige optie van het alleen masqueraden van TCP of UDP verkeer. · IP: transparent proxy support (CONFIG_IP_TRANSPARENT_PROXY) Dit stelt je Linux firewall in staat om transparant elk netwerk verkeer van het lokale netwerk en bestemd van een andere computer naar een lokale server genoemd een "transparante proxy server" door te sturen. Dit laat de lokale computers denken dat ze met de andere computer aan het 'praten' zijn, maar ze praten met de lokale proxy- server. Zie de IP-Masquerading HOWTO en http://www.indyramp.com/masq voor meer informatie · IP: always de-fragment (CONFIG_IP_ALWAYS_DEFRAG) Normaal is deze optie uitgeschakeld, maar als je een firewall bouwt of een masquerading host, moet je dit aanzetten. Als data wordt gezonden van de ene host naar de andere, wordt het niet altijd gezonden als een packet van data, maar meestal is het opgesplitst in enkele delen. Het probleem hiermee is dat het poort-nummer alleen is opgeslagen is het eerste deel van het pakketje. Dat betekend dat iemand informatie in die andere pakketjes kan steken wat er niet hoort. Het kan ook een teardrop aanval tegen een interne host tegen houden die er niet tegen is beschermd. · Packet Signatures (CONFIG_NCPFS_PACKET_SIGNING) Dit is een optie die verkrijgbaar is in de 2.1 kernel series die NCP paketjes signeert voor sterkere security. Normaal kun je het uitzetten, maar het is er als je het nodig hebt. · IP: Firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK) Dit is een erg handige optie die je instaat stelt op de eerste 128 bytes van een packet te analyseren in een user-space programma, om vast te stellen of je het packet wilt accepteren of wilt tegenspreken, gebaseerd op zijn geldigheid. 7.2. 2.2 Kernel Compilatie Opties Voor 2.2.x kernels zijn veel van de opties hetzelfde, maar enkele nieuwe zijn ontwikkeld. Veel van de beschrijvingen komen uit ./linux/Documentation/Configure.help welke dezelfde help is als dir onder het make config proces van het compileren van de kernel. Alleen de nieuwe opties zijn beschreven hieronder. De meest opvallende verandering in de 2.2 kernel is de Ip firewalling code. Het ipchains programma wordt nu gebruikt om de IP firewall code te installeren, ipv het ipfwadm programma gebruikt in de 2.0 kernel. · Socket Filtering (CONFIG_FILTER) Voor de meeste mensen, is het veilig om hier nee te zeggen. Deze optie geeft je de mogelijkheid om een user-space filter aan elke socket vast te maken en dan vaststellen of een pack wordt binnengelaten of niet. Tenzij je een het echt nodig hebt en zulke filters kunt programmeren, je moet nee zeggen. Notitie: het ondersteund alle protocol-en behalve TCP. · Port Forwarding Port Forwarding is een toevoeging op IP Masquerading die je instaat stelt om pakketten door te sturen van buiten de firewall naar binnen een firewall op gegeven poorten. Dit kan makkelijk zijn als bijvoorbeeld je wilt een web-server draaien achter een firewall of ip masquerading host en de web-server moet toegankelijk zijn voor de buitenwereld. Een externe client zend een vraag naar poort 80 van de firewall, de firewall stuurt deze vraag door naar de web-server, de web-server neemt deze vraag aan en stuurt de informatie naar de externe client. De client denkt dat de firewall machine zelf een web-server draait. Dit kan ook gebruikt worden voor gebruik balancering als je een aantal identieke web servers hebt achter een firewall. Informatie over dit onderwerp is verkrijgbaar van http://www.monmouth.demon.co.uk/ipsubs/portforwarding.html (om het WWW te browsen, moet je toegang hebben to een machine op het Internet dat een programma heeft als netscape of lynx). Voor algemene informatie, zie ftp://ftp.compsoc.net/users/steve/ipportfw/linux21/ · Socket Filtering (CONFIG_FILTER) Als je deze optie gebruikt, kan een user-space programma een filter vastmaken aan elke socket en daardoor vertellen dat de kernel een pakket moet toestaan of niet toestaan van een bepaalt type data om door de socket te komen. Linux socket filtering werkt op alle socket types behalve TCP voor nu. Zie de text file ./linux/Documentation/networking/filter.txt voor meer informatie. · IP: Masquerading De 2.2 kernel masquerading is verbeterd. Het heeft nu ook support voor speciale protocollen om te masqueraden, etc. Leest de IP Chains HOWTO voor meer informatie. 7.3. Kernel Devices Er zijn een aantal block en character devices onder Linux die je helpen met je security. De twee devices /dev/random en /dev/urandom zijn beschikbaar gesteld door de kernel en kunnen je toevallige data geven op elk moment. Beiden /dev/random en /dev/urandom moet allebij secure genoeg zijn in het gebruik om PGP keys te maken, ssh uitdagingen, en andere applicaties waar secure toevallige nummers nodig zijn. Aan vallers moeten het volgende nummer niet kunnen voorspellen en zo achterhalen welk nummer jij had. Er is veel moeite in gestopt om zeker te weten dat je altijd in een toevallig nummer krijgt zoals het woord zegt. Het enige verschil is dat /dev/random stop met het geven van toevallig bytes en wacht tot ze zich ophopen. Notitie: Op sommige systemen kan het een lange tijd stil staan wachtend op een nieuwe gebruiker- genereerde invoer die moet worden ingevoerd in de computer. Dus je moet nadenken voordat je /dev/random gebruikt. (Misschien is het beste om het te gebruiken wanneer je een gevoelige sleutel genereert, en de gebruiker op het keyboard laat typen totdat je print "Ok, genoeg".) /dev/random is hoge kwaliteit entropie, gegenereerd door het meten van inter-interrupt tijden etc. Het blokkeert totdat er genoeg bits toevallige dat is. /dev/urandom is het hetzelfde, maar wanneer de uitrusting van entropie laag begint te worden, zal het een versleutelde sterke hash geven van wat er is. Dit is niet secure, maar het is genoeg voor de meeste applicaties. Je kan lezen van de devices door het gebruik als dit: root# head -c 6 /dev/urandom | mmencode Dit print zes toevallig karakters op het console, goed voor pas-woord generatie. Je vind mmencode in het metamail package. Zie /usr/src/linux/drivers/char/random.c voor een beschrijving van het algoritme. Dank aan Theodore Y. Ts'o, Jon Lewis, en andere van de Linux-kernel voor het helpen van mij (Dave) met dit. 8. Netwerk Security Netwerk security is steeds meer en meer belangrijk als mensen meer en meer tijd verbonden zijn. Netwerk security doorbreken is meestal veel gemakkelijker dan fysiek of lokaal aanvallen, en is normaler. Er zijn een aantal goede tools om je te helpen met netwerk security en meer en meer van deze zitten bij de Linux distributies. 8.1. Pakket Sniffers Een van de toegankelijke manieren waarmee indringer toegang krijgen tot meer systemen op je netwerk is door het gebruik van een packet sniffer op een al eerder binnen gedrongen computer. Deze "sniffer" luistert op de Ether-net poort voor dingen als passwd, login en su in de packet stroom en logt het verkeer daarna. Op deze manier, krijgen aanvallers pas-woorden van systemen waar ze niet eens van plan waren om op in te breken. Clear-text pas-woorden zijn erg kwetsbaar voor deze aanvallen. Voorbeeld: Host A is gekraakt. Aanvaller installeren een sniffer. Sniffer onderschept een admin die inlogt op Host B vanaf Host C. Het pakt de admin's persoonlijke pas-woord als hij inlogt op B. Dan doet de admin een su om een probleem op te lossen. Nu hebben ze het root pas-woord van Host B. Later laat de admin iemand telnetten vanaf zijn account naar Host Z op een ander netwerk. Nu heeft de aanvaller een pas-woord/login op Host Z. In deze dagen en jaren, hoeft een aanvaller niet eens een systeem meer aan te vallen om dit te doen: ze kunnen ook een laptop of pc in het gebouw brengen en deze aan het netwerk pluggen en zo sniffen. Door het gebruik van ssh of andere encrypted pas-woord methoden worden deze aanvallen gestopt. Dingen zoals APOP voor POP accounts houden deze aanvallen tegen. (Normale POP logins zijn erg kwetsbaar voor dit, omdat alles Clear-text is wat over het net wordt gezonden.) 8.2. Systeem diensten en tcp_wrappers Voordat je je Linux systeem op ELK netwerk zet, is het eerste waar je naar moet kijken welke diensten je moet aanbieden. Diensten die je niet moet aan bieden moeten worden uitgeschakeld zodat je een paar dingen minder hebt waar je je ongerust over moet maken en aanvallers hebben een paar plekken minder om aan te vallen en te zoeken naar een gat. Er zijn een aantal manier om diensten onder Linux uit te schakelen. Je kan kijken in de /etc/inetd.conf file en kijk welke diensten worden aangeboden door je inetd. Schakel elke dienst uit die je niet nodig hebt door deze commentaar te maken (# op het begin van de regel), en zend dan je inetd proces een SIGHUP. Je kan ook diensten verwijderen (of commentaar maken) in je /etc/services file. Dit betekend dat lokale clienten de service niet kunnen vinden (b.v, als je ftp weg haalt, en ze proberen te ftp-en naar een andere computer faalt het en zegt "unknown service"). Het is het niet waard om problemen te maken met het verwijderen van services, omdat het toch geen extra security met zich mee brengt. Als een lokale gebruiker ftp wil gebruiken zelfs als je het commentaar hebt gemaakt, maken ze hun eigen client die de normale FTP poort gebruikt en dan werkt het nog steeds goed. Een van de diensten die je aan wilt laten staan zijn: · ftp · telnet (of ssh) · mail, zoals pop-3 of imap · identd Als je een bepaald pakket niet gaat gebruiken, kun je het gewoon helemaal verwijderen. rpm -e packagenaam onder de Red Hat distributie gooit het hele packet weg. Onder Debian doet dpkg --remove hetzelfde. En, je kan je de rsh/rlogin/rcp uitzetten, en ook login (gebruikt door rlogin), shell (gebruikt door rcp), en exec (gebruikt door rsh) kun je uitzetten. Deze protocolen zijn extreem. Je moet kijken in je /etc/rc.d/rcN.d, (waar N je systeem run level is) en kijk of een van de servers die in die directorie worden gestart onnodig zijn. De files in /etc/rc.d/rcN.d zijn eigenlijk gewoon symbolic links naar de directorie /etc/rc.d/init.d. De file hernoemen in de init.d directorie heeft als effect dat alle symbolische links worden uitgeschakeld in de /etc/rc.d/rcN.d directorie. Als je alleen een service wilt uitschakelen voor een bepaalde run level, hernoem dan de file door de grote S te vervangen met een kleine s, zoals dit: root# cd /etc/rc6.d root# mv S45dhcpd s45dhcpd Als je BSD stijl rc files hebt, kun je /etc/rc* bekijken voor programma's die je niet nodig hebt. De meeste Linux distributies leveren tcp_wrappers, die al je TCP diensten "verpakt". Een tcp_wrapper (tcpd) wordt gestart vanuit inetd ipv de echte server. tcpd checkt dan de host die een dienst aanvraagt, en dan de echter server uitvoert, of de toegang afwijst. tcpd stelt je instaat om toegang tot je diensten te ontzeggen. Je moet een /etc/hosts.allow maken en je moet de hosts invoeren die toegang moeten hebben tot de diensten die je computer bied. Als je een thuis dailup gebruiker bent, geven we de suggestie om alles te denyen. tcpd logt ook alle mislukte pogingen om toegang te krijgen tot een dienst, zodat dit je kan waarschuwen als je wordt aan gevallen. Als je een nieuwe service toevoegt, moet je ze configureren om tcp_wrappers te gebruiken als ze TCP gebaseerd zijn. Bijvoorbeeld, een normale dail-up gebruiker kan vreemdelingen tegen houden als ze proberen te connecten naar je machine, maar je hebt nog steeds de mogelijkheid om mail te ontvangen, en netwerk connecties te maken naar het Internet. Om dit te doen, kunt je het volgende toevoegen aan j /etc/hosts.allow: ALL: 127. En natuurlijk je /etc/hosts.deny houdt in: ALL: ALL die externe connecties naar je machine tegenhoud, maar je kunt nog steeds van binnenuit connecties maken met servers op het internet. Onthoud dat tcp_wrapper alleen diensten beschermd die gestart worden vanuit inetd, en een bepaald aantal andere. Er kunnen ook nog andere diensten draaien op je systeem. je kan netstat -ta gebruiken om een lijst te vinden van alle diensten die je machine aanbied. 8.3. Je DNS Informatie nakijken Als je DNS informatie over alle computers in je netwerk goed bijhoud kan dit ook de security bevorderen. Als een onbevoegde host in je netwerk komt, kun je hem herkennen door het gebrek aan een DNS aangifte. Veel diensten kunnen worden geconfigureerd om connecties van computer die geen goede DNS aangifte heeft niet te accepteren. 8.4. identd Identd is een klein programma dat normaal vanuit de inetd server draait. Het houdt bij welke Tcp diensten worden gebruikt, en geeft dit dan door aan degene die er om vroeg. Veel mensen onderschatten de bruikbaarheid van identd, en daarom zetten ze het uit of blokkeren ze het voor de buitenwereld. identd is er niet om andere netwerken te helpen. Er is geen manier om te weten of de data die je krijgt van de identd van het andere netwerk correct is of niet. Er is geen bevestiging in identd aanvragen. Waarom zou je het dan draaien? Omdat het jou helpt, en het is een ander data punt voor jouw in de opsporing. Als je identd niet is aangevallen, dan weet je dat het de andere netwerken verteld welke gebruikers of welk uid van mensen een TCP dienst draaien. Als de admin van een ander netwerk komt en je zeg dat er een van jouw mensen op zijn netwerk probeerde in te breken, kun je makkelijk actie ondernemen tegen die gebruiker. Als je identd niet draait moet je eerst een hoop log files doorkijken, om uit te vinden wie en wanneer het was, en normaal neemt dat een hele hoop tijd in beslag. Het identd package dat geleverd wordt bij de meeste distributies heeft meer configuratie mogelijkheden dan veel mensen denken. Je kan het uitzetten voor een bepaalde gebruiker (ze kunnen een .noident file aanmaken), je kan alle identd aanvragen loggen (We raden dit aan), je kan een uid ipv de gebruikers naam laten weergeven of zelf NO-USER. 8.5. SATAN, ISS en andere netwerk scanners Er zijn een aantal verschillende software packages om poort en dienst gebaseerd machines en netwerken te scannen. SATAN, ISS, SAINT en Nessus zijn een van de meest bekende. Deze software maakt verbinding met de doel computer (of alle doel machines op een netwerk) op alle poorten die ze kunnen, en dan proberen ze erachter komen wat er op die poort draait. Gebaseerd op deze informatie, kun jij vertellen of de machine zwak is en of deze misbruikt kan worden. SATAN (Security Administrator's Tool for Analyzing Networks) is een poort scanner met een web interface. Het kan ingesteld worden om lichte, gemiddelde of zware onderzoeken uit te voeren op een machine of een netwerk van machines, en de problemen verhelpen die hij tegenkomt. Weet zeker dat je de kopie van SATAN van metalab <http://metalab.unc.edu/pub/packages/security/Satan-for-Linux/> haalt of van een betrouwbare Ftp of web site. Er is ook een Trojan van gemaakt en gedistributeerd op het web. http://www.trouble.org/~zen/satan/satan.html. Notitie: 'SATAN is al lang niet meer geupdate, en de tools hieronder kunnen misschien beter werk leveren. ISS (Internet Security Scanner) is een andere poort scanner. Hij is sneller dan Satan, en kan dus beter zijn voor grote netwerken. Maar, SATAN geeft meer informatie. Abacus is een packet van programma's voor host gebaseerde security en inbreuk detectie. Kijk op hun home page voor meer informatie. http://www.psionic.com/abacus/ SAINT is een recente versie van SATAN. Het is web gebaseerd en heeft meer tests van deze tijd dan SATAN. Je kan meer informatie vinden op: http://www.wwdsi.com/saint Nessus is een gratis security scanner. Het heeft een GTK grafische interface voor gemakkelijk gebruik. Het is ook goed gemaakt voor hele goede plug-in setup voor het scannen van nieuwe poorten. Voor meer informatie kijk op: http://www.nessus.org 8.5.1. Poort scans detecteren. Er zijn enkele tools gemaakt om je te waarschuwen voor onderzoeken door SATAN en ISS en andere scan programmatjes. Hoewel, liberaal gebruik van tcp_wrappers, en het vaak kijken naar je log files, kun je zulke dingen opmerken. Zelfs op de laagste instelling laat SATAN dingen achter in de logs van een Red Hat systeem. Er is ook een "stealth" poort scanner. Een pakket met het TCP ACK bit ingesteld (gedaan als een connectie gerealiseerd is) zal door een packet-filtering firewall komen. Het terug kerende RST packet van een die _had no established session_ kan bewijzen dat deze poort open staat. Ik denk niet dat TCP wrappers dit detecteert. 8.6. sendmail , qmail en MTA's Een de meest belangrijke diensten die je kunt aanbieden is een mail server. Ongelukkig, is het een van de makkelijkst aan te vallen diensten, simpel door het aantal taken die het moet uitvoeren en privileges het moet hebben. Als je sendmail gebruikt is het erg belangrijk om altijd de nieuwste versie te hebben. sendmail heeft een lange historie van security misbruik. Wees er altijd zeker van dat je de nieuwste versie hebt van http://www.sendmail.org. Onthoud dat sendmail niet hoeft te draaien voor jouw om mail te zenden. Als je een thuis gebruiker bent, kun je sendmail makkelijk geheel uitzetten, en simpel weg je mail client gebruiken om mail te zenden. Je kan er ook voor kiezen om de "-bd" flag weg te halen uit de sendmail startup file, gewoon inkomende vragen voor mail uitschakelen. In andere woorden, je kan sendmail makkelijk zo vanuit het opstart script draaien: # /usr/lib/sendmail -q15m Dit zegt sendmail om de mail queue elke vijftien minuten leeg te gooien voor elk bericht dat niet van de eerste keer kon worden bezorgd. Veel systeem administrators kiezen ervoor om sendmail niet te gebruiken, om gewoon een andere te gebruiken. Je kan overschakelen op qmail. qmail was ontworpen met security in de gedachten vanaf de grond af. Het is snel, stabiel, secuur. Qmail kan gevonden worden op http://www.qmail.org In een directe competitie naar qmail is "postfix", geschreven door Wietse Venema, ook auteur van tcp_wrappers en andere security tools. Formeel genoemd vmailer, en gesponsord door IBM, is dit ook een mail transport agent geschreven vanaf de grond af met security in het achterhoofd. Je kan meer over vmailer vinden op http://www.postfix.org 8.7. Denial of Service Aanvallen Een "Denial of Service" (DoS) aanval is een aanval waar de aanvaller probeert enkele bronnen het zo druk te laten hebben met het legitimeren van aanvragen, of het tegenspreken van gelegimiteerde gebruikers toegang tot je machine. Denial of service aanvallen zijn veel toegenomen de laatste jaren. Een van de meest populaire en recente zijn staan hieronder. Notitie: Nieuwe komen te voorschijn, elke dag, dus dit zijn maar een paar voorbeelden. Lees de Linux security lijsten en de bugtraq lijst en archieven voor meer actuele informatie. · SYN Flooding - SYN flooding is een 'network denial of service' aanval. Het maakt gebruik van een "loophole" in de manier hoe TCP connecties maakt. De nieuwere Linux kernels (2.0.30 en hoger) hebben enkele configuratie opties om deze aanvallen tegen te houden. Zie ``Kernel Security'' voor een overzicht van kernel protectie opties. · Pentium "F00F" Bug - Het is pas ondekt dat een serie van codes gezonden naar een genuine Intel Pentium de computer rebooten. Dit betreft elke machine met een Pentium processor (geen clones, geen Ppro of PII) het maakt niet uit welk Operating systeem je draait. Linux kernel van 2.0.32 en hoger hebben een work around voor deze bug, dit houdt hen tegen om het systeem op slot te zetten. Kernel 2.0.33 heeft een verbeter versie van de kernel fix, en is voorgesteld voor versies boven de 2.0.32. Als je op een Pentium draait, moet je nu upgraden! · Ping Flooding - Ping flooding is een simpel brute denial of service aanval. De aanvaller zend een "overstroming" van ICMP pakketjes naar je machine. Als ze dit doen vanaf een computer met meer bandbreedte dan die van jou, kan je machine niet alles op het netwerk zenden. Een variant op deze aanval is genoemd "smurfing", zend ICMP pakketjes naar een computer met je machines terug keer IP. Dit stelt ze in staat om dit minder detecteer-baar te doen. Je kan meer informatie over de "smurf" aanval vinden op http://www.quadrunner.com/~chuegen/smurf.txt Als je ooit onder een ping flood aanval bent, gebruik dan een tool als tcpdump om te achterhalen waar de pakketjes vandaan komen (of waar ze vandaan lijken te komen), je kan contact met je provider opnemen met deze informatie. Ping floods kunnen makkelijk gestopt worden op de router laag of door het gebruik van een firewall. · Ping o' Death - De Ping o' Death aanval zend ICMP ECHO REQUEST pakketjes die te groot zijn om in de kernel data structure te passen om ze op te slaan. Als je een enkele groot (65,510 bytes) "ping" packet naar hosts zendt zorgt ervoor dat ze vastlopen of zelfs crashen, deze is snel de "Ping o' Death" genoemd. Deze is al lang gefixt, en is al lang niets meer om je druk over te maken. · Teardrop / New Tear - Een van de meest recente soort van misbruik. Die een bug misbruikt in de IP fragmentation code op Linux en Windows platformen. Het is gefixt in de kernel versie 2.0.33, en er hoeft geen extra optie geselecteerd te worden onder de compilatie. Linux is ook bestand tegen de "newtear" aanval. Je kan de code van de meeste exploits en een duidelijker beschrijving van hoe ze werken op http://www.rootshell.com vinden door hun zoek-machine te gebruiken. 8.8. NFS (Network File System) Security. NFS is een erg wijd gebruikt file deel protocol. Het stelt servers die nfsd enmountd draaien om hun gehele filesysteem te "exporteren" naar andere machines met NFS filesysteem ondersteuning in de kernel(of een andere soort client, als het niet linux is). mountd houdt bij welke file systemen er gemount zijn in /etc/mtab, en je kan ze bekijken met showmount. Veel bedrijven gebruiken NFS om home directories aan gebruikers te geven, zodat het niet uit maak om welke machine ze inloggen in het cluster, ze hebben altijd hun eigen home files. Er wordt maar een klein beetje security toegestaan in het exporteren van een filesysteem. Je kan de nfsd een andere root gebruiker (uid=0) laten omzetten naar de nobody gebruiker, zodat je hem de totale toegang tot files ontzegt. Hoewel, sinds individuele gebruikers (of op z'n minst met hetzelfde uid) toegang hebben to hun eigen files, kunnen ze naar hun eigen account su'en en zo hebben ze totale toegang tot de files. Dat is maar een kleine hindernis voor een aanvaller die je filesysteem kan mounten. Als je NFS gebruikt, weet dan zeker dat je de files alleen exporteert naar de machines die het echt nodig hebben. Exporteer nooit je gehele root dir; exporteer alleen directories die je moet exporteren. Zie de NFS HOWTO voor meer informatie over NFS verkrijgbaar op http://metalab.unc.edu/mdw/HOWTO/NFS-HOWTO.html 8.9. NIS (Network Information Service) (vroeger YP). Network Information service (vroeger YP) is bedoeld om informatie te geven aan een groep machines. De NIS master bewaart de informatie tabellen en converteert ze in NIS map files. De maps worden dan verdeeld over het netwerk, dit stelt de NIS client in staat om hun login, pas-woord, home dir en shell informatie te geven (alle informatie in een standaard /etc/passwd file). Dit stelt de gebruiker in staat om hun pas-woord te veranderen en het zo door te voeren in het gehele NIS domein. NIS is niet helemaal secure. Het is ook nooit bedoeld om veilig te zijn. Het is bedoeld om handig en bruikbaar te zijn. Iedereen die de naam van je NIS domein kan raden (waar ze ook zijn) kunnen een kopie krijgen van je passwd file en kunnen er zo "crack" en "John the Ripper" op gebruiken om je pas-woorden uit te vissen. Het is ook mogelijk om NIS voor de gek te houden en zo enkele soorten van vervelende truukjes doen. Als je NIS moet gebruiken, wees dan gewaarschuwd voor de gevaren. Er is een meer veilige vervanger voor NIS, genoemd NIS+. Kijk in het NIS HOWTO voor meer informatie: http://metalab.unc.edu/mdw/HOWTO/NIS- HOWTO.html 8.10. Firewalls Firewalls zijn bedoeld voor het controleren van welke data in en uit je lokale netwerk mag. Meestal is de firewall computer verbonden aan het internet en aan je lokale LAN, en de enige manier om van je LAN naar het internet te komen is door de firewall. Op deze manier kan de firewall controleren wat wordt gestuurd en terug gestuurd vanaf het internet en je LAN. Er zijn een aantal types van firewalls en methodes om ze in te stellen. Linux machines maken best goede firewalls. Firewall code kan gelijk in de kernel worden mee gebouwd vanaf kernel 2.0. ipfwadm voor 2.0 kernels, of ipchains voor 2.2 kernels, user-space programmaatjes geven je de mogelijkheid om de types data die je firewall toestaat aan te passen. Je kan ook specifieke types van netwerk verkeer laten loggen. Firewalls zijn een erg bruikbare en belangrijke techniek in het beveiligen van je netwerk. Hoewel, je moet nooit denken dat als je een firewall hebt, je de machines erachter niet meer veilig hoeft te maken. Dit is een fatale fout. Kijk in de zeer goede Firewall-HOWTO voor meer informatie over firewalls. http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html Meer informatie kan ook worden gevonden in de IP-Masquerading mini- howto: http://metalab.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html Meer informatie over ipfwadm (De tool die je dingen laat veranderen aan je firewall, kan gevonden worden op hun home page: http://www.xos.nl/linux/ipfwadm/ Als je geen ervaring hebt met firewalls, en het plannen om er een op te zetten voor meer dan een simpele security politiek, is het Firewalls boek van O'Reilly and Associates of een van de andere online firewall documenten de moeite waard om te lezen. Kijk op http://www.ora.com voor meer informatie. Het Nationale Instituut van Standaarden en Technologie-en hebben een goed firewall document gemaakt. Het is gemaakt in 1995, maar is nog steeds best goed. Je kan het vinden op http://csrc.nist.gov/nistpubs/800-10/main.html. Ook van enige interesse kunnen zijn: · Het Freefire Project -- een lijst van vrij gebruikbare firewall tools, verkrijgbaar op http://sites.inka.de/sites/lina/freefire- l/index_en.html · SunWorld Firewall Design -- geschreven door de auteurs van het O'Reilly boek, dit geeft een ruwe beschrijving van de firewall types. Het is verkrijgbaar op http://www.sunworld.com/swol-01-1996/swol-01-firewall.html 8.11. IP Chains - Linux Kernel 2.2.x Firewalling Linux IP Firewalling Chains is een update voor de 2.0 Linux firewall code om de code van de 2.2 kernel te gebruiken. Het heeft een groot aantal nieuwe mogelijkheden , onder andere: · Meer flexibele packet manipulatie · Meer complexe accounting · Kleine politiek veranderingen nu nog sneller · Fragmenten kunnen nadrukkelijk worden tegengehouden, niet erkend, etc. · Logt verdachte pakketjes. · Kan andere protocolen aan dan ICMP/TCP/UDP. Als je momenteel ipfwadm gebruikt op je 2.0 kernel, zijn er scripts verkrijgbaar die het converteren van ipfwadm naar ipchains. Leest ook de IP Chains HOWTO voor meer informatie. Het is verkrijgbaar op http://www.rustcorp.com/linux/ipchains/HOWTO.html 8.12. VPN's - Virtual Private Networks VPN's zijn een manier voor het creëren van een virtueel netwerk op een al bestaand netwerk. Dit virtuele netwerk is vaak versleuteld en passeert alleen verkeer naar de wezen die het netwerk die verbinding hebben gemaakt met het netwerk. VPN's worden vaak gebruikt om iemand te verbinden die thuis werkt met het bedrijfs netwerk door het gebruik van een encrypted virtueel netwerk. Als een linux masquerading firewall gebruikt en je moet MS PPTP (Microsoft VPN point to point product) laten, is er een linux kernel patch om dat te doen. Zie ip-masq-vpn. Er zijn verschillende VPN oplossingen verkrijgbaar: · vpnd. Zie http://www.crosswinds.net/nuremberg/~anstein/unix/vpnd.html. · Free S/Wan, verkrijgbaar op http://www.xs4all.nl/~freeswan/ · Ssh kan gebruikt worden om een VPN te creëren. Zie de VPN mini- howto voor meer informatie. · vps (Virtual private server) op http://www.strongcrypto.com. Zie ook de IPSEC sectie voor verwijzingen en meer informatie. 9. Security Preparatie (voordat je online gaat) Ok, je hebt je systeem gecheckt, en je hebt vastgesteld dat het zo veilig mogelijk is, en je bent klaar om je computer online te zetten. Er zijn een aantal dingen die je nu moet doen om je voor te bereiden op een indringer, zodat je deze snel kan uitschakelen, en het zo weer terug draaiende te maken. 9.1. Maak een volledige Backup van je Machine Discussies over backup methodes en opslag is buiten beschouwing van dit document, maar hier zijn een aantal woorden die te maken hebben met backups en security: Als je minder dan 650mb data op een partitie hebt staan, is een CD-R kopie een goede manier (Om dat er later moeilijk mee te knoeien is, en als het er goed op staat kan het lang mee gaan). Tapes en andere re- writeable media moet write-protected zijn zo snel je backup klaar is. En leg ze dan op een veilige plaats zodat er niet mee geknoeid kan worden. Zorg dat je je backups maakt in een secure off-line gebied. Een goede backup laat je zeker weten dat je een goed iets hebt om je systeem van te herstellen. 9.2. Een goed Backup plan kiezen Een zes-tape kringloop is makkelijk bij te houden. Dit houd in vier tapes voor de werkdagen, een tape voor de even Vrijdagen, en een voor de oneven Vrijdagen. Voor een periodieke backup uit bleke dag, en een volledige backup op de desbetreffende Vrijdag tape. Als je particuliere belangrijke veranderingen hebt gemaakt of belangrijke data hebt toegevoegd aan je system, een volledige backup kan dan handig zijn. 9.3. Backup Je RPM of Debian File Database Na een inbraak kun je je RPM database gebruiken zoals je tripwire ook gebruikt, maar dan moet je wel zeker zijn dat deze niet veranderd is. Je moet je RPM database copieëren naar een floppy, en zorg dat deze copieëren altijd off-line gebeuren. De Debian distributie heeft ook zoiets. DE files /var/lib/rpm/fileindex.rpm and /var/lib/rpm/packages.rpm zullen meestal niet op een floppy passen. Maar als ze ingepakt zijn, moet elk op een floppy passen. Nu, als er op je systeem is ingebroken, moet je het volgende commando gebruiken: root# rpm -Va om elke file op je filesysteem na te kijken. Zie de rpm, man page, om er meerdere opties aan toe te voegen zodat het niet zoveel laat zien. Onthoud dat je RPM binary niet veranderd mag zijn. Dit betekend elke keer dat er een nieuwe RPM is toegevoegd aan het systeem dat de RPM database opnieuw moet worden gegenereerd. Je moet beslissen tussen de voordelen en nadelen. 9.4. Houd je Systeem Accounting data in de gaten Het is erg belangrijk dat de informatie die van syslog komt niet is veranderd. De files in /var/log alleen leesbaar en schrijfbaar maken voor maar een bepaald aantal gebruikers is al een goed begin. Houd een oogje op wat er daar wordt geschreven, vooral onder de auth faciliteit. Vele gefaalde logins, bijvoorbeeld, kunnen duiden op een poging tot inbraak. Waar je moet kijken voor je log files hangt af van je distributie. In een Linux dat voldoet aan de "Linux Filesystem Standard", zoals Red Hat, kun je kijken in /var/log en kijk in messages, mail.log, en andere. Je kunt meer vinden over waar je distributies alles logt door te kijken in je /etc/syslog.conf file. De file verteld waar syslogd (de syslog deamon) waar hij de verschillende berichten moet zetten. Je kan ook je log-rotating scripts configureren om je log files langer te bewaren, zodat je meer tijd hebt om ze door te kijken. Kijk naar het logrotate package van een recente Red Hat distributie. Andere distributies hebben ook zulke processen. Als er met je log files is geknoeid, zie dan of je kan achterhalen wanneer het gestart is, en met welke dingen er geknoeid zijn. Zijn er lange periodes van tijd die niet kunnen? Kijk dan naar je backup tapes (als je die hebt) voor on-verknoeide log files. Log files worden vaak veranderd door een indringer om zijn sporen uit te wissen, maar ze kunnen nog steeds opgemerkt worden door rare gebeurtenissen. Je kan de indringer opmerken als deze toegang probeert te krijgen, of als deze een programma heeft misbruikt om root te worden. Je kan log files zien voordat de indringer ze heeft veranderd. Je moet er ook altijd zeker van zijn dat je het auth gedeelte gescheiden houdt van de andere log data, o.a de pogingen om gebruiker te veranderen met su, login pogingen, en andere user accounting informatie. Als het mogelijk is configureer je syslog zo dat het belangrijke informatie doorstuurt naar een andere computer. Dit houdt de indringer tegen om zijn sporen uit te wissen en zijn login/su/ftp/etc pogingen te wissen. Zie de syslog.conf man page, en kijk naar de @ optie. Er zijn een aantal meer uitgebreide syslogd programma's. Kijk ophttp://www.core-sdi.com/ssyslog/ voor Secure Syslog. Secure Syslog stelt je instaat om je log entries te versleutelen en zo zeker te weten dat er niet mee geknoeid kan worden. Een andere syslogd met meer mogelijk heden is syslog-ng. Het stelt je in staat om meer flexibiliteit toe toevoegen in het loggen van berichten en je kan ook je remote je data die je naar een andere computer stuurt beschermen tegen verknoeiing. Tot slot, log files zijn veel minder bruikbaar als niemand ze leest. Maak altijd een beetje tijd vrij om naar je log files te kijken, om zo een gevoel te krijgen van hoe ze er op een gewone dag uitzien. Dit helpt om ab-normale situaties eruit te pikken. 9.5. Systeem Updates doen. De meeste Linux gebruikers installeren vanaf een CDROM. Door de snelle natuur van security fixes, nieuwe (gerepareerde) programma's worden steeds maar uitgebracht. Voordat je je machine aan een netwerk verbindt, is het goed om op een goede FTP site de update's te gaan halen. Vaak houden ze een belangrijke security reparatie in, dus is het een goed idee ze te installeren. 10. Wat te doen Tijdens en na een Inbraak Dus je hebt enkele van de adviezen hier(of ergens anders) opgevolgd en je hebt een inbraak gedetecteerd? Het eerste wat je moet doen is kalm blijven. Haastige acties kunnen meer schade veroorzaken dan de aanvaller wilde hebben. 10.1. Een Security aanval is bezig Een Security aanval detecteren kannen een spannende ondernemening zijn. Hoe je reageert kan grote consequenties hebben. Als de aanval die je ziet een fysieke is, is er een grote kans dat er iemand in je huis heeft in-gebruiken, je kantoor of lab. Je moet je lokale autoriteiten waarschuwen. In een lab, kun je iemand opgemerkt hebben die een computer probeert te rebooten of een kist probeert te openen. Gebaseerd op je bevoegdheden en procedures, kun je ze vragen om hem te stoppen, of je kun je lokale security mensen bellen. Als je detecteert dat een lokale gebruiker je security probeert te doorbreken is het eerste wat je doet kijken of het de gene is wie je denkt dat het is. Kijk op het netwerk waarvan ze zijn in-gelogd. Is het de manier hoe ze normaal inloggen? Nee? Gebruik dan een niet elektronische manier om in contact te komen. Bijvoorbeeld, bel ze of loop naar hun kantoor of huis en praat tegen ze. Als ze toegeven dat zij het waren, kun je ze vragen om uit te leggen wat ze gedaan hebben en of ze daar mee willen stoppen. Als ze het niet weten, en ze hebben geen idee waar je over praat, vraagt het om een uitgebreider onderzoek. Kijk naar zulke incidentjes en zorg dat je veel informatie hebt voordat je iemand beschuldigt. Als je een netwerk aanval hebt gedetecteerd, is het eerste wat je doet ( als je kunt) het netwerk afbreken. Als ze verboden zijn met een modem trek dan de stekker van de modem eruit; Als ze via het ethernet komen, trek dan die kabel eruit. Dit stopt ze om nog meer schade aan te richten, en ze zullen het zien als een netwerk probleem, in plaats van detectie. Als het onmogelijk is om het netwerk af te sluiten (je hebt een druk bedrijf, je hebt geen fysieke control over je machines), is de beste stap een programma als tcp_wrappers of ipfwadm te gebruiken om het netwerk waar de indringers vandaan komen de toegang te ontzeggen. Als je niet alle mensen van het zelfde netwerk als de indringers kan tegenspreken, moet je het gebruikers account op slot zetten. Een account opslot zetten is niet gemakkelijk. Je moet rekening houden met de .rhosts file, FTP toegang, en een mogelijke achterdeur. Als je een van de dingen hierboven hebt gedaan (het netwerk afsluiten, toegang ontzeggen van hun netwerk, en/of hun account uitschakelen), moet je al hun gebruikers processen killen en hun uitloggen. Je moet je netwerk een aantal minuten goed in de gaten houden, als de aanvallers terug proberen binnen te komen. Bijvoorbeeld op een ander account en/of van een ander netwerk-adres. 10.2. De security aanval is al geweest Dus je hebt een pas een aanval gedetecteerd die al is gebeurt of je hebt er een gedetecteerd en de aanvaller uit je systeem gezet (hopelijk). En nu? 10.2.1. Het gat dichten Als je kan achterhalen hoe de aanvaller is binnengekomen in je systeem, moet je het gat proberen te dichten. Bijvoorbeeld, je ziet enkele FTP aangifte's in je log files vlak voordat de aanvaller is in- gelogd. Schakel dan FTP uit en kijk of er een nieuwe versie. Bekijk alle logfile's, en ga op bezoek bij je security lijst en pagina's en kijk of er nieuwe algemeen misbruik is wat je kan repareren. Je kan de Caldera security fixes vinden op http://www.caldera.com/tech-ref/security/. Red Hat heeft de security fixes nog niet gescheiden van de bug fixes, maar hun distributie errata is verkrijgbaar op http://www.redhat.com/errata Debian heeft nu een security mailing list en een web-page Zie: http://www.debian.com/security/ voor meer informatie. Het is zeer gebruikelijk als een van de lever een security update uitbrengt, dat de meeste andere dat dan ook doen. Er is nu een linux security boekhouding project. Er komen methodes om alle user space utilities om te kijken voor een mogelijke security misbruik of een overflow. Uit hun aankondiging: "We pogen een systematische boekhouden van de Linux sources te maken met als doel zo veilig worden als Open-BSD. We hebben al enkele problemen ontdekt (en opgelost), maar meer hulp is welkom. De lijst is oncontroleerbaar en is een bruikbare bron voor algemene security discussies. Het adres van de lijst is: security-audit@ferret.lmh.ox.ac.uk Om je in te schrijven moet je een mailtje zenden naar: security- audit-subscribe@ferret.lmh.ox.ac.uk" Als je de aanvaller niet buiten zet, zullen ze terug komen. Niet alleen terug op jouw machine, maar terug ergens op je netwerk. Als je een packet sniffer draaiden, onveiligheden zijn voor hen goed om naar andere lokale machines te gaan. 10.2.2. De schade schatten Het eerst dat je doet om de schade in te schatten is. Wat is er aangevallen? Aks je een Intergeriteit Checker als Tripwire draait, kun je het gebruiken om een integeriteits check uit te voeren, en dat kan je helpen om de schade vast te stellen. Als het niet help, moet je rond kijken naar de belangrijke data. Sinds Linux system makkelijker en makkelijker te installeren zijn, kun je je configuratie files op een diskketje('s) zetten en het zo her installeren, dan je gebruikers files van ja backups herstellen. Dat laat je zeker weten dat je weer een schoon systeem hebt. Als je files moet backup-en van een binnengedrongen systeem, kan gevaarlijk zijn zeker met binaries, omdat ze een Trojan horse kunnen zijn geplaatst door een indringer. Re installatie moet verplicht gesteld worden als de de indringer root toegang heeft gehad. Maar, je kan wel het bewijs materiaal bewaren, dus als je een reserve disk hebt kan een goede gedachte zijn. Dan moet je je druk maken over hoe lang geleden de aanval is gebeurd, en of de backups beschadigd werk bevatten. Meer over backups later. 10.2.3. Backups, Backups, Backups! Als je een reguliere backup hebt is een geschenk van god voor security. Als je systeem is binnen gedrongen, kun je de data die je nodig hebt herstellen van een backup. Natuurlijk, sommige data is waardevol voor een aanval, en ze zullen het niet alleen kapot maken, ze stelen het en hebben hun eigen copieëren maar je hebt nog steeds de data. Je moet enkele backups terug checken voordat je de verknoeide file het hersteld. De indringer kan de files een tijdje geleden hebben verknoeid, en je kan enkele succesvolle backups hebben gemaakt van de verknoeide file!!!! Natuurlijk, er zijn ook een aantal security bezorgd-heden met backups. Zorg dat je ze op een veilige plaats bewaard. Weet wie toegang tot ze heeft. (Als een aanvaller je backups kan pakken, kunnen ze toegang hebben tot al je data zonder dat je het weet.) 10.2.4. De indringer terug vinden. Ok, je hebt de indringer van je systeem geschopt, en je systeem hersteld, maar je bent nog niet klaar. Zolang het niet waarschijnlijk is dat de indringer wordt gepakt, moet je de aanval toch aangeven. Je moet de aanval aangeven bij de admin van het netwerk waar de indringer vandaan kwam. Je kan zijn adres opvragen met whois of de Internic database. Je kan ze een email zenden met alle log entries en datum's en tijden. Als je iets anders strafbaars tegen komt over de indringer moet je dat ook melden. Na dat, moet je (als je zo Be- invloed bent) ook bellen. Als de desbetreffende admin de aanvaller vindt, kun je met de admin praten over waar ze vandaan komen en zo. Goede krakers gebruiken vaak tussen liggende systemen, enkele (of veel) van welke ze niet weten dat ze zijn binnen gedrongen. Dan het adres van de kraker vinden kan moeilijk zijn. Door beleefd te zijn tegen de admin's kan ook helpen om hulp van hem te krijgen. Je moet ook een security organisatie waar je deel van bent waarschuwen (CERT <http://www.cert.org/> of een andere), en ook je Linux systeem dealer. 11. Security Bronnen Er zijn een HOOP goede sites voor Unix security in het algemeen en Linux security gespecificeerd. Het is erg belangrijk om je in te schrijven bij on (of meer) van de security mailing lists om je op de hoogte te houden van de security fixes. Veel van deze lijsten zijn erg informatief. 11.1. FTP Sites CERT is de Computer Emergency Response Team. Ze zenden vaak een alarm van de actuele aanvallen en fixes. Zie ftp://ftp.cert.org voor meer informatie. Replay (http://www.replay.com) heeft archieven van veel security programma's. Sinds ze buiten de VS zitten, hebben ze geen last van de VS crypto beperkingen. Matt Blaze is de schrijver van CFS en een goede security advocaat. Matt's archief is verkrijgbaar op ftp://ftp.research.att.com/pub/mab <ftp://ftp.research.att.com/pub/mab> tue.nl is een goede security FTP site in Nederland. ftp.win.tue.nl 11.2. Web Sites · De Hacker FAQ is een FAQ over hackers: De Hacker FAQ · Het COAST archief heeft een groot aantal Unix security programma's en informatie: COAST · SuSe Security Pagina: http://www.suse.de/security/ · Rootshell.com is een geweldige site om te zien welke soorten misbruik er nu worden gebruikt door crackers: http://www.rootshell.com/ · BUGTRAQ geeft advies over security onderwerpen: BUGTRAQ archieven · CERT, het Computer Emergency Response Team, geeft advies over gebruikelijke aanvallen op unix platformen: CERT home · Dan Farmer is de auteur van SATAN en vele andere security tools. Zijn home page heeft enkele interessante security verslagen en ook security tools: http://www.trouble.org · De Linux security WWW is een goede site voor Linux security informatie: Linux Security WWW · Infilsec heeft een zwakheids motor die je kan vertellen welke zwakheden met welk platform te maken hebben: http://www.infilsec.com/vulnerabilities/ · CIAC zend periodieke security bulitins over algemeen misbruik: http://ciac.llnl.gov/cgi-bin/index/bulletins · Een goed startpunt voor de Linux Pluggable Authentication modules kan gevonden worden op http://www.kernel.org/pub/linux/libs/pam/. · Het debian project heeft een web page voor hun eigen security fixes en informatie. Het is te vinden op http://www.debian.com/security/. · WWW Security FAQ, geschreven door Lincoln Stein, is een geweldige web site met security verwijzingen. Te vinden op http://www.w3.org/Security/Faq/www-security-faq.html 11.3. Mailing Lists Bugtraq: Om je in te schrijven voor bugtraq, zend een mailtje naar listserv@netspace.org met in de body subscribe bugtraq. (zie de links boven de archieven). CIAC: Zend een mailtje naar majordomo@tholia.llnl.gov. In de BODY (niet het subject) van het bericht: subscribe ciac-bulletin Red Hat heeft een aantal mailing lists, de belangrijkste is de redhat- annouce lijst. Je kan lezen over security (en andere) fixes zo snel ze uitkomen. Zend een mailtje naar majordomo@redhat.com en zet erin subscribe redhat-announce. Het Debian project heeft een security mailing list die hun fixes inhoud. zie http://www.debian.com/security/ voor meer informatie. 11.4. Boeken - Geprint materiaal Er zijn een aantal goede security boeken. Deze geeft een lijst van een aantal van deze. Als toevoeging op security specifieke boeken, zijn er ook boeken over systeem administratie waar ook een beetje over security in staat. Building Internet Firewalls By D. Brent Chapman & Elizabeth D. Zwicky 1st Edition September 1995 ISBN: 1-56592-124-0 Practical UNIX & Internet Security, 2nd Edition By Simson Garfinkel & Gene Spafford 2nd Edition April 1996 ISBN: 1-56592-148-8 Computer Security Basics By Deborah Russell & G.T. Gangemi, Sr. 1st Edition July 1991 ISBN: 0-937175-71-4 Linux Network Administrator's Guide By Olaf Kirch 1st Edition January 1995 ISBN: 1-56592-087-2 PGP: Pretty Good Privacy By Simson Garfinkel 1st Edition December 1994 ISBN: 1-56592-098-8 Computer Crime A Crimefighter's Handbook By David Icove, Karl Seger & William VonStorch (Consulting Editor Eugene H. Spafford) 1st Edition August 1995 ISBN: 1-56592-086-4 12. Lijst van begrippen · bevestiging: De eigenschap om te kijken of de data die gezonden is het zelfde is als de data die is gezonden, en dat de gene die zegt dat hij de zender is ook de echte zenden is. · bastion Host: Een computer systeem dat heel veilig moet zijn, omdat het zwak is voor aanvallen, meestal omdat deze is blootgelegd aan het Internet en een algemeen punt is van gebruikers van de interne netwerken. Het heeft zijn naam te danken aan de hoge versterkte projecten aan de buitenste muren van middeleeuwse kastelen. Bastions overzien kritiek gebieden van verdediging, meestal omdat ze sterke muren hebben, ruimte voor extra troepen, en een en een tijdelijke tobbe van kokend hete olie voor het afschrikken van de aanvallers. · buffer overflow: Normale coding style is nooit goed om groot genoege buffers te maken, en om niet te checken voor overflows. Als zulke buffers overspoelen, kan het uitgevoerde programma (deamon of set-uid programma) gedwongen worden om iets anders te gaan doen. Normaal werkt dit door het overschrijven van een functie's return address op de stack om naar een andere lokatie te wijzen. · denial of service: Een denial of service attack is wanneer een aanvaller de bronnen van je computer op eet voor dingen die het niet behoort te doen, dus normale gebruikers tegenhouden om hun netwerk te gebruiken voor eigen doelen. · dual-homed Host: Een gewone computer die op z'n minst twee netwerk kaarten heeft. · firewall: Een component of een aantal componenten die toegang ontzeggen tussen een beschermd netwerk en het Internet, of tussen een aantal andere netwerken · host: Een computer aangesloten op een netwerk. · IP spoofing: IP Spoofing is een complexe techniek van aanvallen dat opgebouwd is uitverschillende componenten. Het is een security aanval dat werk door te doen of je een vertrouwde computer bent, maar je bent het niet. Er zijn dure stukken geschreven door deamon9, route, en infinity in het Volume Seven, Onderwerp 48 onderwerp van Phrack Magazine. · non-repudiation: Het bezit van een zender om te bewijzen dat hij het heeft gezonden ook al ontkent hij dat. · packet: De fundemantele eenheid van communicatie over het Internet. · packet filtering: De actie die een device maakt om selectief de stroom van data naar en van het netwerk te controleren. Packet files staan pakketjes toe of wijzen ze of, gebruikelijk wanneer ze worden door gestuurd van het ene naar het andere netwerk. (Meestal vanaf het Internet naar het interne netwerk, en andersom). Om packet filtering te voltooien, moet je regels instellen die aangeven welk type packet wordt binnen gelaten (die van of naar een particulier IP adres of poort) en welk niet. · perimeter network: Een network toegevoegd tussen een beschermd netwerk en een extern netwerk, om een extra laag van security aan te brengen. Een perimeter netwerk wordt soms een DMZ genoemd. · proxy server: Een programma dat handelt met de externe servers in plaats van de interne clienten. Proxy clienten praten tegen een proxy server, welke de aanvragen door sturen naar de echte servers, en het antwoord doorsturen naar de clienten. · superuser: Een informele naam voor root. 13. Frequently Asked Questions 1. Is het veiliger om een driver in de kernel te compileren dan er een module van te maken? Antwoordt: sommige mensen denken het beter is om het laden van modules uit te schakelen om drivers te laden, omdat een inbreker een Trojan module of een andere module die de security van het systeem kan ondermijnen laden. Alhoewel je root moet zijn om modules te laden. De module object files zijn ook enkel over-schrijfbaar door de root. Dit betekend dus dat de inbreker root priveleges nodig heeft om een module te laden. Als de inbreker eenmaal root priveleges heeft dan zijn er serieuzere dingen om je zorgen over te maken i.p.v. de modules die hij wil laden Modules zijn voor het dynamisch laden van support voor een willekeurige devices die misschien zelden wordt gebruikt. Op server machines, of firewalls bijvoorbeeld is dit niet echt gewenst. Om deze redenen is het beter de support direct in de kernel mee te compileren. Modules zijn ook langzamer dan support direct in de kernel mee gecompileerd. 2. Waarom mislukt altijd het inloggen als root van remote machineas ? Antwoord: Zie ``Root Security''. Dit is opzettelijk gedaan om remote gebruikers die en poging doen om te connecten met telnet naar jou machine als root, wat zeer onveilig is. Vergeet niet: Dat potentiele inbrekers de tijd hebben, en programma's hebben om jou pas-woord te vinden. De /etc/passwd file wordt dan gebruikt om gebruikers en groepen Namen op te slaan, gebruikt door programma's zoals /bin/ls om het gebruikers nummer om te zetten in een gebruikers naam bij een directory uitvoer. De /etc/shadow file bevat enkel de gebruikersnaam en zijn/haar pas- woord, en misschien andere accounts gegevens zoals wanneer het account vervalt enz. Om shadow passwords mogelijk te maken run dan pwconv als root en /etc/shadow bestaat nu als het goed is en wordt gebruikt door applications. Sinds RH 4.2 en daar boven, worden de PAM modules automatisch aangepast voor het gebruik van /etc/passwd naar de shadow passwords zonder iets anders te veranderen. Sinds je belangstelling in het beveiligen van je pas-woorden, misschien heb je dan ook interesse in het maken van goede pas- woorden. Voor dit kun je gebruik maken van pam_cracklib module, welke een stukje is van PAM. Het draait je pas-woord tegen een Crack bibliotheek om je te helpen met het besluiten of je pas-woord makkelijk raadbaar is. 3. Hoe kan ik in Apache SSL extensies aanzetten? Antwoord: 1.Haal SSLeay 0.8.0 of later van <ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL> 2.Bouw, test en installeer het! 3.Haal de Apache 1.2.5 source 4.Haal Apache SSLeay extensies van ftp://ftp.ox.ac.uk/pub/crypto/SSL/ <ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.5+ssl_1.13.tar.gz> 5. Pak het uit in de apache-1.2.5 source directorie en patch Apache als in de README. 6.Configureren en bouwen. Je kan ook Replay Associates proberen welke vele voor gebouwde pakketjes heeft en is gelocaliseerd buiten de VS. 4. Hoe kan ik gebruikers accounts manipuleren, en ook mijn security bewaren? Antwoord: De Red Hat distributie, vooral RH5.0, hebben een groot aantal tooltjes om de instellingen van gebruikers accounts te veranderen. · De pwconv en unpwconv programma's kunnen worden gebruikt voor het converteren tussen shadow en non-shadowed pas-woorden. · De pwck en grpck programma's kunnen worden gebruikt om de organisatie van de passwd en group files te verificeren. · De useradd, usermod, en userdel programma's kunnen worden gebruikt om gebruikers account toe te voegen, te verwijderen of te veranderen. De groupadd, groupmod, en groupdel programma's doen het zelfde maar dan voor groepen. · Groep pas-woorden kunnen worden gecreerd door het gebruik van gpasswd. Alle programma's zijn "shadow-aware" -- dit is, als je schadow inschakeld gebruiken ze /etc/shadow voor pas-woord informatie, anders niet. Zie de respectievelijke man pagina voor meer informatie. 5. Hoe kan ik sommige HTML documenten beschermen met Apache? I wet dat je http://www.apacheweek.org niet kende, of wel? Je vindt meer informatie over gebruikers verificatie op http://www.apacheweek.com/features/userauth ook op de web server security tips van http://www.apache.org/docs/misc/security_tips.html 14. Conclusie Door je in te schrijven op een security alert mailing list, en je systeem up to date houden, kun je een hoop doen om je systeem veilig te houden. Als je aandacht besteed aan je log files en je draait geregeld iets als tripwire, kun je nog meer doen. Een redelijke laag van computer veiligheid is niet moeilijk te onderhouden op een thuis machine. Meer moeite is er nodig op een bedrijfs machine, maar Linux kan een zeer veilig platform zijn. Doordat Linux veel ontwikkeld wordt komen veiligheids reparaties vaak sneller als bij commerciele Operating systems, dat maak Linux een ideaal platform als Security nodig is. 15. Erkentenis Informatie hier is bij elkaar gehaald uit vele bronnen. Dank aan de volgende die indirect of direct hebben mee geholpen: Rob Riggs rob@DevilsThumb.com S. Coffin scoffin@netcom.com Viktor Przebinda viktor@CRYSTAL.MATH.ou.edu Roelof Osinga roelof@eboa.com Kyle Hasselbacher kyle@carefree.quux.soltc.net David S. Jackson dsj@dsj.net Todd G. Ruskell ruskell@boulder.nist.gov Rogier Wolff R.E.Wolff@BitWizard.nl Antonomasia ant@notatla.demon.co.uk Nic Bellamy sky@wibble.net Eric Hanchrow offby1@blarg.net Robert J. Bergerrberger@ibd.com Ulrich Alpers lurchi@cdrom.uni-stuttgart.de David Noha dave@c-c-s.com De volgende hebben de howto vertaald in verschillende andere talen! Een speciale dank aan hun allen voor het helpen verspreiden van het linux woord... Pools: Ziemek Borowski ziembor@FAQ-bot.ZiemBor.Waw.PL Japans: FUJIWARA Teruyoshi fjwr@mtj.biglobe.ne.jp Indonesies: Tedi Heriyanto 22941219@students.ukdw.ac.id