Een Linux Server Opzetten

door Roeland Kok

Vrijgegeven onder de GFDL.

Overzicht

Dit artikel geeft globaal enkele handvatten die je kunt gebruiken bij het opzetten van een Linux server, die verbonden is met het Internet. Aspecten als veiligheid en onderhoudbaarheid liggen aan de basis van dit artikel. Het artikel is niet heel diepgaand, omdat de doelgroep (mensen die voor het eerst een Linux server opzetten) niet overdonderd moet worden met een stortvloed aan informatie.

Het artikel is toepasbaar op elke distributie, maar er wordt gebruik gemaakt van voorbeelden van Debian Woody server systemen, aangezien ik deze distributie uitermate geschikt acht voor servers.

Inleiding

Iedereen die met Linux werkt, heeft waarschijnlijk wel eens gedacht aan het opzetten van een Linux server, die 24 uur per dag, zeven dagen per week, aan het Internet hangt. Zeker in deze tijd van relatief goedkope breedband verbindingen en de dalende prijzen van steeds beter wordende hardware, is het idee van een eigen server zeer aantrekkelijk.

Het is niet verstandig om zomaar in het diepe te springen. Er komt veel bij kijken, voordat je veilig en wel een goede server hebt opgezet, die veilig genoeg is om aan het Internet te hangen. Het is niet een kwestie van 'Linux CD in de drive en vooruit met de geit'. Je moet aan een groot aantal dingen denken, waarbij de belangrijkste items zijn: veiligheid en onderhoudbaarheid.

Veiligheid

Misschien heb je op fora, in nieuwsgroepen of op mailinglijsten wel regelmatig meldingen voorbij zien komen van gaten in software. Programmeren is een mensentaak en mensen maken regelmatig fouten. Daarom kan het heel goed zijn dat er fouten (bug) in software gevonden worden, die de beveiliging van de computer op de tocht zetten. Juist in serversoftware worden regelmatig beveiligingsgaten gevonden, vooral omdat er veel onderzoek gedaan wordt naar de veiligheid van programma's die op servers draaien. Onlangs zijn behoorlijk belangrijke gaten ontdekt in OpenSSH en OpenSSL, welke hoekstenen zijn in veel netwerken. Het voordeel van de Open Source gemeenschap is, dat praktisch altijd binnen zeer korte tijd een oplossing is geprogrammeerd en de gaten gedicht zijn.

Het is nuttig om het verschil te weten tussen 'local' en 'remote' beveiligingslekken. Local lekken zijn alleen uit te buiten op het locale systeem, dus de aanvaller moet al een gebruikersnaam en password hebben om binnen te komen, voordat hij het lek kan uitbuiten. Remote lekken zijn door de aanvaller uit te buiten van buitenaf, vanaf een andere computer op het netwerk of het Internet. De gaten in OpenSSH waren 'remote exploitable', dat wil zeggen dat het gat van buitenaf, vanaf een ander systeem, te gebruiken was om op een computer binnen te komen.

Stel, een stuk software (bijvoorbeeld de SSH server daemon, bedoeld om van buitenaf in te kunnen loggen), draait als gebruiker 'root'. Als er een gat in de software zit, is het in sommige gevallen mogelijk om toegang tot het systeem te krijgen, met de rechten van root.

Als iemand onrechtmatig toegang tot je systeem heeft verkregen, heeft die persoon de mogelijkheid om jouw server als tussenstation te gebruiken voor andere hack aanvallen, of als opslagplaats voor illegale software en beeldmateriaal. Zodra er vanaf jouw systeem/verbinding illegale praktijken plaatsvinden, zal JIJ hierop aangekeken worden en verantwoordelijk voor gesteld worden. Dus voorkomen is beter dan genezen.

Onderhoudbaarheid

De ontwikkeling van Open Source software gaat zo enorm snel, dat het onmogelijk is om van alle softwarepakketjes op je server bij te houden of er een nieuwe versie uit is, of dat er lekken gedicht zijn. Als je dan ook nog handmatig alle software moet downloaden en compileren, dan heb je een dagtaak aan het up-to-date en veilig houden van je server. Daarom is het verstandig om bij de keuze van je server distributie in de gaten te houden of de pakketjes makkelijk en automatisch te updaten zijn.

Een aantal distributies biedt tegenwoordig die mogelijkheid. De bekendste distro die dat al vanaf het begin kan, is Debian. Met een eenvoudig commando kan de hele distributie via de vaste Internet verbinding up-to-date gehouden worden. Dit scheelt een hoop werk, omdat je ook dit commando kan automatiseren. Voor een aantal distributies is een soortgelijk systeem opgezet, zij het soms wat minder geavanceerd. Distributies waarbij dergelijke geautomatiseerde systemen ingebouwd zijn, zijn o.a. Red Hat, SuSE en Mandrake. We zullen ons hier beperken tot Debian.

De eerste stappen

Bij het opzetten van een Linux Server is het niet onverstandig om een stappenplan te volgen, om er zeker van te zijn dat je niets over het hoofd ziet. Globaal kun je het proces in een aantal stappen weergeven:

Keuze van de hardware

Ga niet uit van te oude hardware. Voor servers geldt vaak dat je moet proberen voor het geld dat je hebt een balans te vinden tussen snelheid, capaciteit en stabiliteit (in de vorm van A merken hardware en geheugen). Linux kan prima een oude 486 omtoveren tot server, maar verwacht geen enorme prestaties. Probeer dus minstens een Pentium klasse systeem te gebruiken.

Keuze van distributie

Denk hierbij aan veiligheid en onderhoudbaarheid, maar ook aan de ondersteuning van de server hardware en de beschikbaarheid van de gewenste programma's die je op je server wilt draaien.

Keuze van de Internetverbinding

Als je nog geen verbinding hebt, of je wilt veranderen van breedband verbinding, dan is het nuttig om te letten op de volgende zaken:

Er is nog een aantal dingen belangrijk bij het kiezen van de beste breedband verbinding, maar dit zijn de meest relevante zaken. Probeer zoveel mogelijk snelheid, service en beschikbaarheid te krijgen voor het geld dat je er voor over hebt. Ga niet zomaar in zee met een provider, dat kan je voor lelijke verrassingen doen komen staan.

Serverdoel- en beleid

Wat ga je met je server doen en wie geef je toegang en met welke rechten? Denk hier vast over na, want het is mooi als je je ideeen op papier hebt voordat je toe bent aan het configureren van gebruikers en diensten.

Onderhoud

Als de server eenmaal in de lucht is, moet er regelmatig onderhoud gepleegd worden. Denk aan het onderhouden van de toegangsrechten, gebruikers en groepen, het up-to-date houden van de softwarepakketten en het regelmatig controleren van logbestanden. Probeer hier dagelijks wat tijd in te steken, hoe krap je soms ook zit met je tijd. De tijd die je er in steekt zal lonend zijn, want puinruimen na een systeeminbraak zal veel meer tijd kosten. Onderdeel van het onderhoud is ook het maken van backups en een backup-plan. Zeker op servers die veel gebruikt gaan worden is het zeer verstandig om een recente kopie te hebben van de belangrijkste inhoud van je server (gebruikersbestanden, configuratiebestanden, logbestanden).

De Installatie

Voor het installeren van de serversoftware, volg je gewoon de stappen van de installatie van je gekozen distributie, maar je houdt een aantal dingen in het oog:

De Server: handreikingen

Het serverbeheer kun je het beste lokaal via console doen, of vanaf een andere computer via een veilige SSH verbinding. Gebruik geen Telnet, want dat brengt veiligheidsrisico's met zich mee (geen versleuteld verkeer). Ook al lijkt het risico niet zo groot in je ogen, gebruik gewoon geen Telnet. Mocht je het serverbeheer vanaf een Windows machine willen doen, gebruik dan een client zoals PuTTY.

Het is ook mogelijk om 'Webmin' te installeren op je server. Dat is een web based configuratie tool voor veel diensten op je server. Het beste is echter om het beheer gewoon met de hand te doen via console met SSH. Zo leer je je systeem het beste kennen en hoef je geen extra poorten open te zetten.

Probeer alleen de meest noodzakelijke diensten op je server te draaien. Elke dienst krijgt een open poort op je verbinding, dus dat betekent weer een mogelijk gat extra. Als je een webhosting server opzet, zorg dan dat je bijvoorbeeld alleen de webserver hebt aanstaan, en de SSH server. Eventueel nog de FTP server (voor gebruikers), maar mooier is nog om de FTP server te vervangen door SFTP over SSH. Dit laatste is een zeer veilige vervanger voor het oude FTP protocol, omdat alle gegevens over het netwerk versleuteld verstuurd worden. Doe je dit niet, dan is het met tools als ettercap erg makkelijk om wachtwoorden te onderscheppen en op deze manier toegang te krijgen tot het systeem.

Voor extra zekerheid is het aan te raden om naast de beperking op het aantal poorten dat je openzet, nog een firewall in te stellen (via 'iptables'), die alleen de noodzakelijke gegevens doorlaat van en naar het Internet.

Voor terugkerende handelingen, zoals het updaten van de pakketjes op het systeem, is het mogelijk om gebruik te maken van de 'cron daemon'. Dit is een programma die op gezette tijden bepaalde opdrachten uitvoert. Zie voor meer informatie:

man cron
man crontab

Op je server kun je in de /etc directory de meeste configuratiebestanden vinden van alle geinstalleerde serversoftware. Probeer te weten welke configuratiebestanden bij welke software horen en als je bepaalde software gebruikt, probeer de bijbehorende configuratiebestanden te doorgronden. Het is erg belangrijk om te weten waar je moet zoeken als je iets wilt veranderen aan de configuratie van je server.

In de directory /var/log staan bestanden en directory's met logfiles van veel diensten (daemons, servers). Mocht er iets fout gaan met bepaalde servers, zoek dan in de logfiles in deze directory naar de oorzaken van het probleem. Het is verstandig om 'logrotate' te installeren op je server. Logrotate zorgt er voor dat je logbestanden niet te groot worden en regelmatig gearchiveerd worden. Het is namelijk niet erg prettig om na een paar weken de oorzaak van een probleem te moeten zoeken in een logfile van tientallen megabytes omvang.

Mocht er iets niet goed werken en je verdenkt bijvoorbeeld bepaalde hardware componenten van het veroorzaken hiervan, kijk dan in /var/log/syslog, of geef het commando 'dmesg' voor eventuele systeemmeldingen. Fouten met hardware kunnen regelmatig meldingen veroorzaken in de systeem log.

Mocht je systeem niet veilig zijn en iemand heeft ingebroken op je server, dan kan die persoon een rootkit hebben geinstalleerd. Die kans is nihil als je altijd veilige software (up-to-date) draait, maar als je het onderhoud niet zo nauw neemt, kan het best gebeuren. Om te controleren op rootkits is het programma 'chkrootkit' erg handig. Dit kan een eerste indicatie geven of je systeem nog te vertrouwen is (of er dus geen rootkits geinstalleerd zijn). Als je dit programma hebt geinstalleerd, geef je als root-gebruiker het commando:

chkrootkit

Lees de uitvoer goed en aandachtig. Vergeet echter niet dat als je reden hebt om aan te nemen dat er met je systeem geknoeid is, je niet 100% zekerheid kunt verwachten van chkrootkit. Het kan zijn dat een rootkit onzichtbaar is, of te nieuw voor het programma. Als je echt onzeker bent over de betrouwbaarheid van je systeem, dan is de enige optie een herinstallatie van je server systeem. Dit geldt ook als blijkt dat er een rootkit geinstalleerd is. Probeer niet de rootkit te verwijderen, want dat kan je een onterecht gevoel van veiligheid geven. Een schone installatie is in dit geval de beste optie.

Rootkits kunnen dingen doen als passwords onderscheppen, keys loggen, processen verbergen en achterdeurtjes openzetten, om het gebruik van je gehackte systeem eenvoudiger te maken voor de kraker. Mocht je een rootkit vinden op je systeem, dan is het aan te raden om via zoekmachines onderzoek te doen naar wat de rootkit doet. Dit is altijd nuttig om te kunnen nagaan wat de mogelijke schade aan je systeem is.

Gebruikers

Als je server veel gebruikt wordt, is het logisch dat er steeds meer mensen gebruik maken van diensten, waaronder shell-toegang. Om te controleren wie er gebruik maakt van je systeem en op welke tijden, kun je een aantal commando's gebruiken. Met 'who' zie je wie er op dat moment ingelogd zijn op het systeem. Met 'w' krijg je ook nog eens te zien welke programma's op dat moment gebruikt worden door de ingelogde gebruikers. 'last' geeft je een overzicht van de gebruikers die de afgelopen tijd zijn ingelogd op je systeem.

Voor elk commando bestaat een manual pagina, die je kunt oproepen door 'man [commando]'. De man-page van 'last' roep je dus op met:

man last

Probeer je gebruikers te vriend te houden. Zorg dat ze het naar hun zin hebben op je systeem, leg ze niet teveel beperkingen op waar dat niet nodig is, maar hou wel goed in de gaten of ze het systeem rechtmatig en legaal gebruiken. Je moet bijvoorbeeld streng optreden tegen gebruikers die met software andere systemen onderzoeken, of het dataverkeer sniffen op je systeem. Leg duidelijk uit dat dat soort handelingen niet gewenst zijn. Eventueel kun je deze voorwaarden en beperkingen opnemen in de 'message of the day' (/etc/motd), die bij het inloggen op het scherm verschijnt. Als de gebruikers weten waar ze aan toe zijn, hou je ze tevreden en begripvol en heb je het minst van ze te vrezen. Beperkingen maken nieuwsgierig, teveel vrijheid maakt nonchalant. Probeer hierin dus een middenweg te vinden.

Zorg daarnaast dat alle gebruikers goede wachtwoorden gebruiken en zorg dat ze deze vertrouwelijk behandelen. Sta niet toe dat ze hun gegevens aan anderen weggeven, zonder dat met jou te overleggen. Daarnaast moet je zelf verstandig zijn in het gebruik van de je root-rechten. Geef niet je root-wachtwoord aan anderen. De kans dat je de controle over je systeem verliest, zal enorm groeien als meer mensen het root-wachtwoord hebben.

Tot slot nog een stuk etiquette die je ter harte moet nemen: je bent root op je server, je hebt macht, maar misbruik deze niet. Ga niet andermans mail lezen, snuffel niet in de homedirectory van anderen als je daar geen reden voor hebt (verdenkingen).

Zorg goed voor je server!

 

© 2002-2008 - Linux-box.nl en bijdragende auteurs