De Help Desk punt NL
Kennisbank
De Helpdesk > De Helpdesk > Kennisbank

Security

Oplossing

Introductie

Virussen zijn niet iets waar je je onder Unices zorgen over hoeft te maken. Een veel reëler probleem vormen bugs in software die uit te buiten zijn met een zg. exploit. Dit is vooral gevaarlijk als de software als root draait, zoals Sendmail en andere daemons. Mogelijk kan iemand dan via de exploit elke gewenste code laten uitvoeren, zodat hij bijv. een root shell kan krijgen.

Een korte checklist van veiligingspunten:

  • Houd je software up-to-date.
  • Schakel onnodige services/daemons uit.
  • Gebruik een firewall om toegang zoveel mogelijk te blokkeren.
  • Gebruik goede wachtwoorden.
  • Gebruik SSH om remote in te loggen.
  • Geef anderen zo weinig mogelijk informatie over je systeem.
  • Controleer regelmatig je logbestanden op verdachte zaken.

Rootkits

Een rootkit is een set programma's om jezelf onzichtbaar te houden na het verkrijgen van root access op een machine. Veelal bevat het alternatieve versies van ls, df, ps e.d. waardoor de eigenaar van de machine niks vreemds opmerkt. Met chkrootkit (http://www.chkrootkit.org) kun je je systeem controleren op aanwezigheid van een serie bekende rootkits. Je kunt dit gebruiken als eerste controle als je vermoedt dat er rare dingen aan de hand zijn op je systeem.

Wachtwoorden

Op oudere systemen werden alle wachtwoorden in het voor iedereen leesbare bestand /etc/passwd opgeslagen. Op nieuwere systemen worden ze opgeslagen in een alleen voor root leesbaar bestand: /etc/shadow. Op de plaats waar je in /etc/passwd het wachtwoord zou verwachten, staat dan alleen nog maar een x.

Het wachtwoord is geëncrypteerd opgeslagen, maar als iemand hem zou weten te bemachtigen is er toch een kans dat het te achterhalen is. Een methode daarvoor is om een hele rij mogelijkheden af te gaan, elke optie te encrypteren en te vergelijken met de bemachtigde versie. Dit is moeilijker te maken door een goed wachtwoord te kiezen en shadow maakt het bemachtigen ook weer wat lastiger.

Slechte wachtwoorden zijn bijv. het woord password zelf, je naam, gebruikersnaam, naam van een familielid, vriend(in) of huisdier, naam van je bedrijf, geboortedatum en elk willekeurig woord dat je in een woordenboek kunt vinden. Gebruik ook het liefst niet hetzelfde wachtwoord op meerdere plaatsen. Dat is wel makkelijker te onthouden, maar is niet erg veilig. Een goed wachtwoord is relatief lang (minstens 6 tekens) en bevat een combinatie van hoofd- en kleine letters en cijfers. Verander je wachtwoord ook om de zoveel tijd.

Inloggen zonder wachtwoord

Als je het wachtwoord van root vergeten bent (of iemand heeft in je systeem ingebroken en het wachtwoord veranderd), dan kun je het veranderen door achter de LILO-promp linux init=/bin/sh in te tikken (vervang linux door het juiste label). Bij GRUB kun je op de regel van de gewenste kernel gaan staan en op e drukken om de optie toe te voegen. Je start nu een shell zonder in te hoeven loggen! De root-partitie is read-only gemount. Typ mount -o remount,rw / om het te hermounten als read-write. Heb je /usr op een aparte partitie staan, mount die dan ook. Bij sommige distributies kan fstab niet goed gelezen worden als proc niet gemount is. Mislukt het mounten van /usr, doe dan eerst nog mount -t /proc none /proc. Nu kun je het wachtwoord veranderen met passwd (dit programma staat in /usr/bin). Log niet meteen uit, want dan zijn de partities niet netjes geunmount. Doe eerst umount /usr (indien nodig) en dan mount -o remount,ro /. Daarna kun je veilig uitloggen en rebooten met ctrl-d.

Deze mogelijkheid geeft inderdaad een behoorlijk veiligheidslek als mensen fysiek bij een systeem kunnen.

(X)inetd, hosts.allow en hosts.deny

Inetd is de „internet super-server” en werkt als volgt. Tijdens het booten wordt inetd gestart en leest daarbij zijn configuratiebestand /etc/inetd.conf in. Daarin staat op welke poorten hij moet luisteren en welke server/daemon hij moet starten als er een verbinding wordt gelegd met die poorten. Op die manier hoeven niet alle mogelijke servers constant actief te zijn. Een nadeel van inetd is dat het even tijd kost voordat een server is gestart. Als er dus veel verbindingen binnenkomen (bijvoorbeeld op een druk bezochte webserver), is het beter die server stand-alone te gebruiken. Xinetd is een wat efficiënter en veiliger alternatief. Zijn configuratie staat in /etc/xinetd.conf.

Schakel voor de veiligheid alle services die je niet gebruikt uit. Dat doe je door in /etc/(x)inetd.conf de desbetreffende regels te verwijderen of uit te commenten met #-tekens vooraan de regels. Services die stand-alone gestart worden, worden gestart via de runlevel-scripts. Die uitschakelen kan meestal via een tooltje van je distributie of met de hand door de desbetreffende symlink naar het script te verwijderen. Zie ook sectie Het opstartproces en runlevels.

Toegang tot services regel je met twee bestanden in /etc: hosts.allow en hosts.deny. In hosts.deny geef je aan welke hosts geen toegang hebben en in hosts.allow wie je wel toelaat. Je kunt alle toegang dichtgooien door in hosts.deny de regel ALL:ALL op te nemen en vervolgens in hosts.allow aan te geven welke uitzonderingen hierop gemaakt mogen worden.

Een aantal voorbeelden voor in hosts.allow:

# geef localhost en intern netwerk (adressen die beginnen met 192.168.1) toegang 
ALL : 192.168.1. 127.0.0.1 localhost
# SSH alleen van te vertrouwde hosts
sshd: 100.200. .trusted.nl
# toegang tot FTP beperken
in.ftpd: .telekabel.euronet.nl localhost 192.168.1

Zoals je ziet geeft een punt voor of achter een IP of domeinnaam aan dat daar alles voor of achter mag komen. Daarnaast zijn er nog twee mogelijke constructies: 131.155.72.0/255.255.254.0 (IP/netmask, dus van 131.155.72.0 tot 131.155.73.255) en .trusted.nl EXCEPT nuker.trusted.nl (maak een uitzondering).

Meer informatie vind je in de manual pages van (x)inetd, (x)inetd.conf en hosts.allow (is dezelfde als die van hosts.deny).

Firewall

Om een firewall te kunnen opzetten moet daar ondersteuning voor in de kernel zitten of als module beschikbaar zijn. Naast ondersteuning in de kernel heb je nog een programma nodig om daadwerkelijk firewallregels te kunnen opgeven. Voor de oude 2.2.x-kernels was dat ipchains. Vanaf kernel 2.4.x gebruik je daarvoor iptables (http://www.iptables.org).

Regels van een firewall stellen restricties aan de pakketjes die over het netwerk gestuurd en ontvangen worden. Er kan ook mee geregeld worden welke pakketjes doorgestuurd moeten worden naar een achterliggend netwerk. Je kunt een firewall gebruiken om een modem te sharen, maar ook om een webserver wereldwijd bereikbaar te maken terwijl de server niet direct met het internet verbonden is.

Informatie over hoe je de firewall gebruikt, is te vinden op de website van iptables en in verschillende tutorials online.

Met Nmap (http://www.insecure.org/nmap/) kun je laten zoeken naar poorten die open staan. Om een betrouwbaar resultaat te krijgen, moet je je door een ander laten testen.

Sudo

Sommige programma's kunnen normaal gesproken alleen door root uitgevoerd worden. Voorbeelden zijn smbmount en cdrecord. Maar je wilt ze waarschijnlijk ook wel als normale gebruiker kunnen uitvoeren. Een mogelijke oplossing is die programma's SUID-root maken (zie sectie Permissies en eigenaren), maar meer controle kan worden uitgeoefend via Sudo. Met behulp van Sudo kun je normale gebruikers op een veilige manier programma's laten uitvoeren alsof ze door root zouden worden uitgevoerd.

Sudo configureren doe je niet door direct het configuratiebestand /etc/sudoers aan te passen, maar door (als root) visudo uit te voeren. (Standaard zal dit Vim starten. Zie sectie Editor over hoe je een andere in kunt stellen.) Een voorbeeldconfiguratie:

Host_Alias  HOSTNAME = huijts
User_Alias  USERS = jarkko
Runas_Alias OP = root
Cmnd_Alias  CDBURN = /usr/bin/cdrecord
Cmnd_Alias  SAMBA = /usr/bin/smbmnt, /usr/bin/smbmount, /usr/bin/smbumount

# Logbestanden
Defaults         syslog=auth
Defaults@HUIJTS  log_year, logfile=/var/log/sudo.log

jarkko ALL = NOPASSWD:CDBURN, SAMBA

Met deze configuratie kan de gebruiker jarkko door sudo cdrecord in te tikken cdrecord uitvoeren alsof root het startte.

Het standaard gedrag van Sudo is om te vragen naar een wachtwoord. Dan moet je je eigen wachtwoord invoeren en niet die van root. Sudo onthoudt een bepaalde tijd dat je het wachtwoord hebt ingevoerd, zodat je het niet nog een keer hoeft in te tikken als je het tweemaal snel achter elkaar gebruikt. Met de optie NOPASSWD in het configuratiebestand hoeft de gebruiker geen enkel wachtwoord in te voeren.

Zie de manual pages van Sudo en sudoers voor meer informatie.

SSH

Als je een telnet-server hebt draaien kun je met een telnet-client ergens anders op je Linux-systeem inloggen en een shell verkrijgen. Bij telnet wordt de informatie die over en weer gezonden wordt niet gecodeerd. Met behulp van zogenaamde packet sniffers is deze informatie door anderen vrij gemakkelijk te onderscheppen. Ook het wachtwoord wat je intikt om in te loggen is op die manier te zien! Veiliger is SSH, Secure SHell. Je kunt er hetzelfde mee als met telnet, maar de data wordt gecodeerd overgezonden. Een goede open-sourcevariant van SSH is OpenSSH (http://www.openssh.com). Een goede SSH-client voor Windows is PuTTY.

Naast inloggen en een shell verkrijgen, kun je met SSH ook bestanden kopiëren. Dit maakt het dus ook meteen onnodig hier een FTP-server voor te gebruiken. Gebruik scp user@host:/path/file . om een bestand te kopiëren naar de huidige directory. Zie de manual page van scp voor meer informatie.

 
Was dit artikel bruikbaar? ja / nee
Gerelateerde artikelen Systeemconfiguratie
Netwerk
Op afstand werken
Kernel
Een Linux Mint / Ubuntu computer in uw windows thuisnetwerk opnemen
Hoe integreer je Linux in een bestaand netwerk?
Basiskennis
Tips & trucs
IPv6 uitschakelen in Fedora 17 en 18
PureFTPD installeren Fedora 11
Artikel details
Artikel ID: 741
Categorie: Linux handboek 2008
Zoekwoorden firewall, rootkits, wachtwoord, wachtwoorden, inloggen, ssh, inetd, hosts.allow, hosts.deny, Xinetd, runlevels, hosts, server, client, sudo, su,
Datum toegevoegd: 6-Dec-2008 03:31:36
Aantal bekeken: 267
Beoordeling (Stemmen): Artikel nog niet beoordeeld (0)

 
« Ga terug