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:
- Det mindste antal dage mellem ændringer af adgangskode
- Det maksimale antal dage, indtil adgangskoden skal ændres
- Antallet af advarseldage før adgangskoden skal ændres
- Antallet af dage efter adgangskoden skal ændres, når kontoen bliver ubrugelig
- 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.
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.d på Debian
- ved hjælp af chkconfig på Red 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-opdatering på Gentoo 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:
- Mand i midten angreb
- LAND , dødens ping , juletræspakke , Denial of service et al.
- Softwareværktøjer baseret adgangskode/adgangskode/nøgle stjæler angreb på systemet. Såsom strace/truss/tusc/dtrace/SystemTap -baserede.
Fremskreden
- rootkits , kernemoduler, chkrootkit
- udnytte detaljer, bufferoverløb , lokal vs fjernbetjening
Service detaljer
- bannere
- SMTP - spam
- Sendmail - bannere hjælper headerversion osv.
- Domain Name System - reverse mapping dnssec
Referencer
Generel
- Praktisk UNIX og internetsikkerhed, Simson Garfinkel og Gene Spafford, O'Reilly & Associates, 2003.
eksterne links
- Unix -sikkerhedsmodellen til webserveradministration Robert K. Moniot 2000
- En arkitektonisk oversigt over UNIX -netværkssikkerhed Robert B. Reinhardt 1993
- Unix sikkerhedspapirer