Linux harden: een 15-stappen checklist voor een veilige Linux server

Gus Khawaja

de meeste mensen gaan ervan uit dat Linux veilig is, en dat is een valse veronderstelling. Stel je voor dat je laptop wordt gestolen zonder eerst te worden verhard. Een dief zou waarschijnlijk aannemen dat uw gebruikersnaam “root” is en uw wachtwoord “toor” is, aangezien dat het standaardwachtwoord is op Kali en de meeste mensen het blijven gebruiken. Jij wel? Ik hoop het niet.

de negatieve carrièreimplicaties van het niet harden van je Kali Linux host zijn ernstig, dus Ik zal de nodige stappen delen om je Linux host veilig te maken, inclusief hoe ik penetration testing en Kali Linux gebruik om de klus te klaren. Het is belangrijk op te merken dat, hoewel het veel distributies (AKA distro ‘ s) van Linux zijn en elk ervan verschilt van het command line perspectief, de logica hetzelfde is. Gebruik de volgende tips om je eigen Linux box te harden.

1-documenteer de hostinformatie

elke keer dat je aan een nieuwe Linux verharding taak werkt, moet je een nieuw document maken met alle checklist items die in dit bericht staan vermeld, en je moet elk item dat je hebt toegepast, uitchecken. Bovendien moet je bovenaan het document de Linux host informatie opnemen:

  • machinenaam
  • IP-adres
  • Mac-adres
  • naam van de persoon die de verharding uitvoert (hoogstwaarschijnlijk u)
  • Datum
  • Actiefnummer (als u voor een bedrijf werkt, moet u het actiefnummer vermelden dat uw bedrijf gebruikt voor het taggen van hosts.)

2-BIOS protection

u moet het BIOS van de host beveiligen met een wachtwoord zodat de eindgebruiker de beveiligingsinstellingen in het BIOS niet kan wijzigen en overschrijven; het is belangrijk om dit gebied te beschermen tegen wijzigingen. Elke computerfabrikant heeft een andere set sleutels om de BIOS-modus in te voeren, dan is het een kwestie van het vinden van de configuratie waar u het beheerderswachtwoord instelt.

vervolgens moet u het opstarten van externe media-apparaten (USB/CD/DVD) uitschakelen. Als u deze instelling niet wijzigt, kan iedereen een USB-stick gebruiken die een opstartbaar besturingssysteem bevat en toegang heeft tot uw besturingssysteem.

+ meer weten over Linux? Meer informatie met Pluralsight, een technologie-leerplatform. Leer nu Linux. +

de moederborden van de nieuwste servers hebben een interne webserver waar u ze op afstand kunt benaderen. Zorg ervoor dat u het standaardwachtwoord van de admin pagina te wijzigen of uit te schakelen als het mogelijk is.

3-hard disk encryptie (vertrouwelijkheid)

de meeste Linux distributies zullen je toestaan om je schijven te versleutelen voor de installatie. Disk encryptie is belangrijk in geval van diefstal, omdat de persoon die uw computer heeft gestolen niet in staat zal zijn om uw gegevens te lezen als ze de harde schijf aan te sluiten op hun machine.

kies in de afbeelding hieronder de derde optie uit de lijst: Guided-gebruik de gehele schijf en stel versleutelde LVM in (LVM staat voor logical volume manager.)

als je Linux distributie geen encryptie ondersteunt, kun je gaan met een software zoals TrueCrypt.

4-schijfbeveiliging (beschikbaarheid)

back-ups hebben zoveel voordelen in het geval van een beschadigd systeem, bugs in de OS-update. Voor belangrijke servers moet de back-up offsite worden overgedragen in geval van een ramp. Back-up moet ook worden beheerd. Bijvoorbeeld, hoe lang houdt u de oude back-ups? Wanneer moet u een back-up maken van uw systeem (elke dag, elke week …)?

kritieke systemen moeten worden gescheiden in verschillende partities voor:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

portionering disks geeft u de mogelijkheid van prestaties en beveiliging in het geval van een systeemfout. In de afbeelding hieronder zie je de mogelijkheid om partities in Kali Linux te scheiden tijdens de installatie.

5-vergrendel de boot directory

de boot directory bevat belangrijke bestanden die gerelateerd zijn aan de Linux kernel, dus je moet er zeker van zijn dat deze directory is vergrendeld voor alleen-lezen rechten door de volgende eenvoudige stappen te volgen. Open eerst het” fstab ” bestand.

voeg vervolgens de laatste regel toe die onderaan is gemarkeerd.

wanneer u klaar bent met het bewerken van het bestand, moet u de eigenaar instellen door het volgende commando uit te voeren:

#chown root:root /etc/fstab

vervolgens stel ik enkele machtigingen in voor het beveiligen van de opstartinstellingen:

  • Stel de eigenaar en groep in van /etc / grub.conf naar de root gebruiker:

#chown root:root /etc/grub.conf

  • stel rechten in op /etc/grub.conf-bestand om alleen voor root te lezen en te schrijven:

#chmod og-rwx /etc/grub.conf

  • authenticatie voor single-user-modus vereisen:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Schakel USB-gebruik

afhankelijk van hoe kritisch uw systeem is, is het soms nodig om het gebruik van USB-sticks op de Linux-host uit te schakelen. Er zijn meerdere manieren om het gebruik van USB-opslag te ontkennen; hier is een populaire:

Open de ” zwarte lijst.conf ” bestand met behulp van uw favoriete teksteditor:

#nano /etc/modprobe.d/blacklist.conf

wanneer het bestand wordt geopend, voeg dan de volgende regel toe aan het einde van het bestand (opslaan en sluiten):

blacklist usb_storage

open hierna de rc.lokaal bestand:

#nano /etc/rc.local

voeg ten slotte de volgende twee regels toe:

modprobe -r usb_storage

exit 0

7-systeemupdate

het eerste wat je moet doen na de eerste boot is het systeem bijwerken; dit zou een eenvoudige stap moeten zijn. Over het algemeen opent u uw terminalvenster en voert u de juiste commando ‘ s uit. In Kali Linux bereik je dit door het uitvoeren van de commando ‘ s in onderstaande afbeelding:

8-Controleer de geïnstalleerde pakketten

een lijst van alle geïnstalleerde pakketten op uw Linux OS en verwijder de onnodige. Je moet heel strikt zijn als de host die je probeert te verharden een server is omdat servers het minste aantal applicaties en services nodig hebben die erop zijn geïnstalleerd. Hier is een voorbeeld van hoe u een lijst van de pakketten geà nstalleerd op Kali Linux:

onthoud dat het uitschakelen van onnodige services het aanvalsoppervlak zal verminderen, dus het is belangrijk om de volgende legacy services te verwijderen als je ze op de Linux server hebt geïnstalleerd:

  • Telnet-server
  • RSH-server
  • NIS-server
  • TFTP-server
  • TALK-server

9-controleren op open poorten

het identificeren van open verbindingen met het internet is een cruciale missie. In Kali Linux gebruik ik het volgende commando om verborgen open poorten te spotten:

10-Secure SSH

Ja, inderdaad SSH is veilig, maar u moet deze service ook hard maken. Allereerst, als je SSH kunt uitschakelen, is dat een probleem opgelost. Echter, als je het wilt gebruiken, dan moet je de standaard configuratie van SSH wijzigen. Om dit te doen, blader je naar /etc/ssh en open je het “sshd_config” bestand met je favoriete teksteditor.

  • Wijzig het standaard poortnummer 22 naar iets anders, bijvoorbeeld 99.
  • zorg ervoor dat root niet op afstand via SSH kan inloggen:

PermitRootLogin no

  • sommige specifieke gebruikers toestaan:

AllowUsers

de lijst kan doorgaan en doorgaan, maar deze moeten genoeg zijn om mee te beginnen. Sommige bedrijven voegen bijvoorbeeld banners toe om aanvallers af te schrikken en te ontmoedigen om verder te gaan. Ik moedig je aan om de handleiding van de SSH te raadplegen om alle configuraties in dit bestand te begrijpen, of je kunt deze site bezoeken voor meer informatie.

hier zijn enkele extra opties die u nodig hebt om er zeker van te zijn dat deze bestaan in het bestand” sshd_config”:

  • Protocol2
  • IgnoreRhosts ja
  • Rhostsauthentication geen
  • PermitEmptyPasswords no
  • X11Forwarding geen
  • MaxAuthTries 5
  • Codes aes128-ctr,aes192-ctr,aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM ja

tot slot, stel de machtigingen voor de sshd_config bestand, zodat alleen de root gebruikers kunnen de inhoud ervan wijzigen:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

Security Enhanced Linux is een Kernel beveiligingsmechanisme voor het ondersteunen van toegangscontrole beveiligingsbeleid. De SELinux heeft drie configuratiemodi:

  • Disabled: turn-off
  • Permissive: Prints waarschuwingen
  • afdwingen: beleid wordt afgedwongen

open het configuratiebestand met behulp van een teksteditor:

#nano /etc/selinux/config

en ervoor zorgen dat het beleid wordt gehandhaafd:

SELINUX=enforcing

12- netwerkparameters

het beveiligen van uw Linux host netwerk activiteiten is een essentiële taak. Ga er niet altijd vanuit dat je firewall voor alles zorgt. Hier zijn een aantal belangrijke functies om te overwegen voor het beveiligen van uw host netwerk:

– Schakel de IP Forwarding uit door het net in te stellen.ipv4.ip_forward parameter naar 0 in “/etc / sysctl.conf”

– Schakel de beveiliging van slechte Foutmeldingen in door het net in te stellen.ipv4.icmp_ignore_bogus_error_respons parameter naar 1 in “/etc / sysctl.conf ”

ik raad ten zeerste aan om de Linux Firewall te gebruiken door de iptable regels toe te passen en alle inkomende, uitgaande en doorgestuurde pakketten te filteren. Het configureren van je iptables regels zal enige tijd duren, maar het is de pijn waard.

13- wachtwoordbeleid

mensen hergebruiken vaak hun wachtwoorden, wat een slechte beveiligingspraktijk is. De oude wachtwoorden worden opgeslagen in het bestand “/etc/security/opasswd”. We gaan de PAM module gebruiken om het beveiligingsbeleid van de Linux host te beheren. Open onder een Debian distro het bestand ” / etc / pam.d / common-password ” met behulp van een teksteditor en voeg de volgende twee regels:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (zal gebruikers niet toestaan om de laatste vier wachtwoorden te hergebruiken.)

een ander wachtwoordbeleid dat geforceerd moet worden zijn sterke wachtwoorden. De PAM module biedt een pam_cracklib die je server beschermt tegen dictionary en brute-force aanvallen. Om deze taak uit te voeren, open je het bestand /etc/pam.d / system-auth met behulp van een tekstverwerker en voeg de volgende regel:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

Linux zal het wachtwoord hash om te voorkomen dat het op te slaan in duidelijke tekst dus, je moet ervoor zorgen om een veilig wachtwoord hashing algoritme SHA512 definiëren.

een andere interessante functionaliteit is het vergrendelen van het account na vijf mislukte pogingen. Om dit mogelijk te maken, moet je het bestand “/etc/pam openen.d / password-auth ” en voeg de volgende regels toe:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

We zijn nog niet klaar; een extra stap is nodig. Open het bestand ” / etc / pam.d/system-auth” en zorg ervoor dat u de volgende regels toegevoegd:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Na vijf mislukte pogingen, alleen een beheerder kan het ontgrendelen van de rekening met het volgende commando:

# /usr/sbin/faillock –user <userlocked> –reset

Ook een andere goede praktijk is om het wachtwoord verloopt na 90 dagen, om deze taak te volbrengen moet je:

  • Stel de parameter PASS_MAX_DAYS in op 90 in “/etc / login.defs “
  • Verander de actieve gebruiker door het volgende commando uit te voeren :

#chage --maxdays 90 <user>

de volgende tip voor het verbeteren van het wachtwoordbeleid is om de toegang tot het su commando te beperken door het instellen van de pam_wheel.so parameters in ” / etc / pam.d/su”:

vereist pam_wheel.so use_uid

de laatste tip voor wachtwoorden beleid is het uitschakelen van het systeem accounts voor niet-root gebruikers met behulp van het volgende bash script:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-Machtigingen en verificaties

Bereid je mentaal, omdat dit gaat om een lange lijst. Maar machtigingen zijn een van de belangrijkste en belangrijkste taken om het beveiligingsdoel op een Linux host te bereiken.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Stel de juiste en machtigingen op “/var/spool/cron” voor “root crontab”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Stel de Gebruiker/Eigenaar van de Groep en de Machtiging “passwd” bestand

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Stel de Gebruiker/Eigenaar van de Groep en Toestemming op het “groep” bestand

#chmod 644 /etc/group

#chown root:root /etc/group

gebruiker/Groepseigenaar en toestemming instellen voor het “shadow” bestand

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

gebruiker/Groepseigenaar en toestemming instellen voor het” gshadow ” bestand

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- extra proces verharding

voor dit laatste item in de lijst, heb ik een aantal extra tips die moeten worden overwogen bij het verharden van een Linux host.

eerst core dumps beperken met:

  • hard core 0 toevoegen aan de ” /etc/security/limits.conf ” bestand
  • toevoegen van fs.suid_dumpable = 0 naar de ” /etc / sysctl.conf ” bestand

ten tweede, configureer Exec Shield met:

  • kernel toevoegen.exec-shield = 1 naar “/etc / sysctl.conf ” bestand

derde, schakel randomized Virtual Memory Region Placement in met:

  • kernel toevoegen.randomize_va_space = 2 naar de ” /etc / sysctl.conf ” bestand

laatste woorden

in deze korte post hebben we veel belangrijke configuraties voor Linux beveiliging behandeld. Maar we hebben net het oppervlak van Linux verharding bekrast – er zijn veel complexe, nitty-gritty configuraties. Om meer te weten te komen over hoe je je Linux servers kunt verharden voor een betere beveiliging, Bekijk Mijn cursussen over Pluralsight.Gus Khawaja is veiligheidsadviseur en auteur bij Pluralsight. Hij werkt in security, IT en webapplicatie ontwikkeling en maakt cursussen voor Pluralsight. Gus heeft met succes IT-oplossingen geleverd en ontwikkeld voor bedrijven in heel Canada. Na vele jaren ervaring in de informatica, heeft hij zijn aandacht gericht op cyber security en het belang dat beveiliging in dit mijnenveld brengt. Zijn passie voor ethisch hacken vermengd met zijn achtergrond in programmeren en het maakt hem een wijze Zwitserse zakmes professional in de informatica veld.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.