Unix sikkerhed - Unix security

Unix-sikkerhed refererer til midlerne til sikring af et Unix eller Unix-lignende operativsystem . Et sikkert miljø opnås ikke kun ved designkoncepterne i disse operativsystemer, men også gennem årvågen bruger- og administrativ praksis.

Design koncepter

Tilladelser

En central sikkerhedsfunktion i disse systemer er filsystemtilladelserne . Alle filer i et typisk Unix -filsystem har tilladelser, der muliggør forskellig adgang til en fil.

Tilladelser til en fil sættes almindeligvis ved hjælp af chmod -kommandoen og ses gennem ls -kommandoen. For eksempel:

-r-xr-xr-x  1 root  wheel  745720 Sep  8  2002 /bin/sh

Unix -tilladelser giver forskellige brugere adgang til en fil. Forskellige brugergrupper har forskellige tilladelser til en fil.

Mere avancerede Unix -filsystemer inkluderer adgangskontroliste -konceptet, som tillader tilladelse til at blive givet til flere brugere eller grupper. En adgangskontrolliste kan bruges til at give tilladelse til yderligere individuelle brugere eller grupper. For eksempel:

/pvr [u::rwx,g::r-x,o::r-x/u::rwx,u:sue:rwx,g::r-x,m::rwx,o::r-x]

I dette eksempel, som er fra den chacl kommando på Linux operativsystemet, brugeren sagsøge gives skrive tilladelse til / PVR mappe.

Brugergrupper

Brugere under operativsystemer i Unix -stil tilhører ofte administrerede grupper med specifikke adgangstilladelser. Dette gør det muligt for brugere at blive grupperet efter det niveau af adgang, de har til dette system. Mange Unix implementeringer tilføje et ekstra lag af sikkerhed ved at kræve, at en bruger være medlem af den hjulets brugerrettigheder gruppe for at få adgang til sukommandoen.

Rodadgang

De fleste Unix og Unix-lignende systemer har en konto eller gruppe, som gør det muligt for en bruger at eksakte fuldstændig kontrol over systemet, ofte kendt som en rodkonto . Hvis en uønsket bruger får adgang til denne konto, resulterer dette i et fuldstændigt brud på systemet. En rodkonto er imidlertid nødvendig til administrative formål, og af ovenstående sikkerhedsmæssige årsager bruges rodkontoen sjældent til daglige formål ( sudo -programmet bruges mere almindeligt), så brugen af ​​rodkontoen kan overvåges tættere.

Rootadgang "som den skal være" kan visualiseres af dem, der kender Superman -historierne ved hjælp af følgende analogi :

At bruge en rodkonto er snarere som at være Superman; en administrators almindelige bruger ligner mere Clark Kent. Clark Kent bliver kun Supermand så længe det er nødvendigt for at redde mennesker. Han vender derefter tilbage til sin "forklædning". Rootadgang bør bruges på samme måde. Clark Kent -forklædningen begrænser ham dog ikke rigtigt, da han stadig er i stand til at bruge sine superkræfter. Dette er analogt med at bruge sudo -programmet.

Bruger- og administrative teknikker

Unix har mange værktøjer, der kan forbedre sikkerheden, hvis de bruges korrekt af brugere og administratorer.

Adgangskoder

At vælge en stærk adgangskode og bevare den korrekt er sandsynligvis de vigtigste ting, en bruger kan gøre for at forbedre Unix -sikkerheden. I Unix -systemer gemmes de væsentlige oplysninger om brugere under filen /etc/passwdDenne fil holder styr på de brugere, der er registreret i systemet, og deres vigtigste definitioner. Adgangskoder, eller mere korrekt, hash af adgangskoden, kan også gemmes samme sted. Posterne i /etc/passwdfylder nøjagtigt en linje hver og har følgende form:

nickname:password_hash:UserID:GroupID:Complete_Name:home_dir:shell_bin

Et eksempel ville være:

xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:1000:100:Daniel Ernesto Ortiz Costa:/home/xfze:/bin/bash

Da alle brugere skal have læseadgang til /etc/passwdfilen for at udføre mange almindelige opgaver ( ls -l /homevil f.eks. Bruges /etc/passwdtil at tilknytte UID'er til loginnavne), kan enhver også læse andre brugeres password -hash. For at løse dette problem blev filen /etc/shadowoprettet for at gemme password -hash, idet kun root har læseadgang. Under skygge af adgangskode erstattes det 2. felt ( password -hash ) med et 'x', der fortæller systemet at hente den tilsvarende brugers adgangskode via /etc/shadowfilen.

Den /etc/shadowfil ofte indeholder kun værdier for de to første felter:

xfze:$$1zuW2nX3sslp3qJm9MYDdglEApAc36r/:::::

De resterende felter i /etc/shadowfilen inkluderer:

  1. Det mindste antal dage mellem ændringer af adgangskode
  2. Det maksimale antal dage, indtil adgangskoden skal ændres
  3. Antallet af advarseldage før adgangskoden skal ændres
  4. Antallet af dage efter adgangskoden skal ændres, når kontoen bliver ubrugelig
  5. Datoen (udtrykt som antallet af dage siden 1. januar 1970 ), hvor kontoen er udløbet

Disse felter kan bruges til at forbedre Unix -sikkerhed ved at håndhæve en sikkerhedspolitik for adgangskoder.

Brugere og konti

Administratorer bør straks slette gamle konti.

  • su , sudo , kun ssh , ingen eksterne root -logins

Vedligeholdelse af software

Patching

Operativsystemer, som al software, kan indeholde fejl, der skal rettes, eller kan forbedres med tilføjelse af nye funktioner. Patching af operativsystemet på en sikker måde kræver, at softwaren kommer fra en pålidelig kilde og ikke er blevet ændret, siden den blev pakket. Almindelige metoder til at verificere, at operativsystemrettelser ikke er blevet ændret, inkluderer brug af kryptografisk hash , f.eks. En MD5- baseret kontrolsum, eller brug af skrivebeskyttet medie.

Fra et sikkerhedsmæssigt synspunkt er den specifikke emballagemetode, såsom RPM Package Manager -formatet oprindeligt fra Red Hat Linux , ikke så vigtig som brugen af ​​funktioner, der sikrer integriteten af ​​selve patchen.

Kildefordelinger

Kildedistributioner inkluderer muligheden for at undersøge koden for mistænkeligt indhold. Ulempen, der mangler en ledsagende kryptografisk hashværdi, er, at brugeren selv skal kunne udføre en sikkerhedsanalyse af koden.

RPM pakker

Linux -distributioner, der bruger RPM Package Manager -formatet til at levere basisfunktionalitet og softwareopdateringer, gør brug af MD5 og GPG for at sikre indholdsintegritet. Hashværdierne pakkes med RPM -filen og verificeres, når pakken er installeret.

Debian -pakker

Linux -distributioner, der bruger Debian .deb -pakkeformatet til at levere basisfunktionalitet og softwareopdateringer, gør brug af GPG -signaturer for at sikre indholdsintegritet. En signatur beregnes, når pakken konstrueres og verificeres senere, når pakken er installeret.

Andre leverandører og distributioner

Uanset leverandør eller distribution bør alle softwaredistributioner have en mekanisme til at verificere, at softwaren er legitim og ikke er blevet ændret, siden den oprindeligt blev pakket.

Services

Unødvendig systemsoftware bør ikke installeres eller konfigureres på et system. Software, der ikke længere er påkrævet, bør om muligt fjernes helt.

  • Identificer hvilke tjenester der kører
    • netstat -na
    • lsof
    • nmap
    • sockstat -4 ( FreeBSD )

Kommandoerne inetd og xinetd fungerer som superservere til en række netværksprotokoller såsom rlogin , telnet og ftp .

Deaktivering af unødvendige tjenester

  • ved hjælp af update-rc.dDebian
  • ved hjælp af chkconfigRed Hat Linux
  • ved hjælp af /etc/rc.conf og /usr/local/etc/rc.d på FreeBSD (nævn /etc/rc.local)
  • ved hjælp af rc-opdateringGentoo Linux

Denne tilgang kaldes normalt proaktiv sikkerhed . Der er nogle operativsystemer, der er sikre som standard . Blandt andre er de gratis BSD -smag ( FreeBSD , NetBSD og OpenBSD ) proaktivt sikre. For eksempel skitserer output fra netstat på en NetBSD 3.0 -arbejdsstation klart denne teknik:

$ netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        State
tcp        0      0  localhost.smtp         *.*                    LISTEN
tcp        0      0  *.ssh                  *.*                    LISTEN
Active Internet6 connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp6       0      0  localhost.smtp         *.*                    LISTEN
tcp6       0      0  *.ssh                  *.*                    LISTEN
Active UNIX domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
c0d10d80 dgram       0      0        0 c0cd8680        0 c0cb7000 -> /var/run/log
c0cb7000 dgram       0      0        0 c0cd8680        0        0 -> /var/run/log
c0cd8680 dgram       0      0 cb9639e8        0 c0d10d80        0 /var/run/log

Følgende eksempel fra et BSD -system

$ sockstat -4
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     sendmail   569    4 tcp    localhost.smtp        *.*
root     sshd       593    4 tcp    *.ssh                 *.*

Viser, at kun på denne maskine lytter SSH -tjenesten til computerens offentlige netværksinterface . sendmail lytter kun til loopback -grænsefladen . Adgang til en tjeneste kan begrænses yderligere ved hjælp af en firewall .

Filsystemer

Filsystemsikkerhed

Filsystemsikkerhed inden for UNIX og Unix-lignende systemer er baseret på 9 tilladelsesbits, sæt bruger- og gruppe-ID-bits og den klæbrige bit for i alt 12 bits. Disse tilladelser gælder næsten lige meget for alle filsystemobjekter, f.eks. Filer, mapper og enheder.

De 9 tilladelses bits er opdelt i tre grupper på tre bits hver. Den første gruppe beskriver tilladelser for filejeren, den anden gruppe beskriver tilladelser for en gruppe, der er tilknyttet filejeren eller biblioteket, der indeholder filen, og den tredje gruppe beskriver de tilladelser, der er knyttet til enhver proces, der ikke har den samme bruger ID som filen. Hver gruppe på tre bits indeholder en bit, der angiver, at læse-, skrive- eller eksekveringsadgang er givet. I tilfælde af mapper fortolkes eksekveringsadgang som tilladelsen til at udføre et filnavnopslag i biblioteket.

Sættet bruger-ID og sætgruppe-ID-bits, almindeligvis forkortet henholdsvis set-UID og set-GID , bruges til at ændre identiteten af ​​den proces, der udfører en fil, der har en eller begge af disse bits sæt. En fil med sæt-UID- tilladelsesbitsættet får en proces, der udfører filen til midlertidigt at skifte det effektive bruger-id til filejeren. En fil med sæt-GID- tilladelsesbitsættet får en proces, der udfører filen til midlertidigt at skifte det effektive gruppe-id til filgruppens. En proces kan derefter skifte mellem det effektive bruger- eller gruppe -id, som det arvede fra filen, og det rigtige bruger- eller gruppe -id, som det arvede, da brugeren loggede på systemet. Dette tilvejebringer en mekanisme, ved hvilken en proces kan begrænse de adgangsrettigheder, den besidder, til de kodeområder, der kræver disse adgangsrettigheder. Dette er en form for en sikkerhedsteknik kendt som privilegieseparation og forbedrer programsikkerhed ved at begrænse utilsigtede eller uønskede handlinger i en proces.

Et bibliotek, der har set-GID- tilladelsesbitsættet, får en nyoprettet fil til at have en indledende filgruppeværdi svarende til bibliotekets filgruppe. Dette tilvejebringer en mekanisme, hvorved et undersystem, såsom systemets mailundersystem, kan oprette filer, der har en fælles filgruppeværdi, så set-GID- processer inden for dette delsystem derefter kan læse eller skrive filen.

Den klæbrige bit , formelt kendt som gemme teksten på byttebit , stammer sit navn fra dens oprindelige formål. Oprindeligt forårsagede den klæbrige bit , at en proces indledende hukommelsesbillede blev gemt som et sammenhængende billede på diskdrevet, som blev brugt til at gemme rigtige hukommelsessider, når de ikke var i brug. Dette forbedrede ydeevnen for almindeligt udførte kommandoer ved at gøre det første hukommelsesbillede let tilgængeligt. Moderne UNIX -systemer udfører ikke længere denne funktion, når bit er indstillet, men navnet er ikke desto mindre bevaret. I tilfælde af filer kan sticky-bit bruges af systemet til at angive stilen til fillåsning, der skal udføres. I tilfælde af mapper forhindrer den klæbrige bit enhver anden proces end den, der har superbrugerrettigheder eller en, der har et effektivt bruger-id for filejeren, i at slette en fil i det pågældende bibliotek. Den klæbrige bit bruges mest på offentligt skrivbare biblioteker, såsom de forskellige midlertidige arbejdsområdekataloger på systemet.

Rod squash

Root squash er en særlig kortlægning af den eksterne superbruger (root) identitet ved brug af identitetsgodkendelse (lokal bruger er den samme som fjernbruger). Under root squash kortlægges en klients uid 0 (root) til 65534 (ingen). Det er primært en funktion i NFS, men kan også være tilgængelig på andre systemer.

Root squash er en teknik til at undgå privilegeret eskalering på klientmaskinen via Suid -eksekverbare filer Setuid . Uden root squash kan en angriber generere suid -binære filer på serveren, der udføres som root på en anden klient, selvom klientbrugeren ikke har superbrugerrettigheder. Derfor beskytter den klientmaskiner mod andre ondsindede klienter. Det beskytter ikke klienter mod en ondsindet server (hvor root kan generere suid -binære filer), og det beskytter heller ikke filer fra andre brugere end root (da ondsindede klienter kan udgive sig for enhver bruger).

SELinux

SELinux er sættet med kerneudvidelser til at kontrollere adgangen mere præcist og definerer strengt både om og hvordan filer, mapper, netværksporte og andre ressourcer kan tilgås af den begrænsede proces. Dette system bruges mest til at begrænse processer (database, server) frem for menneskelige brugere. Det kan også begrænse processer, der kører som root. Andre distributioner bruger sammenlignelige alternativer som AppArmor .

Vira og virusscannere

Unix-lignende operativsystemer er immune over for de fleste Microsoft Windows-vira, fordi binære filer, der er oprettet til at køre på Windows, generelt ikke kører på andre platforme. Mange Unix -lignende installationer leverer imidlertid fillagringstjenester til Microsoft Windows -klienter, f.eks. Ved brug af Samba -software , og kan utilsigtet blive et lager for vira, der er gemt af brugerne. Det er almindeligt, at Unix -servere fungerer som e -mailoverførselsagenter, og derfor bliver e -mail -virusscanning ofte installeret. Den ClamAV virus scanner er tilgængelig i kildekode form og kan bruges til at scanne Unix filsystemer for virus, der inficerer andre operativsystemer.

Der er vira og orme, der er målrettet mod Unix-lignende operativsystemer. Faktisk målrettede den første computerorm - Morris -ormen - Unix -systemer.

Firewalls

Netværks firewall beskytter systemer og netværk mod netværkstrusler, der findes på den modsatte side af firewallen. Firewalls kan blokere adgangen til strengt interne tjenester, uønskede brugere og i nogle tilfælde filtrere netværkstrafik efter indhold.

iptables

iptables er den nuværende brugergrænseflade til at interagere med Linux -kernen netfilter funktionalitet. Det erstattede ipchains . Andre Unix -lignende operativsystemer giver muligvis deres egen native funktionalitet, og der findes andre open source -firewallprodukter. Mere detaljerede oplysninger om iptables findes andre steder. En kort diskussion er indeholdt her for at beskrive, hvordan iptables kan bruges til at konfigurere en Linux -firewall.

netfilter leverer et pakkefilter i fuld tilstand, som kan konfigureres i henhold til netværksgrænseflade , protokol , kilde- og/eller destinationsadresse , kilde- og/eller destinationsport og pakkens tilstand. En netværkspakke krydser flere kæder mellem det tidspunkt, den modtages af en netværksgrænseflade, og det tidspunkt, den accepteres af værten eller videresendes til en anden vært. De fælles kæder er INPUT , OUTPUT og FRAM . Den INPUT kæde gennemskæres for alle pakker, som de modtages af et netværksinterface, uanset om de er til at blive accepteret af værten eller videresendes til en anden vært. Den OUTPUT kæde gennemløbes for alle pakker, som de transmitteres af et netværksinterface. Den FORWARD kæde gennemløbes for disse pakkerne omdirigeres via værten mod et netværksinterface til et andet, således som det er tilfældet for en multi-homed systemet (et system med mere end én fysisk netværksgrænseflade).

Hver af de indbyggede kæder har en standardpolitik , der definerer, hvad der skal foretages for en pakke, der når slutningen af ​​kæden. Pakketraversal slutter, når en regel matcher pakken og har en handling ACCEPT , DROP , REJECT eller RETURN .

Den enkleste iptables firewall består af regler for hver ønsket service efterfulgt af en regel, der angiver, at alle pakker, der når denne regel, droppes. Et system, der kun tillod f.eks. Indgående e -mail -trafik, ville have en regel, der accepterede forbindelser på SMTP -porten og derefter droppede andre. Der ville kræves en regel, der angav, at alle etablerede forbindelser også var tilladt, så udgående forbindelser ville modtage svar fra andre systemer.

INPUT kæde

Følgende eksempel viser et simpelt pakkefilter til INPUT -kæden for det ovenfor beskrevne eksempel:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt   in        out                 source               destination
    0     0 ACCEPT     all—any    any     anywhere             anywhere            state ESTABLISHED
    0     0 ACCEPT     tcp—any    any     anywhere             anywhere            tcp dpt:smtp
    0     0 LOG        all—any    any     anywhere             anywhere            LOG level warning
    0     0 DROP       all—any    any     anywhere             anywhere

Tilføjelsen af ​​en eksplicit DROP -handling sikrer, at pakkerne kasseres, hvis INPUT -kædens standardpolitik ved et uheld ændres til ACCEPT .

OUTPUT kæde

Der er mindre behov for en OUTPUT kæde og standard politik af OUTPUT kæden kan sikkert sættes til at acceptere . I nogle tilfælde kan det være ønskeligt for en firewall at begrænse visse udgående forbindelser til et bestemt sæt godkendte systemer. Dette er kendt som udgangsfiltrering og kan bruges til at forhindre, at virus inden for firewallen slipper ud til andre systemer. For eksempel kan det være et netværks politik at begrænse udgående e-mail-forbindelser til en enkelt autoriseret e-mailserver som en måde at bekæmpe e-mail-spam . Dette kan opnås ved følgende eksempel:

Chain OUTPUT (policy ACCEPT)
 pkts bytes target     prot opt    in     out                  source              destination
    0     0 DROP       tcp—any    any    !server               anywhere            tcp dpt:smtp

Det er ikke nødvendigt at inkludere andre regler i dette eksempel, da standardpolitikken for OUTPUT -kæden er ACCEPT . Denne regel forudsætter, at den vært, der fungerer som firewall, ikke selv sender e -mail, f.eks. Til e -mail -serveren. Dette er en god antagelse, da et firewall -system typisk indeholder den minimale mængde systemkode, der er nødvendig for at fungere som en firewall.

En mere restriktiv OUTPUT -kæde ville indeholde tilladte ( ACCEPT ) poster for de tjenester, der kan tilgås uden for firewallen og derefter en restriktiv ( DROP ) politik for selve kæden.

Generel

Sikker netværkskommunikation:

Puffesnuse:

Angreb:

Fremskreden

Service detaljer

Referencer

Generel

  • Praktisk UNIX og internetsikkerhed, Simson Garfinkel og Gene Spafford, O'Reilly & Associates, 2003.

eksterne links