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.
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.)
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
)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.
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.
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.
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
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.
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
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.
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.
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
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
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:
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
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.