original in en Georges Tarbouriech
en to nl Tom Uijldert
Aan het einde van dit artikel kun je een aantal zeer interessante links vinden. We kunnen natuurlijk niet alles hier uitputtend behandelen. We zullen ons tot een selectie van goede hulpmiddelen beperken.
Dit artikel is bedoeld voor individuen en systeembeheerders omdat sommige hulpmiddelen voor de beveiliging van machines zijn en anderen voor beveiliging van netwerken.
Deze programma's werken onder de meeste Unix-versies (zo niet alle), of het nu om commerciële versies gaat of vrije. Tenslotte gaat dit artikel niet over "Hoe beveilig ik mijn netwerk of machine" maar geeft het een overzicht van de diverse verkrijgbare hulpmiddelen voor het beter beveiligen van je netwerk of machine.
Het vermelden waard zijn onder andere TCPWrapper, PAM (Pluggable Authentication Modules), schaduw programma's... Daar ze toch onderdeel zijn van distributies kun je hier veel over lezen in de HOWTO pagina's en zullen we er hier dus niet teveel woorden aan vuil maken. Laten we beginnen met de schaduw programma's. Kort maar krachtig; ze versleutelen wachtwoorden. Het bestand /etc/passwd wordt vervangen door /etc/shadow.
PAM daarentegen is veel uitgebreider. Zoals de naam reeds doet vermoeden gaat het hier ook om identificatie. Het wordt gebruikt om toegang te verlenen aan bepaalde diensten. Via configuratie kunnen een hoop beperkingen op worden gelegd, wat de administratie vereenvoudigt. De bestanden hiervoor kun je vinden in /etc/pam.d.
TCPWrapper. Hier kan worden volstaan met de opmerking dat het de
toegang tot diensten kan beperken via IP adressen of hostname. Toegang kan
worden verleend of geweigerd via de bestanden /etc/hosts.allow en
/etc/hosts.deny.
TCPWrapper kan op twee verschillende manieren worden geconfigureerd: de
daemons verplaatsen, of het bestand /etc/inetd.conf aanpassen.
Als TCPWrapper geen deel uit maakt van jouw distributie dan kun je het vinden op
ftp://ftp.porcupine.org/pub/security.
Nu zul je ook begrijpen waarom we niet al teveel hebben gezegd over bovenstaande
hulpmiddelen want er is er één die dit allemaal kan terwijl je er zelf ook nog wat
van op steekt. De enige echte Bastille-Linux. Als je maar
één programma wilt installeren dan moet je deze hebben! Het is (nog?) geen
standaard onderdeel van de diverse Linux distributies maar je kunt het verkrijgen bij
http://bastille-linux.sourceforge.net.
Overigens zullen we het hier niet over Bastille-Linux hebben! Het heeft weinig zin
omdat er reeds een uitstekend artikel over is verschenen in het _LF_ September-nummer van
mijn maatje Frédéric. Daar staat alles al in. Als je het nog niet hebt gelezen, kijk
dan even hier.
We zullen hier slechts stellen dat Bastille-Linux een onmisbaar hulpmiddel is voor de beveiliging!
Nog een algemeen programma voor het verbeteren van de beveiliging is xinetd. Het is te verkrijgen bij http://www.xinetd.org. Ook hier zullen we geen woorden aan vuil maken! Wederom heeft Frédéric dit uitstekend beschreven in het November-nummer van _LF_. Je kunt het hier lezen.
Tot zover het gedeelte over FredFocus...
Fred, het nummer van m'n bankrekening volgt nog...
Maar laten we nu eens kijken naar meer gespecialiseerde hulpmiddelen.
In het kort komt het erop neer dat een firewall netwerkpakketten filtert. Het belangrijkste is de
instelling van de firewall. Een slecht ingestelde firewall kan gevaarlijk zijn.
Desalniettemin zijn firewalls belangrijk voor de beveiliging.
Bastille-Linux bijvoorbeeld, levert een firewall met ipchains als basis.
Als je naar http://www.linuxapps.com gaat en daar op het woord "firewall" gaat zoeken krijg je zeker 40 antwoorden. Vele daarvan zijn grafische frontends voor het instellen van ipchains of ipfwadm. Sommige zijn uitgebreide hulpmiddelen met -tig mogelijkheden, zoals bijvoorbeeld T.REX, te verkrijgen bij http://www.opensourcefirewall.com. Je bent echter nogmaals gewaarschuwd, een firewall is noodzakelijk in een netwerk maar je kunt er niet je hele beveiliging van af laten hangen. Een cracker kan dit in 15 minuten kraken!
De eerste is nmap. Deze kun je ophalen bij http://www.insecure.org.
Je kunt daar trouwens ook een aantal goede links vinden...
Met nmap kun je na gaan welke poorten op jouw machine of netwerk open
staan. Toegegeven, dat kan ook met commando's als lsof
of
netstat
maar dan alleen voor je eigen machine. Uiteraard kun je ook je eigen
machine nalopen met nmap en deze zal je dan een hoop extra informatie
verstrekken. Het kan bijvoorbeeld rapporteren welk besturingssysteem er op draait of welke
poorten open staan die gevaarlijk zijn... En als klap op de vuurpijl is nmap nog
makkelijk in het gebruik ook.
nmap kan vanuit een shell aan worden geroepen of via een grafisch frontje
met de naam nmapfe. Het grafische gedeelte is op de gtk
bibliotheek gebouwd. De huidige versie is 2.53 en werkt op diverse Unix-varianten. Het is te
verkrijgen als broncode, verpakt als rpm, met of zonder grafisch frontje.
nmap is hét hulpmiddel voor systeembeheerders!
Hartelijk dank meneer Fyodor en gefeliciteerd met dit prachtige stukje werk.
De tweede heet nessus en is verkrijgbaar bij http://www.nessus.org.
nessus gebruikt het client-server model en de Posix broncode kan
worden gebruikt op talloze Unix-varianten. Er is zelfs een client voor Win32 (het is
maar een weet).
nessus gebruikt nmap (ik zei toch dat je niet zonder kunt!)
en de gtk bibliotheek voor zijn grafische frontje. De huidige versie is 1.06 en
het kan met één opdracht je hele netwerk afzoeken, gebruik makend van je
netwerkadres. Als je bijvoorbeeld het adres 192.168.1.0/24 in geeft zal het alle
255 machines op dat netwerk aftasten.
Al is nessus dan wat complexer als nmap, het is nog steeds
makkelijk in gebruik en komt met een hoop extra's. Het kan bijvoorbeeld rapporten aanmaken,
verschillen tussen rapporten rapporteren... Nog een leuke extra is het feit dat
nessus vanzelf oplossingen aandraagt voor gevonden problemen tijdens het
aftasten. Als het om Unix-machines gaat dan zijn de oplossingen vaak nog goed ook. Voor
andere besturingssystemen zal dit minder gelden maar daar gaat het hier niet om.
Hier een voorbeeld van een zeer onveilige machine:
nessus heeft nog een leuke extra: het kan met insteekmodules (plug-in) werken.
Hierdoor kan iedere keer dat er een nieuw beveiligingslek wordt ontdekt, het programma
gemakkelijk bij worden gewerkt.
Wederom een onmisbaar hulpmiddel voor systeembeheerders! Complimenten meneer Deraison
en "Merci Beaucoup".
Beide hulpmiddelen zijn getest met een Linux-doos op een netwerk met verschillende besturingssystemen:
Linux RH6.2, Irix 6.5.7, Solaris 2.6, NeXTStep 3.3, QNX RT, BeOS 5.0, Amiga OS 3.5
en Not Terminated 4.0. De resultaten zijn indrukwekkend voor de meeste machines. Natuurlijk
wordt de Amiga niet echt lekker herkend (hij wordt als printer of router gepresenteerd!) maar wie
heeft er nog een dergelijke machine in zijn netwerk (behalve ik dan)?
Hoe dan ook, onmisbare hulpmiddelen in de hedendaagse netwerken.
Als afsluiter van dit hoofdstuk nog wat andere mogelijkheden zoals SARA http://www-arc.com/sara/, of z'n "vader" SATAN http://www.porcupine.org/satan/, of SAINT http://www.wwdsi.com. Het zijn niet allemaal poort-scanners en ze kunnen zeer nuttig zijn voor het verbeteren van de beveiliging in je netwerk.
portsentry is een poort-scan detector. Zoals de naam reeds doet
vermoeden zal een poort die wordt afgetast onmiddellijk door portsentry af
worden gesloten voor toegang. Hetzij door de route via de firewall af te sluiten (of naar een
ongebruikt IP-adres om te leiden) of door het IP-adres van de scanner van de inbreker aan het
bestand /etc/hosts.deny toe te voegen als TCPWrapper
is geïnstalleerd op je machine. Het resultaat is verbluffend effectief!
portsentry gebruikt een aantal configuratiebestanden en nog wat meer
specifieke bestanden. Deze laatste vooral om machines over te slaan (van het blokkeren) of juist
om bepaalde poorten op bepaalde machines af te sluiten.
Met de configuratie bepaal je hoe portsentry te werk zal gaan. Allereerst
bepaal je welke poorten (TCP, UDP of beide) je door portsentry laat bewaken.
Pas op met poort 6000 als je met X11 werkt!
Afhankelijk van de gebruikte Unix, kun je uit twee methodes kiezen voor het bewaken van de
poorten. De advanced (gevorderde) methode is op dit moment alleen beschikbaar
onder Linux.
Vervolgens stel je het blokkeren in; je blokkeert scans niet, je doet het wel of je activeert een
commando.
Vervolgens stel je in hoe de poort af moet worden gesloten. Door de inbreker om te leiden naar
een IP-adres wat niet in gebruik is of via het filteren van pakketten (firewall).
De volgende stap heeft te maken met TCPWrapper. Hierin beslis je of je een DENY-tekst in het bestand /etc/hosts.deny opneemt of niet. Daarna kun je nog een commando geven en als laatste kun je nog een trigger-waarde kiezen voor de scan (standaard de waarde 0).
Dat is alles! We gaan er even van uit dat je alles over logging weet, alle alarmen
worden immers vastgelegd. Dit betekent dat je je syslog.conf bestand kunt
veranderen als je wil dat de alarmen ergens anders heen gaan dan naar
/var/log/messages, /var/log/syslog of
/var/adm/messages...
Je kunt nu portsentry in de achtergrond opstarten met jou eigen instellingen.
Deze instellingen zijn mede afhankelijk van je systeem: -tcp en
-udp kun je op de meeste Unix-smaken gebruiken, -atcp en
-audp ook op een Linux-doos ("a" voor advanced).
Laten we het resultaat van een scan eens bekijken op een machine met
portsentry:
Als je een systeembeheerder bent die wekelijks de logs moet bekijken (dan zou je eens van baan moeten veranderen!) dan biedt het Abacus project je een ander hulpmiddel, genaamd logcheck. Deze kun je periodiek via cron opstarten en zal een mail naar de systeembeheerder sturen als hij iets abnormaals in de logs ontdekt.
Het nieuwste hulpmiddel uit de set heet hostsentry en ziet er
belangwekkend uit maar ik heb het niet kunnen testen. Als je op zoek bent naar een goed en
eenvoudig hulpmiddel, neem dan portsentry!
Bedankt meneer Rowland, heel goed gedaan! Je humor mag er trouwens ook wezen.
Nog een onmisbaar programma voor systeembeheerders heet snort.
snort is een IDS (Inbraak Detectie Systeem) maar dan in een
lichtgewicht uitvoering (en geen mammoet!). Versie 1.6.3 is te verkrijgen bij
http://www.snort.org en draait op
ieder systeem wat met libpcap overweg kan. Dit laatste is een vereiste om
snort te kunnen draaien. Er is zelfs een Win32-versie van.
snort kan het IP-verkeer analyseren en levert hele goede logging-faciliteiten.
Het werkt volgens op regels gebaseerde scripts, dat wil zeggen dat je kunt controleren wat je wilt.
Sterker nog, de site van snort heeft een database vol met regels die je kunt
gebruiken.
En dan komen we nu bij een belangrijke beslissing: waar gaan we controleren of, welk type
verkeer? Ingaand, uitgaand, in de firewall, buiten de firewall...
We zouden natuurlijk alles kunnen controleren! Maar nu even serieus, de keuze is aan jou. Als jij
de "doorsnee" systeembeheerder bent, hoe meer, hoe beter...
Nadat je besloten hebt wat je gaat controleren moet je nog de regels uitkiezen die je toe gaat
passen. snort heeft al een stapel standaard regels in zich zoals: backdoor,
ddos, finger, ftp... Deze regels worden in de snort-lib bestanden ingesteld. Ten
overvloede, je kunt nieuwe en vernieuwde regels ophalen op de snort-site.
Daarna hoef je snort alleen nog maar op te starten als achtergrondproces met
de optie -D. Je kunt ook instellen waar er wordt gelogd daar je dit naar keuze
om kunt leiden, zelfs naar een andere machine.
snort bevat teveel extra's om op te noemen. Zie hiervoor de uitstekende
documentatie. Hoe dan ook, het is een onmisbaar hulpmiddel. Hartstikke goed. Met veel dank
aan meneer Roesch.
Er zijn nog wat andere vrije programma's verkrijgbaar, bijvoorbeeld
AIDE van http://www.cs.tut.fi/~rammer/aide.html.
Het probleem met dit soort programma's is de wettelijke status ervan. Sommige landen zijn hier heel streng in en laten geen programma's toe die versleutelen. De tijden veranderen maar veel landen leggen nog beperkingen op in het gebruik hiervan. Enige tijd geleden werd je bijvoorbeeld in Frankrijk (naar men zegt het land van de rechten van de mens!) aangemerkt als spion wanneer je SSH gebruikte. Gelukkig is dit nu niet meer zo. Wat niet weg neemt dat je beter even kunt controleren hoe het in jouw land zit met de wet waar het het toepassen van versleuteling betreft. Een overzicht hiervan voor de diverse landen kun je vinden op http://www2.epic.org/reports/crypto2000/countries.html.
Versleutelen is echter wel een belangrijk beveiligingsaspect en dus moet het gebruik en
hulpmiddelen hiervoor worden overwogen. OpenSSL (Secure
Socket Layer) bijvoorbeeld, op
http://www.openssl.org, of Strong Crypto, een
Open Source VPN (Virtual Private Network) voor Linux op
http://www.strongcrypto.com.
VPN als oplossing is op zichzelf al een apart artikel waard (zoals trouwens de
meeste hier besproken hulpmiddelen!), we zullen er hier dan ook niet verder op in gaan.
We kunnen natuurlijk niet voorbij gaan aan OpenPGP (Pretty Good
Privacy), verkrijgbaar bij
http://www.ietf.org/html.charters/openpgp-charter.html,
noch aan GNUpg op http://www.gnupg.org.
Dit is geen reclame... het is een manier om meer oplossingen op het gebied van beveiliging te weten te komen. Ga maar eens kijken op http://www.samag.com. Als je een systeembeheerder bent zou je het toch eens moeten proberen. Het is maar een suggestie.
Uiteraard weet ik hoe het Wintel wereldje in elkaar zit: als je een driver van het net haalt is dit
altijd een uitvoerbaar programma! Laten we het maar toegeven, we kunnen de grote bedrijven
toch wel vertrouwen... maar heb je enig zicht op wat er met het archief is gebeurd vanwaar je het
programma ophaalt? Natuurlijk klinkt dit enigszins paranoïde, maar is het echt zo'n gekke
gedachte? Waarom denk je dat zo veel archieven een checksum hebben om de
echtheid te controleren?
De volgende uitspraak zal niet iedereen kunnen "waarderen" maar het is een feit:
JAVA is gevaarlijk! Applets zijn onveilig. Java scripts zijn onveilig. Het is niettemin interessant om
te zien hoeveel websites Java gebruiken! Java is verder de oorzaak van veel problemen wanneer
je een website bezoekt: hoeveel daarvan laten je browser vastlopen? Is dat het doel
van een website?
Breek me verder de bek niet los over ActiveX van het leger uit Redmond. Suggestie: gebruik in
plaats daarvan Rebol (http://www.rebol.com).
En nu we hier toch over bezig zijn: alsjeblieft, nieuwe Internet
"professionals", stop met die websites die alleen op Wintel en IE5 draaien! Ik begrijp
dat dit veel gebruikt is maar heel veel mensen bezoeken het Internet met andere besturingssystemen
en andere browsers. Met de manier waarop jullie die websites in elkaar
zetten wordt de toegang voor dat soort mensen afgesneden. Het doel van het Internet is echter
om informatie te delen. Specifieke oplossingen hiervoor gebruiken snijdt geen hout.
Naar mijn bescheiden mening moet je, als je een website maakt, nagaan of de site toegankelijk is
voor meerdere besturingssystemen en diverse browsers... maar dit is slechts mijn
mening. Ter verduidelijking: wanneer je een dergelijke website met bijvoorbeeld een Unix-
machine met daarop Netscape bezoekt kun je niet eens de index-pagina bekijken!
Excuus hiervoor, we dwalen af.
Nog een belangrijk punt om in gedachten te houden: beveiliging is nooit 100%. Verre van dat. Het enige wat je kunt is het verbeteren, en dat is een feit. Je kunt bijvoorbeeld alle hulpmiddelen toepassen die hier de revue zijn gepasseerd en nog steeds een achterdeurtje hebben die wijd open staat! Laat je niets wijsmaken: inbrekers zullen niet meteen proberen een 128-bit versleuteling te kraken maar ze zullen wél op zoek gaan naar een kleine opening in de beveiliging. Let dus vooral op programma's met SUID of SGID-rechten, op lopende programma's die niets nuttigs lijken te doen, op gebruikers die reeds lang niet meer op het systeem actief zijn enzovoorts.
Hoewel de diverse Unix-smaken veel op elkaar lijken, verschillen ze nog behoorlijk waar het beveiliging betreft. Sommige smaken zijn net een theezeef! Ook dat moet je in je achterhoofd houden. Een Internet verbinding met een Win-wat-dan-ook machine bijvoorbeeld is leuk, je kunt het icoon van de machine van de inbreker in je "Network Neighbourhood" hebben... en binnenkort kan M$ je voorzien van de foto van je inbreker! Geintje...
De weg naar netwerk- en computer beveiliging is een moeilijke. Als je daar belang in stelt zul je iedere dag wat nieuws leren. Gelukkig is er een hoop informatie voorhanden. Hieronder een selectie daarvan.
http://www.sans.org hier kun je hulp en informatie vinden over beveiliging. Een regelmatig bezoek waard.
http://www.infosyssec.org ook hier bergen informatie over beveiliging
http://www.securityfocus.com is de thuisbasis van Bugtraq en dus een hoop info over beveiliging.
http://www.cs.purdue.edu/coast/hotlist/ DE site die je moet bezoeken!
Bovenaan deze pagina vind je een "Links" knop: klik daarop voor de adressen van de meeste distributeurs. Regelmatig die sites bezoeken is verplicht om de laatste beveiligings-patches te verkrijgen. Dit geldt voor iedere Unix systeembeheerder! De meeste van deze distributeurs brengen regelmatig nieuwe patches uit.
Een aantal artikelen uit eerdere _LF_ versies (naast de al genoemde) zijn ook
het lezen waard:
Gewone Linux distributies veiliger maken
TCPD en Firewalls met IPFWADM
VXE, een Linux beveiligingshulpmiddel
Er is nog veel meer documentatie voorhanden en we kunnen hier niet alle links opnoemen. Ook kunnen we niet alle beveiligingsprogramma's hier opnoemen. Vanuit iedere site die we hier genoemd hebben zijn er weer links naar andere sites en van daaruit weer links naar anderen... net Matrouchka's.
Dat sommige sites hier niet genoemd zijn wil nog niet zeggen dat ze niet interessant genoeg zijn. Dit betekent alleen maar dat die programma's niet door mij zijn getest. Het moge duidelijk zijn dat je zelf een keuze moet maken tussen de honderden programma's die er te verkrijgen zijn. Doel van dit artikel was om je daarin een startpunt te geven. We hopen dat we daarin zijn geslaagd.
Is het geen geweldige tijd waar we in leven?