Verder Terug Inhoud

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 crack ) 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 naar http://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,

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.

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:

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

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 ssh , 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.

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.

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/


Verder Terug Inhoud