Inaktivera selinux centos 7. Konfigurera SELinux, aktivera, inaktivera. metoden för att inaktivera SELinux på CentOS. En gång för alla

Som tillhandahåller en mekanism för att stödja säkerhetspolicyer för åtkomstkontroll. SELinux kan ibland komma i vägen för dig. Därför måste du inaktivera-avaktivera SELinux . Men innan du stänger av/inaktiverar SELinux, se till att du har en bra anledning till varför du gör detta.

Hur man tillfälligt inaktiverar/inaktiverar SELinux

Steg 1: Först av allt, kontrollera den aktuella SELinux-statusen med följande kommando:

#getenforceing #

Att använda en annan metod med ett kommando som resulterar i samma sak:

# sestatus SELinux status: aktiverad SELinuxfs mount: /selinux Aktuellt läge: upprätthåller Läge från konfigurationsfil: upprätthåller Policyversion: 24 Policy från konfigurationsfil: riktad #

Steg 2: För att tillfälligt inaktivera/avaktivera SELinux , använd metoden nedan:

# echo 0 > /selinux/enforce

En annan metod

#setenforce 0

Troligtvis kan du ställa in den på tillåtande läge. Som ett resultat kommer SELinux att utfärda varningsmeddelanden snarare än att köra det. För att göra detsamma, använd följande kommando:

# setenforce Tillåtande

Först och främst fungerar den beskrivna metoden tills du startar om. Som ett resultat kommer det att fungera till nästa omstart. Dessutom, om du vill göra detta på permanent basis genom omstart, följ proceduren nedan.

Hur man inaktiverar-inaktiverar SELinux permanent

För att inaktivera det permanent, ändra värdet på " SELinux"på" Inaktiverad"i fil" /etc/sysconfig/SELinux"enligt nedanstående

Kontrollera slutligen igen med följande kommando:

# sestatus SELinux-status: inaktiverad

SELinux (Security-Enhanced Linux - Linux med förbättrad säkerhet) är en implementering av ett påtvingat åtkomstkontrollsystem som kan fungera parallellt med ett klassiskt diskretionärt åtkomstkontrollsystem. Ingår i standard Linux-kärnan. För att SELinux ska fungera krävs också modifierade versioner av vissa verktyg (ps, ls, etc.), som ger stöd för nya kärnfunktioner och stöd från filsystemet.

Metod 1: Inaktivera SELinux tillfälligt

För att tillfälligt inaktivera SELinux kan du modifiera filen /selinux/enforce. Observera att detta är en tillfällig inaktivering och när systemet har startat om kommer SELinux att fungera igen.

# cat /selinux/enforce 1 # echo 0 > /selinux/enforce# cat /selinux/enforce 0 Du kan också använda kommandot setenforce, som visas i exemplet nedan. Möjliga alternativ för setenforce-kommandot är: Upprätthållande, Tillåtande, 1 (aktivera) eller 0 (avaktivera).
#setenforce 0

Metod 2: Inaktivera SELinux permanent

För att permanent inaktivera SELinux, redigera filen /etc/selinux/config och ställ in SELINUX=disabled som visas nedan. Efter detta, starta om servern.

# cat /etc/selinux/config SELINUX=inaktiverad SELINUXTYPE=riktad SETLOCALDEFS=0

Metod 3: Inaktivera SELinux i Grub Bootloader

Den tredje metoden använder GRUB-starthanteraren för att inaktivera SELinux. Lägg till i slutet av raden selinux=0

# cat /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz doldmenytitel Enterprise Linux Enterprise Linux-server(2.6.18-92.el5PAE) root (hd0,0) kärna /boot/vmlinuz-2.6.18-92.el5PAE ro root=LABEL=/ rhgb tyst selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img titel Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) root (hd0,0) kärna /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb tyst selinux=0 initrd /boot/initrd-2.6.18-92.el5.img

Metod 4: Inaktivera SELinux endast för vissa tjänster - HTTP/Apache

Om du inte behöver inaktivera SELinux helt, utan bara för vissa tjänster, har du det här alternativet. Låt oss till exempel inaktivera SELinux för HTTP/Apache genom att ändra värdet på variabeln httpd_disable_trans i fil /etc/selinux/targeted/booleans.

# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1 Ställ in variabeln också med kommandot setsebool. Efter detta, starta om httpd för att ändringarna ska träda i kraft.

# setsebool httpd_disable_trans 1# tjänst httpd omstart

Hej alla, låt oss prata lite om SELinux, men innan dess, en liten definition för de som inte har hört vad det är. SELinux är en förkortning för engelska. orden Security-Enhanced Linux som betyder Linux med förbättrad säkerhet. Detta är med andra ord implementeringen av ett påtvingat tillträdeskontrollsystem, som kan fungera parallellt med det klassiska selektiva tillträdeskontrollsystemet. Skillnaden är att i SELinux, genom vissa policyer, bestäms åtkomsträttigheter av systemet självt, i sin tur delar det selektiva åtkomstkontrollsystemet upp processåtkomst till resurser baserat på användarrättigheter, för enkel förståelse är dessa rwx-rättigheter på tre nivåer - ägare , ägargrupp och andra användare.
Efter en liten beskrivning, låt oss försöka titta på några SELinux-kommandon och alternativ. Våra exempel kommer att demonstreras i operationssalen Linux-system CentOS 6. Det kanske första och förmodligen mest populära är kommandona för att kontrollera SELinux-statusen.

/usr/sbin/getenforce

/usr/sbin/sestatus

Returnera värden för kommandot getenforce
Genomdrivande– indikerar att SELinux är aktiverat och policyregler upprätthålls;
Tolerant– indikerar att SELinux är aktiverat, men policyregler tillämpas inte och endast DAC-regler används;
Inaktiverad– indikerar att SELinux är inaktiverat.

Returnera värden för kommandot sestatus
Detta kommando returnerar, förutom SELinux-statusen, den använda SELinux-policyn, exempel:

$ /usr/sbin/sestatus SELinux status: aktiverad SELinuxfs mount: /selinux Aktuellt läge: upprätthåller Läge från konfigurationsfil: upprätthållande Policyversion: 23 Policy från konfigurationsfil: riktad

SELinux status: aktiverad – betyder att SELinux är aktiverat;
Aktuellt läge: verkställande – betyder att SELinux är aktiverat i forcerat läge;
Policy från konfigurationsfil: targeted – indikerar att SELinux-målpolicyn används.

Aktiverar SELinux
Aktivera/inaktivera SELinux i operativsystemet i konfigurationsfilen
/etc/selinux/config

# Den här filen styr tillståndet för SELinux på systemet. # SELINUX= kan anta ett av dessa tre värden: # enforcing - SELinux säkerhetspolicy tillämpas. # tillåtande - SELinux skriver ut varningar istället för att upprätthålla. # disabled - Ingen SELinux-policy har laddats. SELINUX=inaktiverad # SELINUXTYPE= kan ta ett av dessa två värden: # targeted - Riktade processer är skyddade, # mls - Multi Level Security-skydd. SELINUXTYPE=riktad

Alternativet SELINUX=disabled betyder att SELinux är inaktiverat. Innan du startar SELinux måste du utföra några manipulationer.
1. Kontrollera installationen av SELinux-paket

Rpm -qa | grep selinux rpm -q policycoreutils rpm -qa | grep setroubleshooting

Se även till att följande paket är installerade: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Paket policycoreutils-gui, setroubleshoot, selinux-policy-devel, Och mcstrans frivillig.
Saknade paket kan installeras med kommandot (som root)

Yum installera paketnamn

2. Varje filsystemfil måste markeras med en SELinux-kontext innan den körs. Fram till denna punkt kan begränsade domäner nekas åtkomst, vilket kan leda till att operativsystemet inte laddas korrekt. Situationen kan korrigeras genom att ställa in alternativet SELINUX=tillåtande i konfigurationsfilen /etc/selinux/config.

3. Filmarkering kommer att ske under nästa omstart av systemet. Etiketter för alla filer ställs in i SELinux-kontexten under processen. På den sista raden representerar varje *-tecken 1000 taggade filer. Processens varaktighet beror på antalet filer i systemet, såväl som hastigheten på diskarna.

*** Varning -- SELinux-riktad policyommärkning krävs. *** Ommärkning kan ta mycket lång tid, beroende på fil *** systemstorlek och hastighet på hårddiskar. ****

4. I fallet när SELinux-policyn inte tvångstilldelas och arbetet sker i expansionsläge, skrivs förbud till loggen som åtgärder som skulle vara förbjudna i forcerat läge. Se till att SELinux inte förbjuder åtgärder under den senaste uppstarten av systemet, för att göra detta, kör kommandot

Grep "SELinux förhindrar" /var/log/messages

Utdata bör vara tom, vilket betyder att allt är bra och SELinux förbjuder inte åtgärden.
5. När du är säker på att det inte finns några meddelanden om förbud i loggarna, ställ in SELINUX-parametern för att verkställa (fil /etc/selinux/config):

# Den här filen styr tillståndet för SELinux på systemet. # SELINUX= kan ta ett av dessa tre värden: # enforcing - SELinux säkerhetspolicy tillämpas. # tillåtande - SELinux skriver ut varningar istället för att upprätthålla. # disabled - Ingen SELinux-policy har laddats. SELINUX=upprätthålla # SELINUXTYPE= kan ta ett av dessa två värden: # targeted - Riktade processer är skyddade, # mls - Multi Level Security-skydd. SELINUXTYPE=riktad

6. Efter detta operativ system bör startas om. Efter omstarten måste du kontrollera Enforcing-returvärdet med kommandot getenforce.

$ /usr/sbin/getenforce verkställighet

7. För att se mappningarna mellan SELinux och systemanvändare, kör kommandot

/usr/sbin/semanage login –l

Utdata från kommandot bör vara så här:

Inloggningsnamn SELinux Användare MLS/MCS Range __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023

Det finns några funktioner som också bör beaktas. När SELinux är inaktiverat markeras inte användarskapade filer, och som ett resultat kan problem uppstå när de sätts i upprätthållande tillstånd. Filer kommer att markeras genom att ändra alternativet från inaktiverat till tillåtande/tillämpande läge, vilket förhindrar problemet med att omarkerade filer dyker upp.

Vi har redan skrivit om SELinux på Habré, men inte många detaljerade manualer om detta system har publicerats. Idag publicerar vi just en så detaljerad manual om SELinux, från information om systemet och slutar med flexibel konfiguration av policyer.
För att inte göra inlägget till ett "ark" som är svårt att förstå, bestämde vi oss för att dela upp manualen i två delar. Den första kommer att prata om själva systemet och några av dess funktioner. Den andra handlar om att upprätta policyer. Nu publicerar vi första delen, andra delen kommer ut lite senare.

1. Introduktion

SELinux (SELinux) är ett påtvingat åtkomstkontrollsystem implementerat på kärnnivå. Detta system dök först upp i den fjärde versionen av CentOS, och i versionerna 5 och 6 kompletterades och förbättrades implementeringen avsevärt. Dessa förbättringar har gjort det möjligt för SELinux att bli ett universellt system som effektivt kan lösa många aktuella problem. Det är värt att komma ihåg att det klassiska Unix-rättighetssystemet tillämpas först, och kontrollen kommer bara att övergå till SELinux om denna första kontroll lyckas.

1.1 Några aktuella problem.

För att förstå det praktiska värdet av SELinux, låt oss titta på några exempel där ett standardsystem för åtkomstkontroll inte räcker. Om SELinux är inaktiverat har du bara tillgång till klassisk diskretionär åtkomstkontroll, som inkluderar DAC (diskretionär åtkomstkontroll) eller ACL (åtkomstkontrollistor). Det är vi pratar om om att manipulera skriv-, läs- och exekveringsrättigheter på användares och användargruppers nivå, vilket i vissa fall kan vara helt otillräckligt. Till exempel:

- Administratören kan inte helt kontrollera användarens handlingar. Det är till exempel fullt möjligt för en användare att ge alla andra användare läsrättigheter till sina egna känsliga filer, såsom SSH-nycklar.

Processer kan ändra säkerhetsinställningar. Till exempel bör filer som innehåller en användares e-post vara läsbara av endast en specifik användare, men e-postklienten kan mycket väl ändra åtkomsträttigheterna så att dessa filer är läsbara av alla.

Processer ärver rättigheterna för användaren som startade dem. Till exempel en trojaninfekterad version Firefox webbläsare kan läsa användarens SSH-nycklar, även om den inte har någon anledning att göra det.

I huvudsak, i den traditionella modellen för selektiv åtkomstkontroll (DAC) är endast två åtkomstnivåer väl implementerade - användare och superanvändare. Nej enkel metod, vilket skulle tillåta varje användare att ha de nödvändiga minimibehörigheterna.
Naturligtvis finns det många metoder för att komma runt dessa problem inom den klassiska säkerhetsmodellen, men ingen av dem är universell.

1.1.1 Grundläggande termer som används i SELinux:

Domän- en lista över åtgärder som en process kan utföra. Vanligtvis definieras en domän som den minsta möjliga uppsättningen av åtgärder genom vilka en process kan fungera. På detta sätt, om processen misskrediteras, kommer angriparen inte att kunna göra mycket skada.

Roll- en lista över domäner som kan tillämpas. Om en viss domän inte finns i listan över domäner för en roll, kan åtgärder från den domänen inte tillämpas.

Typ- en uppsättning åtgärder som är tillåtna i förhållande till ett föremål. En typ skiljer sig från en domän genom att den kan appliceras på pipes, kataloger och filer, medan en domän appliceras på processer.

Säkerhetskontext- alla SELinux-attribut - roller, typer och domäner.

1.2 Att lösa problemen med den traditionella säkerhetsmodellen.

SELinux följer modellen med minsta nödvändiga privilegier för varje tjänst, användare och program mycket mer strikt. Som standard är det "förbjudande läget" inställt när varje element i systemet endast har de rättigheter som är avgörande för att det ska fungera. Om en användare, ett program eller en tjänst försöker ändra en fil eller komma åt en resurs som inte helt klart behövs för att lösa det, kommer de helt enkelt att nekas åtkomst, och ett sådant försök kommer att loggas.

SELinux är implementerat på kärnnivå, så applikationsapplikationer kanske inte vet något alls om versionen av detta påtvingade åtkomstkontrollsystem, funktionerna i dess funktion, etc. Om den är korrekt konfigurerad kommer SELinux inte att påverka driften på något sätt tredjepartsprogram och tjänster. Även om applikationen kan fånga upp felmeddelanden från detta åtkomstkontrollsystem, ökar användarvänligheten avsevärt. Om ett försök görs att komma åt en skyddad resurs eller fil, skickar SELinux ett felmeddelande från "access denied"-familjen till huvudapplikationen. Men få applikationer använder returkoder för systemanrop erhållna från SELinux.

Här är några exempel på hur du använder SELinux för att visa hur du kan förbättra säkerheten för hela ditt system.

- Skapa och konfigurera en lista med program som kan läsa ssh-nycklar.

Förhindrar obehörig åtkomst till data via en e-postklient.

Konfigurera webbläsaren så att den endast kan läsa de filer och mappar som behövs för att fungera i användarens hemmapp.

2. SELinux driftlägen

SELinux har tre huvudsakliga driftlägen, med Enforcing-läge inställt som standard. Detta är ett ganska strikt läge, och vid behov kan det ändras till något mer bekvämt för slutanvändaren.

Genomdrivande: Standardläge. När det här läget är valt kommer alla åtgärder som på något sätt bryter mot den nuvarande säkerhetspolicyn att blockeras, och försöket att överträda kommer att registreras i loggen.

Tolerant: När du använder det här läget kommer information om alla åtgärder som bryter mot den nuvarande säkerhetspolicyn att registreras i loggen, men själva åtgärderna blockeras inte.

Inaktiverad: Fullständig inaktivering av systemet för tvångskontroll.

Du kan se det aktuella läget och andra SELinux-inställningar (och, om nödvändigt, ändra det) med hjälp av ett speciellt GUI-verktyg som finns tillgängligt i Administration-menyn (system-config-selinux). Om du är van vid att arbeta i konsolen kan du se aktuell status med kommandot sestatus.

# sestatus SELinux status: aktiverad SELinuxfs mount: /selinux Aktuellt läge: upprätthåller Läge från konfigurationsfil: upprätthåller Policyversion: 21 Policy från konfigurationsfil: riktad

Du kan också ta reda på SELinux-statusen med hjälp av kommandot getenforce.
Kommandot "setenforce" låter dig snabbt växla mellan Enforcement och Permissive lägen, ändringarna träder i kraft utan att starta om. Men om du aktiverar eller inaktiverar SELinux krävs en omstart eftersom säkerhetsetiketterna måste installeras om på filsystemet.
För att välja standardläget som kommer att tillämpas varje gång systemet startar, ställ in värdet på raden "SELINUX=" i filen /etc/selinux/config, och specificera ett av lägena - "enforcing", "permissive" eller " Inaktiverad" . Till exempel: "SELINUX=tillåtande".

3. SELinux policyer

Som nämnts tidigare, fungerar SELinux som standard i upprätthållande läge, när andra åtgärder än de som är tillåtna blockeras automatiskt, har varje program, användare eller tjänst bara de privilegier som de behöver för att fungera, men inget mer. Detta är en ganska tuff politik, som har båda fördelarna - den högsta nivån informationssäkerhet, och nackdelar - att konfigurera systemet i detta läge är förknippat med stora arbetskostnader för systemadministratörer, dessutom finns det en stor risk att användare kommer att stöta på åtkomstbegränsningar om de vill använda systemet på något icke-trivialt sätt. Detta tillvägagångssätt är acceptabelt i företagssektorn, men är oacceptabelt på slutanvändardatorer. Många administratörer inaktiverar helt enkelt SELinux på sina arbetsstationer för att undvika sådana problem.

För att undvika detta, för nyckelapplikationer och tjänster, som till exempel httpd, named, dhcpd, mysqld, förkonfigurerade målpolicyer definieras som inte tillåter en angripare att få tillgång till viktig data. De applikationer för vilka policyn inte är definierad körs i unconfined_t-domänen och är inte skyddade av SELinux. Således kan korrekt valda målpolicyer dig uppnå en acceptabel säkerhetsnivå utan att skapa onödiga problem för användaren.

4. Åtkomstkontroll i SELinux

SELinux tillhandahåller följande åtkomstkontrollmodeller:

Typ Enforcement (TE): Den primära åtkomstkontrollmekanismen som används i målpolicyer. Låter dig hantera behörigheter i detalj, på den lägsta nivån. Den mest flexibla, men också den mest arbetskrävande för systemadministratör mekanism.

Rollbaserad åtkomstkontroll (RBAC): I denna modell implementeras åtkomsträttigheter som roller. En roll är behörighet att utföra vissa åtgärder av ett eller flera element i systemet över andra delar av systemet. I huvudsak är RBAC en vidareutveckling av TE.

Multi-Level Security (MLS): en säkerhetsmodell på flera nivåer där alla systemobjekt tilldelas en viss åtkomstnivå. Tillstånd eller nekad åtkomst bestäms endast av förhållandet mellan dessa nivåer.

Alla processer och filer inom SELinux har en säkerhetskontext.
Låt oss titta på sammanhanget i praktiken genom att titta närmare på hemsida Apache webbserver som finns på /var/www/html/index.html

$ ls -Z /var/www/html/index.html -rw-r--r-- användarnamn användarnamn system_u:object_r:httpd_sys_content_t /var/www/html/index.html

Förutom standardfilbehörigheterna kan vi se SELinux säkerhetskontext: system_u: object_r: httpd_sys_content_t.

Kontexten baseras på user:role:type:mls, men user:role:type-fälten visas medan mls-fältet är dolt. Vi kan också se målpolicyn, i det här fallet httpd_sys_content_t.

Låt oss nu titta på SELinux säkerhetskontext för "httpd" -processen (Apache webbserver):

$ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd

Som vi kan se körs denna process på httpd_t-domänen.

Nåväl, låt oss nu titta på säkerhetskontexten för en fil i vår hemkatalog:

$ ls -Z /home/username/myfile.txt -rw-r--r-- användarnamn användarnamn user_u:object_r:user_home_t /home/username/myfile.txt

Vi ser att filen är av typen user_home_t, denna typ tilldelas som standard till alla filer i hemkatalogen.
Åtkomst tillåts endast mellan element av samma typ, varför Apache-webbservern enkelt kan läsa filen /var/www/html/index.html, som är av typen httpd_sys_content_t. Samtidigt, eftersom Apache körs på httpd_t-domänen och inte har användar-id:användarnamn-fälten ifyllda, kan den inte komma åt filen home/username/myfile.txt, även om denna fil är läsbar av processer som inte har en definierade mål. På detta sätt, om Apache-webbservern äventyras, kommer angriparen inte att kunna komma åt filer eller köra processer som inte finns i httpd_t-domänen.

5. Felsökning av SELinux-problem

Förr eller senare kommer det att uppstå en situation där du ställs inför en situation där SELinux nekar dig tillgång till något. Det finns flera huvudorsaker till nekad åtkomst:

Felaktigt märkt fil.
– Processen körs i fel sammanhang
- Fel i policyn. Processen kräver åtkomst till en fil som inte beaktades när policyn skapades.
- Försök till invasion.

De tre första orsakerna till nekad åtkomst löses ganska enkelt, medan ett intrångsförsök larmas och ett motsvarande meddelande skickas till användaren.
För att hantera eventuella problem, titta bara på SELinux-loggen. Som standard skrivs det av auditd-processen till filen /var/log/audit/audit.log. Om denna process inte körs loggar SELinux in filen /var/log/messages, i vilket fall alla meddelanden i åtkomstkontrollsystemet är markerade med AVC-nyckeln, vilket gör att du snabbt kan filtrera bort de nödvändiga raderna, till exempel. med kommandot grep.
I senaste versionerna distributioner (med början från CentOS 5), ett verktyg med grafiskt gränssnitt användare, vilket låter dig visa SELinux-loggen i en bekväm och användarvänlig form. Du kan ringa det från konsolen genom att skriva sealert -b. Verktyget är en del av setroubleshoot-paketet. Om X-servern inte körs kan du generera läsbara rapporter med följande kommando:

Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

5.1 Ändra filsäkerhetskontextetiketter.

Kommandot "chcon" låter dig ändra SELinux-kontexten för filer eller kataloger på exakt samma sätt som kommandona "chown" och "chmod" låter dig ändra ägare eller behörigheter för en fil inom standardsystemåtkomstkontroll.

Låt oss titta på några exempel.
Låt oss anta att Apache-webbservern är installerad på systemet och vi behöver ändra mappen där webbplatserna är lagrade (som standard är detta /var/www/html/) till, säg, /html/ och skapa ett index. html-fil i den här katalogen.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html

Ovan ser vi att både /html-katalogen och /html/index.html-filen inom säkerhetskontexten är av typen default_t. Det betyder att om vi startar Apache och försöker arbeta med den här katalogen eller filen kommer SELinux att neka oss åtkomst. Och detta kommer att vara helt korrekt, eftersom den korrekta säkerhetskontexten för filer som interagerar med Apache är httpd_sys_content_t.
Låt oss ändra sammanhanget och kontrollera om allt är gjort korrekt:

# chcon -v --type=httpd_sys_content_t /html-kontext för /html har ändrats till user_u:object_r:httpd_sys_content_t # chcon -v --type=httpd_sys_content_t /html/index.html sammanhanget för /html/index.html ändrat till user_u:object_r :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:httpd_sys_content_t html
Det är inte nödvändigt att manuellt bearbeta varje fil och varje katalog, du kan helt enkelt använda alternativet -R rekursiv kataloggenomgång:

# chcon -Rv --type=httpd_sys_content_t /html

Sådana ändringar av säkerhetskontexten kommer att kvarstå mellan omstarterna, men om filsystemetiketterna ändras kommer ändringarna att gå förlorade. Vid underhåll och drift är detta inte ovanligt. Den korrekta lösningen i en sådan situation skulle vara (naturligtvis efter testning) att skapa en ytterligare regel och sedan kombinera den med lokala lokala regler. Därmed kommer det att ha högre prioritet än de grundläggande reglerna.

För att SELinux ska fungera korrekt även efter att ha ändrat filsystemetiketter kan vi använda både verktyg för att hantera SELinux med ett GUI-gränssnitt och semanage-konsolverktyget:

Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"

I exemplet ovan tilldelade vi httpd_sys_content_t-kontexten till alla filer som finns i /html-katalogen.

5.2 Återställa SELinux säkerhetskontext.

Kommandot "restorecon" låter dig ändra säkerhetskontexten till den som tilldelades som standard.
Återigen använder vi Apache webbserver som ett exempel. Låt oss anta att användaren redigerade en kopia av filen index.html i sin hemkatalog och flyttade den (med mv-kommandot) till katalogen där webbplatser är lagrade (/var/www/html).

Observera att vid kopiering (cp-kommando) kommer filens säkerhetskontext att sammanfalla med kontexten för målkatalogen, medan säkerhetskontexten vid flyttning sammanfaller med källkontexten. Naturligtvis kan vi använda kommandot chcon för att ändra säkerhetskontexten, men eftersom de flyttade filerna nu finns i /var/www/html-katalogen kan vi helt enkelt återställa kontextinställningarna för alla filer som finns i den katalogen.

För att återställa kontexten endast för filen index.html kan vi använda kommandot:

# restorecon -v /var/www/html/index.html

Om vi ​​rekursivt vill gå igenom hela katalogen och ändra kontexten för alla filer den innehåller, använder vi följande kommando:

# restorecon -Rv /var/www/html

5.3 Ändra etiketter för hela filsystemet.

Ibland är det nödvändigt att återställa säkerhetsetiketter på hela filsystemet. Oftast utförs denna operation när du återaktiverar SELinux efter att systemet har stängts av under en tid. Detta är också nödvändigt om vi ändrar typen av policyhantering till strikt (i detta fall fungerar alla processer i sina egna speciella domäner; ingen kan arbeta i unconfined_t-domänen).

För att automatiskt partitionera om filsystem nästa gång du startar om anger du följande kommandon:
# touch /.autorelabel # starta om
Ibland fungerar inte automatisk ompartition (oftast i de fall där distributionssatsen med SELinux inaktiverad uppdaterades). I det här fallet använder du följande kommando:

# genhomedircon # touch /.autorelabel # starta om

5.4 Ge tillgång till hamnar.

Ofta vill vi att tjänster som Apache ska kunna lyssna på icke-standardiserade portar och acceptera inkommande anslutningar på dem. Grundläggande SELinux-policyer tillåter endast åtkomst till fördefinierade portar som är hårdkodade till en viss tjänst. Låt oss säga att vi vill att Apache ska lyssna på port 81. I det här fallet måste vi lägga till en regel med kommandot semanage:

# semanage port -a -t http_port_t -p tcp 81

En komplett lista över portar som SELinux ger åtkomst till kan ses enligt följande:

# semanage port -l

I nästa, andra del av manualen kommer vi att visa möjligheten till flexibel konfiguration av systempolicyer.

Security-Enhanced Linux (SELinux) är en funktionsmekanism i Linux som ger stöd för säkerhetspolicyer för åtkomstkontroll.

SELinux kan skapa regler för åtkomst till användare eller verktyg, vilket gör det möjligt att begränsa vissa åtkomstmöjligheter för verktyg genom att definiera dessa funktioner och deras beteende i form av regler, och operativsystemet som använder SELinux kommer att övervaka efterlevnaden av dessa regler. I det här ämnet kommer jag att berätta hur du inaktiverar eller aktiverar SELinux på CentOS. Vissa distributioner har SELinux aktiverat som standard, vilket kan orsaka oönskat beteende från dess sida om du inte förstår hur SELinux fungerar eller hur man konfigurerar det.

För att inaktivera SELinux kan du använda någon av de 4 olika metoderna som nämns i den här artikeln.

SELinux kommer att tillämpa säkerhetspolicyer inklusive obligatoriska åtkomstkontroller som är definierade i Linux-kärnan. Varje fil och process på systemet kommer att märkas med specifika genvägar som kommer att användas av SELinux. Du kan använda kommandot och visa dessa genvägar som visas nedan:

# ls -Z /etc/

Är inte full lista som jag citerade, kan det vara annorlunda för dig.

Första metoden för att inaktivera SELinux på CentOS. Tillfälligt.

För att inaktivera SELinux tillfälligt måste du redigera /selinux/enforce som visas nedan. Observera att det här alternativet inte längre kommer att finnas efter en omstart av systemet.

Och så, låt oss kontrollera vilket tillstånd SELinux har på servern:

# cat /selinux/enforce 1

Eller så kan du använda:

# /usr/sbin/sestatus SELinux status: aktiverad SELinuxfs mount: /selinux Aktuellt läge: tillåtande Läge från konfigurationsfil: upprätthåller Policyversion: 24 Policy från konfigurationsfil: riktad

Det betyder att den är påslagen. För att stänga av den, använd följande kommando:

# echo 0 > /selinux/enforce

Och låt oss kolla igen:

# cat /selinux/enforce 0

Möjliga alternativ för setenforce är:

  • 1 (aktivera).
  • 0 (avaktivera).

Du kan också använda kommandot setenforce som visas nedan för att inaktivera SELinux. Här är ett exempel på hur du kör det här kommandot:

#setenforce 0

Eller så ger jag ett annat användningsfall:

# setenforce Tillåtande

PS: För att kontrollera finns det ett annat bra kommando:

# getenforce Tillåtande

Andra metoden för att inaktivera SELinux på CentOS. En gång för alla!

Låt oss kontrollera statusen för SELinux på CentOS.

# cat /etc/selinux/config

Jag har den påslagen, jag vill stänga av den, och för att göra detta måste du öppna konfigurationen och skriva:

# vim /etc/selinux/config

Behöver hitta:

SELINUX=aktiverad

Ersatt av:

Som visas i följande skärmdump:

Därefter måste vi starta om vårt OS:

# starta om

3:e metoden. Inaktiverar SELinux i själva Grub bootloader.

Om du inte kan hitta /etc/selinux/config på ditt system, kan du inaktivera SELinux genom att skicka en parameter till GRUB-starthanteraren som visas nedan.

# katt /boot/grub/grub.conf

4:e metoden. Inaktiverar endast en specifik tjänst i SELinux - HTTP/Apache

Om du inte är intresserad av att inaktivera hela SELinux, kan du också inaktivera SELinux för bara en specifik tjänst. Om du till exempel vill inaktivera SELinux för att servera HTTP/Apache, då måste du ändra variabeln httpd_disable_trans i /etc/selinux/targeted/booleans.




Topp