november 7
20 Tips om je Linux server te beveiligen (Deel 1)
Het beveiligen van een Linux server is belangrijk. Je moet je data en andere gevoelige informatie goed kunnen beveiligen tegen hackers/crackers. In dit artikel zal ik de eerste 10 tips bespreken. Deze zijn allemaal uit te voeren op een standaard Linux-server installatie.
#1 Encrypt data communicatie
Alle data dat over het netwerk gaat is te lezen met behulp van een sniffer. Natuurlijk wil je dat niet, want er gaat gevoelige informatie over het netwerk en deze informatie kan in slechte handen vallen. Daarom is het ook bel
angrijk dat alle bestanden en gegevens gecodeerd over het netwerk gaan. Dit kun je op de volgende manieren bereiken:
- Gebruik scp / ssh (rsync) /sftp om je bestanden over te zetten;
-
Met GnuPG kun je data encrypteren en daarna versturen. Je gebruikt hierbij sleutels om het coderen en te decoderen.
- Fugu is een grafische interface voor SFTP verbindingen. Het is vergelijkbaar met een FTP maar in tegenstelling tot FTP is bij SFTP de hele sessie gecodeerd. Dit betekent dat alle wachtwoorden niet in plain tekst worden verstuurd. Je netwerk is daarom ook minder kwetsbaar voor mensen die bijvoorbeeld sniffen. Een andere optie is FileZilla. Filezilla is een FTP client die ook SFTP verbindingen ondersteund.
- OpenVPN is een makkelijk en opensource software om VPN verbindingen te maken met behulp van het SSL protocol.
-
Gebruik Lighttpd SSL Https om HTTPS te gebruiken bij sites waar je moet inloggen.
#1.1 Voorkom gebruik van FTP, Telnet en Rlogin/Rsh
In een netwerk kunnen alle gegevens die niet gecodeerd zijn worden onderschept met behulp van een sniffer en dit wil je natuurlijk voorkomen. Daarom is het ook verstandiger om geen FTP, Telnet en Rlogin/Rsh te gebruiken. Gebruik ook hiervoor OpenSSH, SFTP of FTPS (FTP over SSL). Op een Redhat server kun je de volgende commando gebruiken om NIS, Rsh ander soortgelijke software te verwijderen:
# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve
#2 Gebruik zo min mogelijk software
Hoe minder software je gebruikt hoe minder kwetsbaar je systeem zal zijn. Daarom is het belangrijk om te controleren welke software er allemaal op je systeem staat en daarnaast ongebruikte programma’s weg te halen. Je kunt alle software heel gemakkelijk weergeven door gebruik te maken van Yum en Dpkg, Je kunt het hiermee ook verwijderen.
# dpkg -list
# dpkg -info (pakketnaam)
# apt-get remove (pakketnaam)
Of
# yum list installed
# yum remove (pakketnaam)
# yum list (pakketnaam)
#3 Één netwerkservice per systeem of Virtuele Machine
Gebruik niet voor alle netwerkservices eenzelfde machine, maar gebruik meerdere machines of Virtuele Machines. De reden hiervoor is dat wanneer een hacker misbruik maakt van een van de services hij volledige toegang kan krijgen tot al je services die op je netwerk draaien zoals Apache, MySQL, Email etc. Het is daarom ook verstandig om Virtualisatie te gebruiken en elke Virtuele Machine maximaal één service te geven.
#4 Blijf up to date!
Het is erg van belang dat je altijd up to date blijft zodat eventuele kwetsbaarheden in software verholpen kunnen worden. Daarom is het belangrijk om regelmatig je kernel en applicaties te updatete. Je kunt heel makkelijk alle updates toepassen; hiervoor kun je Yum en Apt-get gebruiken:
# yum update
Of
# apt-get update && apt-get upgrade
In Red Hat/Cen
tOS en Fedora kun je updatenotificaties via email ontvangen. In Ubuntu/Debian kun je cronjobs gebruiken om updates te installeren of je kunt apticorn gebruiken om emailnotificaties te ontvangen.
#5 Gebruik Linux beveiligingsextensies
Als je gebruik maakt van een Unix systeem komen er regelmatig beveiligingspatches uit die je helpen om kwetsbaarheden te patchen. Maak voor zover mogelijk gebruik van SELinux. SELinux is een extra beveiliging voor je systeem. Ik raad echt aan om er gebruik van te maken. Het maakt onder andere policies aan voor je Kernel.
#5.1 SELinux
Zoals ik hierboven al aangaf raad ik het aan om SELinux te gebruiken. SELinux voorziet je systeem van een flexibele Mandatory Access Control (MAC) naast de standaard Linux Discretionary Access Control (DAC). SELinux controleert welke processen welk type bestand proberen te openen en biedt daarom een extra beveiliging, en maakt u systeem veiliger. Er staat ook een uitleg over SELinux in de Redhat documentatie.
#6 Gebruikers- en wachtwoordpolicies
Je kunt gebruik maken van useradd/usermod commando’s om je gebruikers te beheren. Het is belangrijk dat je ze goed beheert en ervoor zorgt dat er niet iets raars mee gebeurd. Een van de belangrijkste regels hierbij is dan ook dat je een goede wachtwoordpolicy moet instellen zodat het niet makkelijk te kraken (bruteforcen) is. Je kunt regels instellen, zoals minimaal 8 karakters met speciale tekens erin. Gebruikers moeten de wachtwoorden uit hun hoofd kennen want een van de meest gemaakt fout is dat het ergens opgeschreven wordt en in de buurt van de PC ligt.
Er zijn applicaties om snel te controlleren of gebruikers zwakke wachtwoorden hebben; je kunt het bijvoorbeeld doen met “John the ripper”. Natuurlijk kun je je gebruikers ook forceren om een ingewikkeld wachtwoord te gebruiken, hiervoor moet je “pam_cracklib.so” aanpassen.
#6.1 Wachtwoord verlooptijd
Zorg ervoor dat gebruikers om een bepaalde tijd hun wachtwoord veranderen. Hiervoor kun je “chage” gebruiken om regels in te stellen zodat het wachtwoord maar voor een bepaalde tijd geldig is. Als het is toegepast kun je het natuurlijk ook weer uitschakelen. Om het uit te schakelen kun je het volgende commando gebruiken..
# chage -M 99999 userName
Je kunt ook informatie opvragen van een gebruiker. Dit doe je met de volgende commando:
# chage -l “gebruikersnaam”
Als je niet
gebruikt wilt maken van chage kan het ook handmatig worden aangepast (ook al raad ik het niet aan). Hiervoor moet je /etc/shadow aanpassen. /etc/shadow ziet er als volgt uit
{gebruikersnaam}:{wachtwoord}:{laatstwachtwoordverandering}:{Minimum_dagen}:{Maximum_dagen}:{waarschuwing}:{inactief}:{verlopen}:
#6.2 Beperk het gebruik van een oude wachtwoord
Als personen vaak wachtwoord veranderen gaan ze meestal weer terug naar hun oude wachtwoord. Voorkom dat dit gebeurd! Je kunt hiervoor PAM gebruiken. PAM onthoudt alle wachtwoorden die in het verleden gebruikt zijn en voorkomt dat ze weer worden gebruikt.
#6.3 Blokkeer een gebruiker na foutieve login
Natuurlijk worden alle foutieve inlogpogingen bijgehouden, maar gebeurd hier wel wat mee? Meestal worden ze in log bestanden gezet en wordt er niet naar gekeken. Maar hier moet verandering in komen! Zorg ervoor dat als gebruikers verkeerde wachtwoorden opgeven, ze geblokkeerd worden. De betreffende log wordt bijgehouden in /var/log/faillog. Je kunt heel makkelijk met 1 commando alle foutieve inlog pogingen zien:
# faillog
Als een gebruiker geblokkeerd is kun je de gebruiker weer vrijgeven met de volgende commando
# faillog -r -u gebruikersnaam
om een gebruiker handmatig te blokkeren kun je “passwd” ervoor gebruiken.
-blok account:
# passwd -l gebruikersnaam
-vrijgeven van account:
# passwd -u gebruikersnaam
#6.4 Controleer op lege wachtwoorden
Gebruik het volgende commando om alle gebruikers te controleren op lege wachtwoorden:
# awk -F: `($2 == “”) {print}` /etc/shadow
Eventuele gebruikers met lege wachtwoorden kun je tijdelijk blokkeren totdat ze hun wachtwoorden hebben aangepast.
#6.5 Zorg ervoor dat alleen root gebruikers UID 0 hebben
Alleen root gebruikers mogen UID 0 hebben, dat wil zeggen dat ze volledige rechten hebben op het systeem. Je wilt niet dat een ander persoon deze rechten heeft. Je kunt weer een lijstje weergeven wie er allemaal UID 0 hebben.
# awk -F: '($3 == "0") {print}' /etc/passwd
dan krijg je waarschijnlijk 1 lijn met de volgende tekst, of je moet meerdere root gebruikers hebben.
root:x:0:0:root:/root:/bin/bash
als je er meer hebt controleer dan of ze dan echt die rechten mogen hebben.
#7 Schakel root login UIT
Log nooit in als root gebruiker maar gebruik daarvoor het Sudo commando. Sudo is een stuk veiliger en je kunt er ook mee auditen en tracen.
#8 Fysieke Server beveiliging
Tegenwoordig heeft iedereen wel een USB-stick. Daarom wil je voorkomen dat iemand met een USB-stick komt en alle bestanden steelt of iets anders op installeert installeert. Je moet ervoor zorgen dat alle USB-poorten (tenzij ze gebruikt wordten) uitgeschakeld zijn. Je kunt dit doen via BIOS.
#9 Schakel ongebruikte services uit
Gebruik niet teveel onnodige services; dit kan vaak leiden tot kwetsbaarheden. Schakel ze dan ook uit en zorg dat ze niet meer worden opgestart als je server opstart. Je kunt heel makkelijk een lijstje weergeven van processen die opgestart worden:
# chkconfig –list | grep `3:on`
De 3 staat voor het
runlevel (dit kan verschillen per distributie) . Om een service uit te schakelen kun je het volgende commando gebruiken:
# service servicenaam stop
# chkconfig servicenaam off
#9.1 Openstaande poorten.
Controleer openstaande poorten met de bijbehorende programma’s. Dit kun je doen met het volgende commando:
netstat -tulpin
of
nmap -sT -o localhost
nmap -sT -o server.voorbeeld.nl
Gebruik Iptables om poorten te sluiten en ze te laten stoppen.

#10 Schakel X window uit
X window is niet nodig om bijvoorbeeld een apache server te draaien en daarom is het ook beter om het uit te zetten. Als X window uit staat is je systeem waarschijnlijk een stuk sneller en minder kwetsbaar. Als je Ubuntu Server gebruikt wordt het automatisch niet mee geïnstalleerd.
Dit was Deel 1 van mijn 20 tips om je server optimaal te beveiligen. Binnenkort kom ik met Deel 2, waar weer 10 nieuwe tips in staan die je kunt gebruiken om je server te beveiligen!

