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.
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.
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.
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.
Een "SYN Aanval" is een denial of service (DoS) aanval die alle systeem bronnen 'opeet' op je machine, zodat je moet re-booten. We kunnen geen reden bedenken 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.
Deze optie geeft je informatie over packets die je firewall ontvangt, zoals zender, ontvanger, poort, etc.
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.
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.
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.
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.
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.
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.
./linux/Documentation/networking/filter.txt
voor
meer informatie.
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.