Hur man installerar SELinux på Ubuntu 24.04/22.04/20.04

Säkerhetsförbättrad Linux (SELinux) är avgörande för att hantera säkerhetspolicyer för åtkomstkontroll på Linux-system. SELinux används främst av systemadministratörer, utvecklare och säkerhetsproffs och erbjuder robust säkerhet på kärnnivå. Dess implementering på Ubuntu-servrar, särskilt för 24.04, 22.04 och 20.04 LTS-utgåvorna, stärker säkerheten för dessa system.

Nyckelfunktioner hos SELinux som förbättrar säkerheten för en Ubuntu inkluderar:

  • Obligatorisk åtkomstkontroll (MAC): Till skillnad från traditionella diskretionära åtkomstkontrollsystem, tillämpar SELinux strikta policyregler som begränsar systemprocesser och användare, vilket minskar risken för obehörig åtkomst.
  • Finkornig kontroll: Det ger detaljerad kontroll över systemprocesser och deras interaktioner med filer och andra resurser.
  • Förbättrade säkerhetspolicyer: Skräddarsydda säkerhetspolicyer hjälper till att skydda mot externa och interna hot.
  • Revision och loggning: Omfattande loggningsfunktioner underlättar övervakning och spårning av säkerhetsrelaterade händelser, vilket hjälper till att snabbt identifiera och lösa problem.

Att integrera SELinux i en Ubuntu-servermiljö, särskilt för de som hanterar kritiska applikationer eller känslig data, förbättrar systemsäkerheten avsevärt. Den här guiden, som fokuserar på installation och grundläggande användning av SELinux, syftar till att tillhandahålla ett enkelt tillvägagångssätt för att utnyttja dessa säkerhetsfördelar.

Inaktivera AppArmor Service

För att säkerställa kompatibilitet, bekräfta om AppArmor är aktivt, eftersom att köra AppArmor och SELinux tillsammans kan orsaka konflikter. Bestäm AppArmors status med:

sudo systemctl status apparmor

Om AppArmor fungerar, inaktivera det för att förhindra störningar med SELinux. Kör följande kommando för att inaktivera AppArmor:

sudo systemctl disable apparmor --now

Installera SELinux via APT Command

Detta steg involverar installation av viktiga SELinux-paket: policycoreutils, selinux-utils, och selinux-basics. Dessa är viktiga för att hantera SELinux-policyer och tillhandahålla grundläggande SELinux-support.

Starta installationen med detta kommando:

sudo apt install policycoreutils selinux-utils selinux-basics

Genom att köra detta installeras de nödvändiga SELinux-paketen på ditt Ubuntu-system.

Aktivera SELinux

Efter att du har installerat de nödvändiga paketen, aktivera SELinux för att säkerställa att det laddas vid start. Denna aktivering är avgörande för att aktivera SELinux säkerhetsfunktioner. Kör följande kommando med root-privilegier:

sudo selinux-activate

Detta steg konfigurerar ditt system för att initiera SELinux under uppstartsprocessen.

Framtvinga SELinux-läge

Att ställa in SELinux till dess verkställande läge är avgörande. I det här läget tillämpar SELinux aktivt sina säkerhetspolicyer och nekar åtkomst baserat på fördefinierade regler. Växla till verkställande läge med:

sudo selinux-config-enforcing

Den här åtgärden ändrar din SELinux-konfiguration så att den fungerar i upprätthållande läge.

Systemstart för aktivering av SELinux

Slutför installationsprocessen genom att starta om ditt system. Detta säkerställer att alla ändringar tillämpas och SELinux börjar arbeta i inställningsläget:

sudo reboot

Efter omstart kommer ditt system att köras med SELinux installerat, aktiverat och konfigurerat för att upprätthålla dess säkerhetspolicyer. Följande avsnitt kommer att guida dig i att ytterligare anpassa SELinux för att passa dina säkerhetsbehov.

Konfigurera SELinux

Förstå SELinux-lägen

SELinux fungerar i tre olika lägen:

  • Upprätthållande läge: Standardinställningen, där SELinux strikt tillämpar sina säkerhetspolicyer och nekar åtkomst enligt de etablerade reglerna.
  • Tillåtande läge: Här loggar SELinux policyöverträdelser men upprätthåller dem inte aktivt. Det här läget är användbart för testning och felsökning av policyer.
  • Inaktiverat läge: I det här läget är SELinux helt avstängd, utan att några policyer tillämpas.

Redigera SELinux-konfigurationsfilen

För att skräddarsy SELinux-inställningar, redigera /etc/selinux/config fil. Använd en föredragen textredigerare, som nano, för denna uppgift:

sudo nano /etc/selinux/config

Inuti filen, ändra SELINUX linje för att ställa in önskat läge. Till exempel, för att aktivera tillämpningsläge:

SELINUX=enforcing

Tillämpa konfigurationsändringarna

För att ändringarna ska träda i kraft, starta om ditt system:

sudo reboot

Anpassa ytterligare SELinux-konfigurationsalternativ

SELinux erbjuder flera anpassningsalternativ:

  • SETLOCALDEFS: Bestämmer användningen av lokalt definierade filkontexter. För att använda standardkontexter, ställ in detta på 0. Ändra /etc/selinux/config fil därefter:
SETLOCALDEFS=0
  • SELINUXTYPE: Ställer in policytypen. Den vanliga policytypen "riktad" fokuserar på att skydda specifika systemtjänster. För att ställa in detta, uppdatera SELINUXTYPE rad i konfigurationsfilen:
SELINUXTYPE=targeted

Exempel: Konfigurera SELinux för en webbserver

Överväg att konfigurera SELinux för att tillåta HTTP- och HTTPS-trafik på en Ubuntu-webbserver. De semanage kommando används för policyhantering.

Installera först semanage verktyg:

sudo apt install policycoreutils-python-utils

Tillåt sedan HTTP-trafik på port 80:

sudo semanage port -a -t http_port_t -p tcp 80

Och HTTPS-trafik på port 443:

sudo semanage port -a -t http_port_t -p tcp 443

Dessa kommandon kommer att uppdatera SELinux-policyn, vilket gör att din webbserver kan ta emot inkommande anslutningar på portarna 80 (HTTP) och 443 (HTTPS), vilket säkerställer säker webbtjänstdrift.

Verifierar SELinux-läge

Kontrollerar SELinux-status efter omstart

Efter att ha startat om ditt Ubuntu-system är det avgörande att bekräfta SELinux driftsstatus. Denna verifiering säkerställer att systemet tillämpar SELinux-konfigurationsinställningarna korrekt.

Utför följande kommando för att kontrollera aktuell status:

sestatus

Det här kommandot tillhandahåller omfattande detaljer om SELinux, inklusive dess nuvarande driftsstatus, läget det körs i (tvingande, tillåtande eller inaktiverat) och policyn som används. Korsreferenser denna utgång med dina inställningar i /etc/selinux/config fil för att bekräfta att SELinux fungerar som avsett.

Felsökning av vanliga SELinux-problem

Återställer standardfilkontexter

Felaktiga filkontexter leder ofta till att SELinux nekar åtkomst, vilket stör applikationens funktionalitet. För att åtgärda detta, använd restorecon kommando. Till exempel för att ta itu med problem i /var/www/html katalog, kör:

sudo restorecon -Rv /var/www/html

Detta kommando återställer rekursivt standardkontexten för alla filer och kataloger inom /var/www/html, med utförlig utdata som beskriver ändringarna.

Byter tillfälligt till tillåtande läge för felsökning

Osäker på om SELinux orsakar ett specifikt problem? Växla tillfälligt till tillåtande läge för att diagnostisera. Detta läge loggar överträdelser utan att upprätthålla dem. Aktivera tillåtande läge med:

sudo setenforce 0

Testa din ansökan nu. Om problemen upphör kommer de troligen från SELinux policyer. Kom ihåg att återgå till upprätthållande läge efter testning:

sudo setenforce 1

Granska SELinux-loggar för problemdiagnos

SELinux-loggar är avgörande för att identifiera policyöverträdelser. På Ubuntu är den primära SELinux-loggen /var/log/audit/audit.log. För att se de senaste inläggen, använd:

sudo tail /var/log/audit/audit.log

Sök efter "denied" eller "AVC" i loggarna för att lokalisera potentiella överträdelser.

Genererar anpassade policymoduler med audit2allow

Stöter du på policyrelaterade frågor? Utnyttja audit2allow för att analysera granskningsloggar och skapa en anpassad policymodul. Till exempel:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

Det första kommandot genererar en policy som heter "mycustommodule" från "denied"-poster i granskningsloggen. Den andra installerar den här policyn, vilket eventuellt löser problemet.

Hantera SELinux Booleans

SELinux Booleans kontrollerar specifika funktioner. För att lista alla booleaner och deras tillstånd, använd:

sudo getsebool -a

För att ändra en boolesk, till exempel aktivera httpd_can_network_connect, Kör:

sudo setsebool -P httpd_can_network_connect 1

De -P flaggan säkerställer uthållighet vid omstarter.

Konfigurera SELinux för webbapplikationer: Tillåter HTTP- och HTTPS-trafik

För webbapplikationer som WordPress är det avgörande att öppna nödvändiga nätverksportar i SELinux. Aktivera portarna 80 (HTTP) och 443 (HTTPS) med:

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

SELinux-konfiguration för WordPress

Justera SELinux-policyer för sömlös WordPress-drift:

  • Nätverksanslutningar för HTTPD-skript och moduler: Aktivera detta för plugin- och temauppdateringar:
sudo setsebool -P httpd_can_network_connect 1
  • Läs- och skrivåtkomst i WordPress Directory: Se till att HTTPD kan interagera med WordPress-filer:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

Ytterligare felsökning SELinux-konfigurationsalternativ

Anpassa SELinux för olika programvarukrav:

  • Tillgång till anpassade kataloger: Ändra filkontexter för anpassade webbkataloger, t.ex. /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • FTP-åtkomst för webbserver: Aktivera FTP-åtkomst vid behov:
sudo setsebool -P allow_ftpd_full_access 1
  • Webbserverns e-postfunktion: Om din applikation behöver e-postsändningsfunktioner:
sudo setsebool -P httpd_can_sendmail 1

Dessa konfigurationer illustrerar flexibiliteten hos SELinux när det gäller att tillgodose specifika säkerhets- och driftsbehov.

Slutsats

Det är en inpackning av vår guide för att installera SELinux på Ubuntu 24.04, 22.04 eller 20.04. Vi har gått igenom installationsprocessen, täckt några grundläggande kommandon och utforskat några viktiga konfigurationstips. Kom ihåg att regelbundna uppdateringar och kontinuerlig övervakning är avgörande för att upprätthålla ditt systems säkerhet. Experimentera gärna med SELinux-policyer för att bättre passa din servers behov, men säkerhetskopiera alltid dina konfigurationer innan du gör ändringar.

Joshua James