Verder Terug Inhoud

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:

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 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

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.

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:

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:

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:

Zie ook de IPSEC sectie voor verwijzingen en meer informatie.


Verder Terug Inhoud