Linux-härdning: en 15-stegs checklista för en säker Linux-server

Gus Khawaja

de flesta antar att Linux är säkert, och det är ett falskt antagande. Tänk dig att din bärbara dator är stulen utan att först härdas. En tjuv skulle förmodligen anta att ditt användarnamn är” root ”och ditt lösenord är” toor ” eftersom det är standardlösenordet på Kali och de flesta fortsätter att använda det. Gör du? Det hoppas jag inte.

de negativa karriär implikationerna av att välja att inte härda din Kali Linux-värd är allvarliga, så jag delar de nödvändiga stegen för att göra din Linux-värd säker, inklusive hur jag använder penetrationstestning och Kali Linux för att få jobbet gjort. Det är viktigt att notera att även om de är många distributioner (AKA distros) av Linux och var och en skiljer sig från kommandoradsperspektivet, är logiken densamma. Använd följande tips för att härda din egen Linux-låda.

1-dokumentera värdinformationen

varje gång du arbetar med ett nytt Linux-härdningsjobb måste du skapa ett nytt dokument som har alla checklisteposter som anges i det här inlägget, och du måste bocka av varje objekt du tillämpade. På toppen av dokumentet måste du dessutom inkludera Linux-värdinformationen:

  • Maskinnamn
  • IP-adress
  • Mac-adress
  • namn på den person som gör härdningen (troligtvis du)
  • datum
  • Tillgångsnummer (om du arbetar för ett företag måste du inkludera det tillgångsnummer som ditt företag använder för att märka värdar.)

2-BIOS-skydd

du måste skydda värdens BIOS med ett lösenord så att slutanvändaren inte kan ändra och åsidosätta säkerhetsinställningarna i BIOS; det är viktigt att hålla detta område skyddat från eventuella ändringar. Varje datortillverkare har en annan uppsättning nycklar för att gå in i BIOS-läget, då handlar det om att hitta konfigurationen där du ställer in det administrativa lösenordet.

Därefter måste du inaktivera uppstart från externa medieenheter (USB/CD/DVD). Om du utelämnar att ändra den här inställningen kan vem som helst använda ett USB-minne som innehåller ett startbart operativsystem och kan komma åt dina OS-data.

+ vill du veta mer om Linux? Läs mer med Pluralsight, en teknikinlärningsplattform. Lär dig Linux nu. +

de senaste servrarnas moderkort har en intern webbserver där du kan komma åt dem på distans. Se till att ändra standardlösenordet på administratörssidan eller inaktivera det om det är möjligt.

3 – hårddiskkryptering (Sekretess)

de flesta av Linux-distributionerna låter dig kryptera dina diskar före installationen. Diskkryptering är viktigt vid stöld eftersom personen som stal din dator inte kommer att kunna läsa dina data om de ansluter hårddisken till sin maskin.

i bilden nedan väljer du det tredje alternativet från listan: guidad-använd hela disken och ställ in krypterad LVM (LVM står för logisk volymhanterare.)

om din Linux-distribution inte stöder kryptering kan du gå med en programvara som TrueCrypt.

4-Diskskydd (tillgänglighet)

säkerhetskopior har så många fördelar vid ett skadat system, buggar i OS-uppdateringen. För viktiga servrar måste säkerhetskopian överföras offsite i händelse av en katastrof. Backup måste också hanteras. Till exempel, hur länge kommer du att behålla de gamla säkerhetskopiorna? När behöver du säkerhetskopiera ditt system (varje dag, varje vecka…)?

kritiska system ska separeras i olika partitioner för:

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

Portioneringsskivor ger Dig möjlighet till prestanda och säkerhet vid systemfel. På bilden nedan kan du se möjligheten att separera partitioner i Kali Linux under installationen.

5-Lås startkatalogen

startkatalogen innehåller viktiga filer relaterade till Linux-kärnan, så du måste se till att den här katalogen är låst för skrivskyddade behörigheter genom att följa nästa enkla steg. Öppna först filen ”fstab”.

lägg sedan till den sista raden markerad längst ner.

när du är klar med att redigera filen måste du ställa in ägaren genom att utföra följande kommando:

#chown root:root /etc/fstab

därefter ställer jag in några behörigheter för att säkra startinställningarna:

  • Ställ in ägare och grupp av /etc/grub.conf till root-användaren:

#chown root:root /etc/grub.conf

  • ange tillstånd på / etc / grub.conf-fil för att läsa och skriva endast för root:

#chmod og-rwx /etc/grub.conf

  • Kräv autentisering för enanvändarläge:

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

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

6-Inaktivera USB-användning

beroende på hur kritiskt ditt system är, är det ibland nödvändigt att inaktivera USB-sticksanvändningen på Linux-värden. Det finns flera sätt att neka användningen av USB-lagring; här är en populär:

öppna ”svartlistan.conf ” – fil med din favorittextredigerare:

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

när filen öppnas lägger du till följande rad i slutet av filen (spara och stäng):

blacklist usb_storage

efter detta öppnar du rc.lokal fil:

#nano /etc/rc.local

slutligen lägger du till följande två rader:

modprobe -r usb_storage

exit 0

7-systemuppdatering

det första du ska göra efter den första starten är att uppdatera systemet; detta borde vara ett enkelt steg. I allmänhet öppnar du ditt terminalfönster och kör lämpliga kommandon. I Kali Linux uppnår du detta genom att utföra kommandona på bilden nedan:

8-Kontrollera de installerade paketen

lista alla paket som är installerade på ditt Linux OS och ta bort de onödiga. Du måste vara mycket strikt om värden du försöker härda är en server eftersom servrar behöver minst antal applikationer och tjänster installerade på dem. Här är ett exempel på hur du listar de paket som är installerade på Kali Linux:

kom ihåg att inaktivera onödiga tjänster kommer att minska attackytan, så det är viktigt att ta bort följande äldre tjänster om du hittade dem installerade på Linux-servern:

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

9-Sök efter öppna portar

att identifiera öppna anslutningar till internet är ett kritiskt uppdrag. I Kali Linux använder jag följande kommando för att upptäcka några dolda öppna portar:

10-säker SSH

Ja, SSH är säkert, men du måste också härda den här tjänsten. Först och främst, om du kan inaktivera SSH, är det ett problem löst. Men om du vill använda den måste du ändra standardkonfigurationen för SSH. För att göra det, Bläddra till /etc/ssh och öppna filen ”sshd_config” med din favorittextredigerare.

  • ändra standardportnummer 22 till något annat, t.ex. 99.
  • se till att root inte kan logga in på distans via SSH:

PermitRootLogin no

  • Tillåt vissa specifika användare:

AllowUsers

listan kan gå på och på, men dessa bör vara tillräckligt för att börja med. Till exempel lägger vissa företag till banners för att avskräcka angripare och avskräcka dem från att fortsätta vidare. Jag uppmuntrar dig att kontrollera ssh: s manual för att förstå alla konfigurationer i den här filen, eller så kan du besöka den här webbplatsen för mer information.

här är några ytterligare alternativ som du måste se till att det finns i filen ”sshd_config” :

  • Protocol2
  • IgnoreRhosts till Ja
  • HostbasedAuthentication no
  • PermitEmptyPasswords no
  • X11Forwarding no
  • MaxAuthTries 5
  • Ciphers aes128-ctr,Aes192-Ctr,AES256-Ctr
  • clientaliveinterval 900
  • clientalivecountmax 0
  • usepam Ja

slutligen ställer du in behörigheterna för sshd_config-filen så att endast root-användare kan ändra innehållet:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- aktivera SELinux

Security Enhanced Linux är en Kärnsäkerhetsmekanism för att stödja säkerhetspolicy för åtkomstkontroll. SELinux har tre konfigurationslägen:

  • inaktiverad: avstängd
  • Permissive: skriver varningar
  • Enforcing: Policy verkställs

använda en textredigerare, öppna konfigurationsfilen:

#nano /etc/selinux/config

och se till att policyn tillämpas:

SELINUX=enforcing

12- nätverksparametrar

att säkra dina Linux-värdnätverksaktiviteter är en viktig uppgift. Antag inte alltid att din brandvägg tar hand om allt. Här är några viktiga funktioner att tänka på för att säkra ditt värdnätverk:

– inaktivera IP-vidarebefordran genom att ställa in nätet.ipv4.ip_forward parameter till 0 i ” /etc / sysctl.conf”

– aktivera dåligt Felmeddelandeskydd genom att ställa in nätet.ipv4.icmp_ignore_bogus_error_responses parameter till 1 i ” /etc / sysctl.conf ”

jag rekommenderar starkt att du använder Linux-brandväggen genom att tillämpa iptable-reglerna och filtrera alla inkommande, utgående och vidarebefordrade paket. Att konfigurera dina iptables-regler tar lite tid, men det är värt smärtan.

13- Lösenordspolicyer

människor återanvänder ofta sina lösenord, vilket är en dålig säkerhetspraxis. De gamla lösenorden lagras i filen ”/etc/security/opasswd”. Vi kommer att använda Pam-modulen för att hantera Linux-värdens säkerhetspolicyer. Öppna filen Under en debian-distro ” /etc / pam.d / common-password” med en textredigerare och Lägg till följande två rader:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (tillåter inte användare att återanvända de senaste fyra lösenorden.)

en annan lösenordspolicy som bör tvingas är starka lösenord. Pam-modulen erbjuder en pam_cracklib som skyddar din server från ordbok och brute-force-attacker. För att utföra denna uppgift, öppna filen /etc/pam.d / system-auth med någon textredigerare och Lägg till följande rad:

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

Linux kommer att hash lösenordet för att undvika att spara den i klartext så, du måste se till att definiera en säker lösenord hashing algoritm SHA512.

en annan intressant funktion är att låsa kontot efter fem misslyckade försök. För att detta ska hända måste du öppna filen ”/etc/pam.d / lösenord-auth” och Lägg till följande rader:

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

vi är inte klara ännu; ytterligare ett steg behövs. Öppna filen ” /etc / pam.d / system-auth” och se till att du har lagt till följande rader:

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

efter fem misslyckade försök kan endast en administratör låsa upp kontot med hjälp av följande kommando:

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

en annan bra praxis är också att ställa in lösenordet för att löpa ut efter 90 dagar, för att utföra denna uppgift måste du:

  • Ställ in parametern PASS_MAX_DAYS till 90 i ”/etc/login.defs ”
  • ändra den aktiva användaren genom att utföra följande kommando :

#chage --maxdays 90 <user>

nästa tips för att förbättra lösenordspolicyn är att begränsa åtkomsten till su-kommandot genom att ställa in pam_wheel.so parametrar i ” / etc / pam.d/su”:

auth krävs pam_wheel.so use_uid

det sista tipset för lösenordspolicy är att inaktivera systemkonton för icke-root-användare genom att använda följande bash-skript:

#!/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-behörigheter och verifieringar

Förbered dig mentalt eftersom det här kommer att bli en lång lista. Men behörigheter är en av de viktigaste och kritiska uppgifterna för att uppnå säkerhetsmålet på en Linux-värd.

#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

Ställ in rätt och behörigheter på ”/ var / spool/ cron ” för ”root crontab”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Ange användare / gruppägare och tillstånd på” passwd ” – filen

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Ange användare / gruppägare och tillstånd på” grupp ”- filen

#chmod 644 /etc/group

#chown root:root /etc/group

Ange användare / gruppägare och tillstånd på” shadow ”- filen

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Ange användare / gruppägare och tillstånd på” gshadow ” – filen

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- ytterligare processhärdning

för det här sista objektet i listan innehåller jag några ytterligare tips som bör beaktas vid härdning av en Linux-värd.

begränsa först kärndumpar med:

  • lägga till hård kärna 0 till ” /etc/säkerhet / gränser.conf ” fil
  • lägga till fs.suid_dumpable = 0 till ” / etc / sysctl.conf ” – fil

för det andra, konfigurera Exec Shield av:

  • lägga till kärna.exec-shield = 1 till ”/etc/sysctl.conf ” fil

tredje, aktivera randomiserad virtuellt minne Region placering av:

  • lägga till kärna.randomize_va_space = 2 till ”/etc/sysctl.conf ” – fil

sista ord

i det här korta inlägget täckte vi många viktiga konfigurationer för Linux-säkerhet. Men vi har bara skrapat på ytan av Linux-härdning – det finns många komplexa, nitty-gritty konfigurationer. För att lära dig mer om hur du härdar dina Linux-servrar för bättre säkerhet, kolla in mina kurser på Pluralsight.

Gus Khawaja är säkerhetskonsult och författare på Pluralsight. Han arbetar inom säkerhets -, IT-och webbapplikationsutveckling och skapar kurser för Pluralsight. Gus har framgångsrikt levererat och utvecklat IT-lösningar för företag i hela Kanada. Efter många års erfarenhet av datavetenskap har han riktat sin uppmärksamhet mot cybersäkerhet och vikten av säkerhet för detta minfält. Hans passion för etisk hacking blandas med sin bakgrund i programmering och det gör honom till en klok Schweizisk Army Knife professionell inom datavetenskap.

Lämna ett svar

Din e-postadress kommer inte publiceras.