Granska filåtkomst linux. De bästa verktygen för Linux-säkerhetsrevision. Denna tjänst inkluderar

Linux-serversäkerhet är mycket viktigt för att skydda dina data, immateriella rättigheter och tid från hackares händer. Systemadministratören ansvarar för säkerheten för operativsystemet Linux. I den här artikeln kommer vi att titta på tjugo saker du behöver göra med ditt Linux-operativsystem för att hålla det säkert och säkert hela tiden. Om det här är en hemdator så kanske det inte är någon idé att oroa sig så mycket för säkerheten, starka lösenord och blockering av åtkomst till portar från Internet räcker. Men i fallet med en offentlig server bör du vara uppmärksam på att säkerställa dess skydd.

Dessa instruktioner kommer att fungera för alla distributioner, oavsett om du använder CentOS, Red Hat eller Ubuntu, Debian.

1. Kommunikationskryptering

All data som överförs över nätverket är öppen för övervakning. Därför är det nödvändigt att kryptera de överförda data, där det är möjligt med hjälp av lösenord, nycklar eller certifikat.

Använd scp, ssh , rsync eller sftp för att överföra filer. Du kan också montera ett fjärrfilsystem till din hemkatalog med hjälp av verktyg som shhfs.

GnuPG låter dig kryptera och signera dina data med en speciell privat nyckel. Det finns även funktioner för nyckelhantering och åtkomst till publika nycklar.

Fugu är ett grafiskt SFTP-filöverföringsverktyg. SFTP är väldigt lik FTP, men hela sessionen är krypterad. Detta innebär att inga lösenord eller kommandon överförs i det klara. Därför är sådana överföringar mindre sårbara för tredje part. Du kan också använda FileZilla, som är en plattformsoberoende FTP-klient som stöder FTS över SSH/TLS och SSH File Transfer Protocol (SFTP).

OpenVPN är en effektiv och lätt VPN-klient med stöd för SSH-kryptering.

2. Försök att inte använda FTP, Telnet, Rlogin och RSH

På de flesta nätverk kan användarnamn, lösenord från FTP, Telnet, RSH-kommandon fångas upp av någon på samma nätverk med hjälp av en paketsniffare. Den allmänna lösningen på detta problem är att använda OpenSSH, SFTP eller SFTP, som lägger till SSL eller TLS till vanlig FTP. Kör följande kommando för att ta bort NIS, RSH och andra föråldrade tjänster:

yum radera inetd xinetd ypserv tftp-server telnet-server rsh-serve

3. Minska mängden programvara

Behöver du verkligen alla installerade webbtjänster? Du bör inte installera onödig programvara för att undvika sårbarheter i dessa program. Använd din pakethanterare för att se dina installerade program och ta bort alla du inte behöver:

yum list installerad
$ yum list paket
$ yum ta bort paket

dpkg --lista
$ dpkg --info-paket
$ apt-get remove-paket

4. En maskin - en tjänst

Kör olika tjänster på separata servrar eller virtuella maskiner. Detta begränsar antalet tjänster som kan äventyras. Till exempel, om en angripare kan hacka sig in i Apache, kommer han att få tillgång till hela servern. Inklusive tjänster som MySQL, e-postserver och så vidare. Du kan använda programvara som XEN eller OpenVZ för virtualisering.

5. Håll Linuxkärnan och programvaran uppdaterad

Att tillämpa säkerhetskorrigeringar är en mycket viktig del av att hålla en Linux-server säker. Operativsystemet innehåller alla verktyg för att hålla systemet uppdaterat och uppgradera till nya versioner. Alla säkerhetsuppdateringar bör tillämpas så snart som möjligt. Även här behöver du använda din pakethanterare. Till exempel:

Eller för Debianbaserade system:

sudo apt uppdatering && sudo apt uppgradering

Du kan ställa in Red Hat eller Fedora för att skicka dig e-postmeddelanden när nya säkerhetsuppdateringar är tillgängliga. Du kan också ställa in automatiska uppdateringar via cron, eller så kan du använda Debians aptcron för att meddela dig att du ska uppdatera ditt system.

6. Använd säkerhetstillägg i Linux

Operativsystemet Linux kommer med olika säkerhetskorrigeringar som kan användas för att skydda mot felkonfiguration eller skadlig programvara. Men du kan också använda ytterligare åtkomstkontrollsystem för applikationer som SELinux eller AppArrmor.

SELinux tillhandahåller olika säkerhetspolicyer för Linux-kärnan. Här är det möjligt att kontrollera åtkomsten till alla systemresurser med hjälp av roller. En viss resurs kan endast nås av ett program vars roll tillåter det, och även superanvändarrättigheter spelar ingen roll. SELinux ökar avsevärt säkerheten för ett Linux-system, eftersom även root anses vara en normal användare här. Mer detaljer beskrivs i en separat artikel.

7. Användarkonton och starka lösenord

Använd kommandona useradd och usermod för att skapa och underhålla användarkonton. Se till att ha ett bra och starkt lösenord, det ska innehålla minst åtta tecken, gärna i ett annat fall, bland vilka det ska finnas specialtecken eller siffror. Till exempel 8 tecken, varav sju är bokstäver och ett tecken eller nummer. Använd verktyg som John the ripper för att hitta svaga användarlösenord på servern och konfigurera pam_cracklib.so för att upprätthålla lösenordspolicyn.

8. Byt lösenord då och då

Change-kommandot låter dig ange antalet dagar före det påtvingade lösenordsändringsdatumet. Denna information används av systemet för att bestämma när användaren ska ändra den. Dessa inställningar finns i /etc/login.defs. För att inaktivera åldrande av lösenord, skriv in följande kommando:

ändra -l användarnamn

För att få information om lösenordets utgångsdatum, skriv in kommandot:

Du kan också konfigurera allt manuellt, i filen /etc/shadow:

(användarlösenord): (Senast ändrad):(max_days): (minimum_days): (Varning):(avaktivera):(expiration_lines):

  • Minsta dagar- det minsta intervallet mellan lösenordsändringar, det vill säga hur ofta användaren kan ändra lösenordet.
  • Max antal dagar- hur många dagar lösenordet kommer att vara giltigt, efter denna period kommer användaren att tvingas ändra lösenordet.
  • Varning- antalet dagar efter vilka användaren kommer att varnas om att han behöver ändra sitt lösenord.
  • expiry_string- antalet dagar sedan 1 januari 1970 då kontot kommer att stängas av helt.

chage -M 60 -m 7 -W 7 användarnamn

Det är också önskvärt att förhindra användare från att använda gamla lösenord, annars kommer alla ansträngningar att tvinga dem att byta lösenord omintetgöras.

9. Blockera konton efter misslyckade inloggningsförsök

På ett Linux-operativsystem kan du använda kommandot faillog för att se misslyckade användarinloggningsförsök. Du kan också använda den för att sätta en gräns för misslyckade inloggningsförsök. All information om misslyckade inloggningsförsök lagras i filen /var/log/faillog. För att se den, skriv:

Och för att sätta en gräns för inloggningsförsök för ett specifikt konto, använd:

faillog -r -u användare

Du kan också manuellt blockera eller avblockera konton med kommandot passwd. Så här blockerar du användning:

passwd -l användare

Och för att låsa upp:

passwd -u användare

Det är också lämpligt att kontrollera om det finns konton med tomma lösenord i systemet. För att göra detta, kör:

awk -F: "($2 == "") (print)" /etc/shadow

Kontrollera även om det finns några användare med grupp eller id 0. Det bör bara finnas en sådan användare, och detta är root. Du kan kontrollera med detta kommando:

awk -F: "($3 == "0") (print)" /etc/passwd

Det ska bara finnas en rad:

root:x:0:0:root:/root:/bin/bash

Om det finns andra, ta bort dem. Användare, och särskilt deras svaga lösenord, är en av de mest sårbara sakerna som kan bryta säkerheten i linux.

10. Inaktivera Superuser Login

För att hålla ditt linux-system säkert, logga aldrig in som root. Du kan använda sudo för att få nödvändiga behörigheter och köra önskat kommando som root. Detta kommando låter dig inte avslöja superanvändarlösenordet för andra administratörer och innehåller även verktyg för att övervaka, begränsa och spåra åtgärder.

11. Serverns fysiska säkerhet

Linux-serversäkerhet måste inkludera fysisk säkerhet. Du måste begränsa den fysiska åtkomsten till serverkonsolen. Ställ in BIOS så att det inte stöder uppstart från externa media som DVD, CD, USB. Ställ även in ett lösenord på BIOS och GRUB bootloader för att skydda deras inställningar.

12. Inaktivera onödiga tjänster

Inaktivera alla oanvända tjänster och demoner. Glöm inte heller att ta bort dessa tjänster från start. Du kan lista alla aktiva tjänster på Red Hat-system med kommandot:

chkconfig --list | grep "3:on"

För att inaktivera tjänsten, använd:

servicestopp
$ chkconfig tjänsten avstängd

Hitta alla portar öppna av program:

Samma sak kan göras med nmap-skannern:

nmap -sT -O localhost

Använd iptables för att stänga alla portar som inte ska vara tillgängliga från nätverket. Eller stoppa onödiga tjänster enligt beskrivningen ovan.

13. Ta bort X-servern

X-servern på serverdatorn är helt valfri. Du behöver inte köra en grafisk miljö på en dedikerad Apache- eller e-postserver. Ta bort denna programvara för att förbättra säkerhet och prestanda.

14. Konfigurera Iptables

iptables är ett användarutrymmesprogram för att konfigurera Netfilter-brandväggen inbyggd i kärnan. Det låter dig filtrera all trafik och tillåta endast vissa typer av trafik. Använd också TCPWrappers - ACL-system för att filtrera internetåtkomst. Du kan förhindra många typer av DOS-attacker med iptables. Nätverkssäkerhet i Linux är en mycket viktig aspekt av övergripande systemsäkerhet.

15. Ställ in kärnan

Filen /etc/sysctl.conf lagrar kärninställningar som laddas och tillämpas under systemstart.

Aktivera execshield buffertspillskydd:

kernel.exec-shield=1
kernel.randomize_va_space=1

Aktivera IP-spoofing-skydd:

net.ipv4.conf.all.rp_filter=1

Inaktivera vidarebefordran av IP-adress:

net.ipv4.conf.all.accept_source_route=0

Ignorera sändningsförfrågningar:

net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

Logga alla förfalskade paket:

net.ipv4.conf.all.log_martians=1

16. Partitionera din hårddisk

Att dela upp en hårddisk i partitioner beroende på syftet med filerna förbättrar säkerheten för Linux OS. Det rekommenderas att göra separata avsnitt för sådana kataloger:

  • /Hem
  • /var och /var/tmp

Gör separata partitioner för Apaches rotkataloger och FTP-servrar. Öppna filen /etc/fstab och ställ in specialalternativ för önskade partitioner:

  • noexec- kör inga program eller körbara filer på denna partition, endast skript är tillåtna
  • nodev- tillåt inte symboliska eller speciella enheter på denna partition.
  • nosuid- Tillåt inte SUID/SGID-åtkomst för program från detta avsnitt.

17. Använd diskutrymmesbegränsning

Begränsa tillgängligt diskutrymme för användare. För att göra detta, skapa en diskkvot i /etc/fstab, montera om filsystemen och skapa en databas med diskkvoter. Detta kommer att förbättra säkerheten på Linux.

18. Inaktivera IPv6

Nästa generations Internetprotokoll IPv6 kommer att ersätta det redan använda IPv4 i framtiden. Men för närvarande finns det inga verktyg som låter dig kontrollera säkerheten för ett IPv6-baserat nätverk. Många Linux-distributioner tillåter IPv6 som standard. Hackare kan skicka oönskad trafik och administratörer kommer inte att kunna spåra den. Så om du inte behöver den här tjänsten, inaktivera den.

19. Inaktivera oanvända SUID- och SGID-binärer

Alla körbara filer för vilka SUID- eller SGID-flaggan är aktiverad är potentiellt farliga. Denna flagga betyder att programmet kommer att köras med superanvändarrättigheter. Och detta betyder att om programmet har någon form av sårbarhet eller bugg, så kommer en lokal eller fjärranvändare att kunna använda den här filen. Hitta alla sådana filer med följande kommando:

hitta / -perm +4000

Hitta filer med SGID-flaggan:

hitta / -perm +2000

Eller så kan vi kombinera allt i ett kommando:

hitta / \(-perm -4000 -o -perm -2000 \) -print
$ hitta / -sökväg -prune -o -typ f -perm +6000 -ls

Du måste studera varje hittad fil i detalj för att förstå hur mycket den eller den filen behövs.

20. Offentliga filer

Det är också önskvärt att hitta filer som kan ändras av alla användare på systemet. För att göra detta, använd följande kommando:

hitta /dir -xdev -typ d \(-perm -0002 -a ! -perm -1000 \) -print

Nu måste du kontrollera om rättigheterna för gruppen och ägaren av denna varje fil är korrekt inställda och om detta utgör en säkerhetsrisk.

Det är också önskvärt att hitta alla filer som inte tillhör någon:

hitta /dir -xdev \(-nouser -o -nogroup \) -print

21. Använd ett centraliserat autentiseringssystem

Utan ett centraliserat autentiseringssystem blir användardata inkonsekvent, vilket kan leda till inaktuella autentiseringsuppgifter och glömda konton som borde ha raderats för länge sedan. Den centraliserade tjänsten låter dig behålla kontrollen över användarkonton och autentiseringsdata på olika Linux- och Unix-system. Du kan synkronisera autentiseringsdata mellan servrar. Men använd inte NIS-tjänsten, se bättre mot Open DAP.

En av de intressanta implementeringarna av ett sådant system är Kerberos. Det tillåter användare att autentiseras med hjälp av en hemlig nyckel på nätverk där paket kan fångas upp och modifieras. Kerberos använder en symmetrisk nyckel för att kryptera data och kräver ett nyckelhanteringscenter för att fungera. Du kan ställa in fjärrinloggning, fjärrkopiering, säker kopia av filer mellan system och andra uppgifter med en hög säkerhetsnivå.

22. Loggning och revision

Ställ in loggning och revision för att samla in och spara alla misslyckade inloggningsförsök och hackningsförsök. Som standard finns alla loggar, eller åtminstone de flesta av dem, i mappen /var/log/. Mer i detalj pratade vi om vad vissa ansvarar för i en separat artikel.

Du kan titta på loggar med verktyg som logwatch eller logcheck. De förenklar läsningen av loggarna avsevärt. Du kan inte se hela filen, utan bara de händelser du är intresserad av, samt skicka dig ett meddelande till din e-postadress.

Övervaka systemet med den granskade tjänsten. Programmet skriver till disken alla granskningshändelser som du är intresserad av. Alla granskningsinställningar lagras i filen /etc/audit.rules. Vid systemstart läser tjänsten alla regler från denna fil. Du kan öppna den och konfigurera allt som du behöver, eller använda ett separat verktyg - auditctl. Du kan ställa in följande punkter:

  • Händelser vid systemstart och avstängning
  • Datum och tid för händelsen
  • Användarhändelser (till exempel åtkomst till en specifik fil)
  • Händelsetyp (redigera, komma åt, radera, skriva, uppdatera, etc.)
  • Framgång eller misslyckande när en händelse genomförs
  • Spela in nätverksinställningar Ändra händelser
  • Registrerar användar- och gruppändringar
  • Övervaka filändringar

23. Skydda din OpenSSH-server

Tillåt endast användning av protokoll 2:

Inaktivera inloggning som superanvändare:

24. Installera IDS

Ett IDS- eller intrångsdetektionssystem försöker upptäcka misstänkt, skadlig aktivitet som en DOS-attack, portskanning eller till och med försök att hacka sig in i en dator genom att övervaka nätverkstrafik.

Det är god praxis att distribuera sådan programvara innan systemet görs tillgängligt från Internet. Du kan installera AIDE, det är HIDS (värdbaserad IDS) som kan kontrollera alla aspekter av ditt system interna.

Snort är en programvara för upptäckt av nätverksintrång. Den kan analysera och logga paket och analysera nätverkstrafik i realtid.

25. Skydda dina filer och kataloger

Linux har utmärkta skydd mot obehörig åtkomst till filer. Behörigheterna som ställs in av Linux och filsystemet betyder dock ingenting när en angripare har fysisk åtkomst till datorn och helt enkelt kan ansluta datorns hårddisk till ett annat system för att kopiera dina data. Men du kan enkelt skydda dina filer med kryptering:

  • För att kryptera och dekryptera en fil med ett lösenord, använd GPG
  • Du kan också skydda filer med OpenSSL
  • Katalogkryptering görs med ecryptfs
  • TrueCrypt är ett gratis diskkrypteringsverktyg för Windows och Linux

Slutsatser

Nu kommer säkerheten för Linux OS på din dator att höjas avsevärt. Glöm inte att ställa in komplexa lösenord då och då. Skriv ditt favoritverktyg för systemsäkerhet i kommentarerna.

Informationssäkerhet är en prioriterad fråga för alla onlineföretag. Virusinfektioner och externa attacker samt obehörig åtkomst till information innebär alla stora ekonomiska risker och ryktesrisker. Därför, när de väljer en serverplattform, är företagare alltid intresserade av graden av resurssäkerhet.
Och för att kontrollera hur väl skyddssystemet fungerar, om det finns några sårbarheter och "hål" i det, rekommenderas det att utföra en serversäkerhetsrevision minst en gång i månaden.

Vad ingår i en serversäkerhetsrevision

Även en till synes obetydlig faktor, som felaktiga inställningar av själva servern eller föråldrad programvara, kan bli ett säkerhetshot. Granskning hjälper till att identifiera säkerhetsbrister och vidta åtgärder i tid för att åtgärda dem innan data äventyras eller stjäls.
Serveradministratören kontrollerar den installerade programvaran, dess överensstämmelse med de senaste uppdateringarna, utvärderar serversäkerhetsinställningarna och eliminerar eventuella fel och analyserar även överensstämmelsen med inställningarna för anställdas åtkomsträttigheter till vissa resurser.

Hur man granskar en virtuell privat server med dina egna händer

Varje användare kan kontrollera säkerheten för servrar på Windows- eller Linux-plattformar, för detta är det inte nödvändigt att ha speciella kunskaper i programmering.
Säkerhetskontrollen kan delas in i flera steg:

Fysisk tillgång

I fallet med en dedikerad server är fysisk åtkomst till tredje parts server begränsad som standard, detta tillhandahålls av datacentret. Men användaren kan dessutom ställa in ett lösenord för att komma åt BIOS.

Brandvägg

För kontinuerlig övervakning av programvara och portar måste Windows-brandväggen vara korrekt konfigurerad och aktiverad. För Linux kan du använda SELinux-systemet för åtkomstkontroll. Du kan också hyra en Cisco ASA eller Fortinet FortiGate 60D hårdvarubrandvägg av oss.

Filsystem

Sök efter uppdateringar

Konfigurera servern för att automatiskt ta emot och installera uppdateringar.

Lösenordspolicy

Använd lokala Windows-säkerhetspolicyer för att upprätthålla kravet på komplexa lösenord, deras utgångsdatum och kontolåsning efter flera misslyckade inloggningar eller ett tomt lösenord.

Loggkontroll

Aktivera loggning för kritiska infrastruktursegment och kontrollera dem regelbundet.

Nätverkssäkerhet

VPN och VLAN rekommenderas för värdsegmentering och länksäkerhet.
Du bör också ändra standardinställningarna och vidarebefordra portarna för nätverksutrustningstjänsterna.
Du kan använda IPsec-tjänsten för att kryptera trafik. Och för att se öppna portar - Netstat-verktyget.

Åtkomstkontroll

Differentiera användarnas åtkomsträttigheter till viktiga filer, inaktivera gäståtkomst och användare med ett tomt lösenord. Inaktivera oanvända roller och applikationer på servern.

Säkerhetskopiering

Använd filsäkerhetstjänsten, den är lönsam och pålitlig. Förvara inte säkerhetskopior okrypterade. Om du hyr en server av oss kan du välja plats för säkerhetskopiering.

Databasåtkomst

Kritiska databaser bör lagras på olika SQL-servrar. Du måste konfigurera lanseringen på uppdrag av en användare med minimala privilegier eller från en förkonfigurerad vit lista med IP-adresser.

Antivirusskydd

För serverdrift på Windows rekommenderas installation av automatiskt uppdaterad antivirusprogramvara när användare arbetar med nätverkslagringar. För Linux krävs inte installation av ett antivirus, med förbehåll för regelbunden övervakning av serversäkerhet och kontroll av obehörig åtkomst. Verktyget Tiger kan vara användbart för detta.

En sådan granskning en gång i månaden hjälper till att kontrollera serverns korrekta funktion, eliminera sårbarheter och kontrollera nätverksinfrastrukturens säkerhet.

De flesta av sådana företags- och multikomponentsystem som SAV , OracleDB använda i sin plattform ett operativsystem baserat på linux . Med tanke på detta ägnas dem så stor uppmärksamhet av IT-revisorer. Idag i artikeln kommer vi att presentera flera gratisverktyg som presenteras i form av skript och använda vanliga OS-mekanismer för att ge en uttrycklig granskning av säkerhetskonfigurationen.

Följande systemkommandon och skript som används för uttrycklig granskning av säkerhetsalternativ för Linux OS-system är baserade på säkerhpublicerade av ISACA-communityt i UNIX/LINUX Operativsystem Security Audit/Assurance Program manual.

1.Verifiera konton

1.1 Lista alla användare
Listan över användare lagras i /etc/passwdfile. För att få en lista över användare kan du använda följande skript:

  1. bin/bash
  2. # userslistinthesystem.sh
  3. # count och Listar befintliga "riktiga" användare i systemet.
  4. echo "[*] Befintliga användare (sorterade alfabetiskt):"
  5. grep '/bin/bash' /etc/passwd | grep -v 'root' | skär-f1
  6. -d':' | sortera
  7. echo -n “[*] Antal riktiga användare som hittades: “
  8. grep '/bin/bash' /etc/passwd | grep -v 'root' | wc -l
1.2 Lista blockerade konton
Under granskningen måste du kontrollera listan över blockerade och oblockerade användare ( kontonamn ). Följande kommando kommer att fungera för detta:
  1. #!/bin/bash
  2. # passwd –s kontonamn

1.3 Visa statistik för alla användare

  • Revisorn ska se till att laget ac ingår i systemet, för en översikt över användaraktivitet:
    1. #!/bin/bash
    För att se aktiviteten för en användares anslutningssession med summor för varje dag, använd kommandot:
    1. #!/bin/bash
    2. # ac -d
    För att visa information om sessionsaktivitet (i timmar) av användaranslutning "användare" :
    1. #!/bin/bash
    2. # ac-användare
    1.4 Visa användaraktivitet
    Psacct- eller acct-systemapplikationerna körs i bakgrunden och håller reda på varje användares aktivitet på systemet, såväl som de resurser de förbrukar. För att kontrollera aktiviteten för användare i systemet, kör följande skript:
    1. #!/usr/bin/envksh
    2. sista -Fa|awk '
    3. /wtmp börjar/ (nästa;)
    4. /fortfarande inloggad/ ( nästa; )
    5. $0 == starta om ( nästa; )
    6. NF > 0 (
    7. om(NR > 1)
    8. printf("
      ”);
    9. printf("Användare:t%s
      ”, $1); # användare
    10. printf(" Start:t%s %s %s %s
      ”, $3, $4, $5, $6);
    11. if($9 == "ner")
    12. printf(" End:shutdown
      ”);
    13. printf(" Slut:t%s %s %s %s
      ”, $9, $10, $11, $12);
    14. if(substr ($NF, 1, 1) == “(“)
    15. t = $NF;
    16. h = "lokal värd";
    17. t = $(NF-1);
    18. h = $NF;
    19. gsub(“[()]”, “”, t);
    20. printf("Tid på:t%s
      ”, t);
    21. printf("Fjärrvärd:t%s
      ”, h);
  • 2. Kontrollera lösenordspolicyn

    2.1 Konton med ett tomt lösenord
    Under revisionen måste du se till att det inte finns några eller spärrade konton i systemet som gör att du kan logga in i systemet utan att ange ett lösenord. Denna regel kan kontrolleras med kommandot:

    # katt /etc/shadow | awk -F: ($2==””)(print $1)’

    2.2 Kontroll av lösenordskomplexitet
    Under granskningen är det nödvändigt att kontrollera lösenordets komplexitetsinställningar för att minska risken för brute-force (brute-force) eller ordboksattacker på lösenordet. Pluggable Authentication Modules (PAM) måste användas för att ställa in denna policy på systemet.
    Revisorn kan kontrollera lämplig inställning i konfigurationsfilen:

    # vi /etc/pam.d/system-auth

    2.3 Kontrollera lösenordets utgång

    Som en del av granskningen bör du kontrollera lösenordets utgångsdatum. För att kontrollera lösenordets utgångstid, använd kommandot förändra. Det här kommandot visar detaljerad information om lösenordets utgångsdatum, såväl som det datum då det senast ändrades.
    Följande kommando används för att visa information om "åldern" för lösenord:

    #chage -l användarnamn

    För att ändra utgångstiden för lösenordet för en specifik användare kan du använda kommandona nedan:

    #chage -M 60 användarnamn
    #chage -M 60 -m 7 -W 7 användarnamn

    Alternativ (för att ställa in lösenordets utgångsdatum):
    -M - maximalt utgångsdatum i dagar.
    -m är det lägsta utgångsdatumet i dagar.
    -W - varningsinställning i dagar.

    2.4 Användning av upprepade lösenord
    Behörighetsinställningar i systemet måste följa lösenordspolicyn. Filen som innehåller lösenordshistoriken finns i /etc/security/opasswd. För att kontrollera, följ dessa steg:

    för RHEL: öppna filen '/etc/pam.d/system-auth':

    # vi /etc/pam.d/system-auth

    för Ubuntu/Debian/Linux Mint: öppna filen '/etc/pam.d/common-password':

    # vi /etc/pam.d/common-password

    Lägg till följande rad i avsnittet "auth":

    auth tillräcklig pam_unix.so likeauthnullok

    För att inaktivera användningen av de sex senaste lösenorden, lägg till följande rad:

    Lösenord tillräckligt pam_unix.so nullokuse_authtok md5 shadow remember=6

    Efter att ha utfört kommandot kommer systemet att hålla en historik över de sex föregående lösenorden, och om någon användare försöker uppdatera lösenordet med något av de senaste sex kommer han att få ett felmeddelande.

    3. Säkra anslutningsinställningar
    Fjärranslutningsprotokollen Telnet och Rlogin är mycket gamla och sårbara, på grund av överföringen av lösenordet över nätverket i okrypterad form. Ett säkert protokoll måste användas för en fjärransluten och säker anslutning Säkert skal (SSH). Revisorn behöver också säkerställa att alternativet root-inloggning inaktiverad, standard SSH-port ändrad, fjärråtkomst tillåts endast för specifika auktoriserade användare. Inställningarna som ska kontrolleras finns i SSH-konfigurationsfilen:

    1. #vi /etc/ssh/sshd_config

    3.1 Logga in som superanvändare (rotinloggning)

    Under granskningens gång bör revisorn verifiera att fjärrinloggning med root-superanvändarrättigheter är förbjuden.

    # PermitRootLogin = ja
    3.2 Verifiera SSH-inloggning för tjänstekontot

    Under revisionen bör revisorn kontrollera tjänstekontot med en lösenordslös SSH-inloggning. Vanligtvis använder systemadministratörer den här funktionen för programmerade säkerhetskopieringar, filöverföringar och körning av skript i fjärrkontrollläge.

    Kontrollera att dina sshd_config-inställningar (/etc/ssh/sshd_config) är korrekta en sista gång.

    # PermitRootLogin utan lösenord

    # RSAAuthentication = ja

    #PubkeyAuthentication=ja

    3.3 Kontrollera åtkomstlistor i DenyHosts och Fail2ban
    Under revisionen är det nödvändigt att kontrollera inställningarna för åtkomstlistor DenyHosts Och Fail2ban . Dessa är skript som används för att övervaka och analysera SSH-åtkomstloggar och skydda mot brute force-attacker med lösenord.

    DenyHost-funktioner:

    • sparar och spårar loggar från en fil /var/log/secure , markerar alla lyckade och misslyckade inloggningsförsök och filtrerar dem.
    • övervakar misslyckade inloggningsförsök
    • skickar e-postmeddelanden om blockerade värdar och misstänkta inloggningsförsök
    Fail2ban funktioner:
    • Sparar och spårar loggar från filer /var/log/secure Och /var/log/auth.log , /var/log/pwdfail
    • mycket anpassningsbar och flertrådig
    • övervakar loggfiler regelbundet

    4. Kontrollera systemloggar
    Under granskningen måste du se till att SysLog-demonen körs och att alla viktiga händelser som inträffar i systemet registreras i händelseloggarna. Revisionen bör också säkerställa att lagringspolicyn för händelselogg tar hänsyn till kraven i tillämplig lag och säkerhetspolicy.

    4.1 Händelseloggar i Linux:

    /var/log/auth.log – auktoriseringssystemlogg (inloggningar och autentiseringsmekanism).
    /var/log/dpkg.log - logg för att installera/ta bort paket med dpkg.
    /var/log/yum.log - logg för att installera/ta bort paket med yum.
    /var/log/faillog - En logg över misslyckade inloggningsförsök och deras gräns för varje konto.
    /var/log/kern.log – kärnlogg, (detaljerad logg över meddelanden från Linux-kärnan).
    /var/log/maillog eller /var/log/mail.log – e-postserverlogg.
    /var/log/wtmp – inloggningslogg (loggningstid och varaktighet för alla systemanvändare).
    /var/run/utmp - information om användare som för närvarande är inloggade i systemet.
    /var/log/lastlog - poster över tidigare inloggningar.
    /var/log/boot - information som loggas under systemstart

    5. Skydda systemfiler

    5.1 Skydda GRUB bootloader

    För att skydda GRUB-starthanteraren måste administratören använda lösenordskryptering i MD5-format :

    # grub-md5-krypt

    Efter att ha utfört kommandot måste administratören öppna filen /boot/grub/menu.lst eller /boot/grub/grub.conf och lägg till MD5-lösenord:

    # vi /boot/grub/menu.lst

    #vi /boot/grub/grub.conf

    Det nyskapade MD5-lösenordet kan läggas till i GRUB-konfigurationsfilen.

    5.2 Skydda startkatalogen /BOOT

    Under granskningen måste du kontrollera katalogens status /känga, eftersom kärnan i systemet och relaterade filer finns i katalogen /känga. Du måste se till att den här katalogen har skrivskyddad åtkomst, vilket förhindrar obehöriga ändringar av viktiga filer på systemet. För att kontrollera, öppna filen /etc/fstab och kontrollera konfigurationen:

    Filen måste innehålla raden:

    LABEL=/boot /boot ext2 defaults,ro 1 2

    5.3 Kontrollera öppna portar och aktiva anslutningar

    Följande skript kan användas för att kontrollera vilka tjänster som körs på systemet:

    #!/bin/bash
    if (($(ps -ef | grep -v grep | grep $service | wc -l) > 0))
    sedan
    echo "$tjänsten körs!!!"
    annan
    /etc/init.d/$tjänststart
    fi

    Visa nätverksanslutningar

    # netstat -anop
    eller
    # lsof -i(lsof -ni)
    eller
    #iptraf

    Lyssningsportar
    Med kommandot Netstat kan du se alla öppna portar och deras tillhörande kommandon. Skriptexempel:

    # netstat-tulpn
    Ett skript för portskanning är:
    skanna() (
    om [[ -z $1 || -z$2]]; sedan
    echo "Användning: $0
    lämna tillbaka
    fi
    localhost=$1
    lokala portar=()
    väska $2 in
    *-*)
    IFS=- läs startslut<<< “$2”
    för ((port=start; port<= end; port++)); do
    ports+=($port)
    Gjort
    ;;
    *,*)
    IFS=, läs -ra-portar<<< “$2”
    ;; *)
    portar+=($2) ;;
    esac
    för port i "$(ports[@])"; do
    alarm 1 "echo >/dev/tcp/$host/$port" &&
    echo "port $port är öppen" ||
    echo "port $port är stängd"
    Gjort
    }

    iptables brandvägg

    Under granskningen måste du kontrollera konfigurationen av Linux-brandväggen för att förhindra obehörig åtkomst. För att kontrollera trafiken måste regler skapas i iptables som filtrerar inkommande, utgående och vidarebefordrade paket baserat på IP-adressen och TCP/UDP-portnumret.

    # iptables -n -L -v --radnummer

    ICMP/broadcast-förfrågningar

    Under granskningen måste du verifiera att systemen är konfigurerade att ignorera pingar och sändningsförfrågningar. För att göra detta, se till att filen "/etc/sysctl.conf" lade till följande rader:

    # ignorera ICMP-förfrågningar:
    net.ipv4.icmp_echo_ignore_all = 1
    # ignorera sändningsförfrågningar:
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    5.4 Söka efter installerade uppdateringar

    Systemen måste ha de senaste uppdateringarna installerade:

    # yum uppdateringar
    # yum check-uppdatering

    6. Kontrollera automatiskt utförda CRON-jobb

    Revisorn bör kontrollera vem som får och förbjuden att utföra jobb i cron. Cron-åtkomst kontrolleras med hjälp av filer /etc/cron.allow Och /etc/cron.deny.

    # echo ALL >>/etc/cron.deny

    7. SELINUX forcerad säkerhetskontroll

    Under revisionen är det viktigt att kontrollera status SELinux . Denna mekanism måste vara aktiverad i systemet.
    Det finns tre lägen SELinux :

    • Upprätthållande: SELinux-policyn upprätthålls. SELinux nekar åtkomst baserat på SELinux policyregler.
    • Tillåtande: SELinux-policyn tillämpas inte. SELinux nekar inte åtkomst, men nekandena loggas som åtgärder som skulle nekas om policyn var inställd för att verkställa.
    • Inaktiverad: SELinux är inaktiverad. Endast diskreta DAC-regler används.

    Under en granskning kan du använda följande skript för att kontrollera statusen för SELinux eller använda kommandona system-configselinux, getenforce eller sestatus:

    ENABLED=`cat /selinux/enforce`
    if [ "$ENABLED" == 1 ]; sedan
    echo "SELinux är aktiverat, inaktivera? (Ja Nej):"
    läs inaktivera
    if [ $disable == "ja" ]; sedan
    echo "inaktiverar selinux"
    setenforce 0
    fi
    fi

    LBSA-skript för att kontrollera grundläggande säkerhetsalternativ

    LBSA (Linux Basic Security Audit script) är ett grundläggande revisionsskript för Linux-säkerhetskonfiguration. Skriptet måste köras från en kommandorad med privilegier rot, eller helst planerad att köras regelbundet med cron för att systematiskt kontrollera efter konfigurationsändringar.

    Syftet med detta skript är att snabbt granska säkerhetsinställningar och ladda ner en rapport som beskriver möjliga inställningar som kan ändras för att ge en högre grad av säkerhet. I händelse av att det inte finns några rekommendationer för något alternativ, visar skriptet helt enkelt en rad med bearbetningen av kontrollen, och det slutliga beslutet ligger alltid kvar hos administratören. Innan du kör ett test rekommenderar utvecklarna starkt att du läser manualen och studerar de rekommenderade avsnitten för mer information.

    I den aktuella utgåvan (version 1.0.49) söker skriptet efter följande alternativ:

    • sårbarheter i kontoinställningar
    • sårbarheter i SSH-inställningar
    • sårbarheter i temporära kataloger och kataloger i filsystemet som laddas in i RAM (till exempel i /tmp, /var/tmp /dev/)
    • filbehörigheter, status för systemkataloger
    • -konfiguration av DRBD- och Hearbeat-tjänster

    Manuset är ganska stort, så vi lade det inte på sidan.

    I den här artikeln kommer vi att bekanta oss med de viktigaste verktygen för Linux-härdning. På ryska kallas detta något i stil med att "kontrollera säkerhetsnivån för Linux-system och bedöma korrektheten av konfigurationer när det gäller informationssäkerhet." Naturligtvis kommer vi inte bara att granska programmen, utan också ge exempel på hur de används.

    Din egen revisor, eller säkerhet på egen hand

    Administratörer, och ännu mer IS-revisorer, ställs ofta inför uppgiften att kontrollera säkerheten för ett stort antal värdar på mycket kort tid. Och naturligtvis finns det specialiserade verktyg inom Enterprise-segmentet för att lösa dessa problem, till exempel, till exempel nätverkssäkerhetsskannrar. Jag är säker på att alla av dem - från öppna källor för OpenVAS-motorn till kommersiella produkter som Nessus eller Nexpose - är kända för våra läsare. Denna programvara används dock vanligtvis för att leta efter föråldrad och därför sårbar programvara och sedan köra patchhantering. Dessutom tar inte alla skannrar hänsyn till vissa specifika egenskaper hos de inbyggda säkerhetsmekanismerna i Linux och andra produkter med öppen källkod. Och sist men inte minst, priset på emissionen spelar roll, eftersom endast företag som allokerar budgetar för denna verksamhet har råd med kommersiella produkter.

    Det är därför vi idag kommer att prata om en specialiserad uppsättning fritt distribuerade verktyg som kan diagnostisera den nuvarande nivån av systemsäkerhet, bedöma potentiella risker, till exempel "extra tjänster" som sticker ut på Internet eller en osäker standardkonfiguration, och till och med föreslå alternativ för att rätta till de upptäckta bristerna. En annan fördel med att använda dessa verktyg är möjligheten att replikera typiska gårdstestskript från valfritt antal Linux-system och bilda en dokumenterad testbas i form av loggar och separata rapporter.

    Praktiska aspekter av säkerhetsrevision

    Om du tittar genom revisorns ögon kan metoden för testning delas in i två typer.

    Först- detta är överensstämmelse med de så kallade efterlevnadskraven, här kontrolleras förekomsten av obligatoriska säkerhetselement som föreskrivs i någon internationell standard eller "best practice". Ett klassiskt exempel är PCI DSS-kraven för betalnings-IT-system, SOX404, NIST-800-serien, .

    Andra- Detta är ett rent rationellt tillvägagångssätt baserat på frågan "Vad kan mer göras för att öka säkerheten?". Det finns inga obligatoriska krav - bara din kunskap, ljusa huvud och skickliga händer. Detta är till exempel att uppdatera kärnversionen och/eller applikationspaketen, aktivera, framtvinga, sätta upp en brandvägg.

    Allt som har med det andra tillvägagångssättet att göra brukar kallas en speciell term. härdning, som också kan definieras som "åtgärder som syftar till att stärka nivån på initialsäkerheten för operativsystemet (eller programmet) huvudsakligen med vanliga medel."

    Överensstämmelse med efterlevnadskrav kontrolleras vanligtvis som förberedelse för att klara en obligatorisk revision såsom PCI DSS eller annan certifieringsrevision. Vi kommer att ägna mer uppmärksamhet åt härdningskomponenten. Alla större utvecklare erbjuder sina produkter Härdningsriktlinjer- guider som innehåller tips och rekommendationer om hur man kan förbättra säkerheten, med hänsyn till de vanliga säkerhetsmekanismerna och programvarans särdrag. Så Red Hat, Debian, Oracle, Cisco har liknande manualer.

    INFO

    Härdning är en term från informationssäkerhetsvärlden, som syftar på processen att säkerställa säkerheten för ett system (program) genom att minska dess sårbarhet och som regel endast använda standardverktyg eller skyddsmekanismer.

    sudo apt-get update sudo apt-get install lynis

    Och för RPM-orienterade distributioner (efter att ha lagt till lämpliga förråd):

    Yum installera linus -y

    Installation på macOS:

    $ brew sök lynis $ brew installera lynis

    För att starta Lynis räcker det att ange minst en nyckel. Till exempel, för att köra alla tillgängliga tester, bör du ange -c-växeln (markera alla, markera alla):

    # Typisk testsvit för sudo lynis revisionssystem # Komplett sudo lynis revisionssystem -c testsvit # Skanna en fjärrkontroll av ett fjärrkontrollsystem







    Det är alltid en bra idé att kontrollera om en ny version av Lynis är tillgänglig innan en revision:

    Lynis uppdateringsinformation && lynis uppdateringskontroll

    Lynis-verktyget, förutom det vanliga, har ytterligare ett läge - oprivilegierad löpning:

    Lynis revision --pentest

    Om du vill ange namnet på den revisor som startade testet, lägg bara till parametern -auditor :

    Sudo lynis revisionssystem -c -revisor Pappa

    I vilket skede som helst av revisionen kan verifieringsprocessen fortsätta (Enter) eller tvångsavslutas (Ctrl+C). Resultaten av de utförda testerna kommer att skrivas till Lynis-loggningen /var/log/lynis.log . Observera att loggen kommer att skrivas över varje gång verktyget startas.

    För att testa på en systematisk basis i automatiskt läge kan du tilldela lämpligt jobb till Cron-schemaläggaren med hjälp av -cronjob-omkopplaren. I det här fallet kommer verktyget att köras enligt den angivna mallen (config) och kommer inte att visa några interaktiva meddelanden, frågor eller varningar. Alla resultat kommer att sparas i loggen. Till exempel, här är ett verktygsstartskript med en standardkonfiguration en gång i månaden:

    #!/bin/sh AUDITOR="automatiserad" DATUM=$(datum +%Y%m%d) HOST=$(värdnamn) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/rapport-$( HOST).$(DATE)" DATA="$LOG_DIR/report-data-$(HOST).$(DATE).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDITOR)" --cronjob > $(REPORT) mv /var/log/lynis-report.dat $(DATA) # End

    Spara det här skriptet i katalogen /etc/cron.monthly/lynis. Och glöm inte att lägga till sökvägar för att spara loggar (/usr/local/lynis och /var/log/lynis), annars kanske det inte fungerar korrekt.

    Du kan se en lista över alla kommandon som är tillgängliga för att ringa:

    Lynis visar kommandon

    Särskilt nyfiken kan titta på inställningarna från standardkonfigurationen:

    Lynis showinställningar

    Kort instruktion om hur du arbetar med verktyget:

    man lynis

    Alternativen för möjliga statuser baserat på resultaten av kontrollen är begränsade till följande lista: INGEN, SVAG, KLAR, HITTAD, NOT_FOUND, OK, VARNING.


    Kör individuella tester i Lynis

    I praktiken kan det vara nödvändigt att endast utföra ett fåtal tester. Till exempel, om din server endast utför funktionerna för Mail Server eller Apache. Vi kan använda alternativet -tests för detta. Kommandosyntaxen är som följer:

    Lynis -testar "Test-IDs"

    Om du tycker att det är svårt att förstå på grund av det stora antalet test-ID:n kan du använda gruppparametern -test-category . Med det här alternativet kör Lynis endast test-ID:n som faller inom en specifik kategori. Till exempel planerar vi att köra brandväggs- och kärntester:

    ./lynis -test-kategori "brandväggar kärna"

    Dessutom utökas funktionaliteten hos Lynis med olika plugins som du kan lägga till på egen hand, eller så kan du lägga nya i en befintlig katalog.

    Korrigeringsförslag

    Alla varningar kommer att listas efter resultaten. Var och en börjar med varningstexten, sedan anges testet som genererade den inom parentes bredvid. Nästa rad föreslår en lösning på problemet, om en sådan finns. Faktum är att den sista raden är en URL där du kan se detaljerna och hitta ytterligare rekommendationer om hur du åtgärdar problemet.

    Profiler

    Profilerna som hanterar revision definieras i filer med tillägget .prf finns i katalogen /etc/lynis. Standardprofilen heter förutsägbart: default.prf . Utvecklarna rekommenderar inte att du redigerar den direkt: alla ändringar du vill göra i granskningen läggs bäst till i filen custom.prf som finns i samma katalog.

    Fortsatt tillgänglig endast för medlemmar

    Alternativ 1. Gå med i "site"-gemenskapen för att läsa allt material på sajten

    Medlemskap i communityn under den angivna perioden ger dig tillgång till ALLT hackermaterial, ökar din personliga kumulativa rabatt och låter dig samla ett professionellt Xakep-poängbetyg!