SELinux fuskblad för systemadministratörer: 42 svar på viktiga frågor
Översättningen av artikeln förbereddes speciellt för kursens studenter "Linux-administratör".
Här får du svar på viktiga frågor om livet, universum och allt i Linux med förbättrad säkerhet.
"Den viktiga sanningen att saker och ting inte alltid är som de verkar är allmänt känt..."
-Douglas Adams, Liftarens guide till galaxen
Säkerhet. Ökad tillförlitlighet. Korrespondens. Politik. Four Horsemen of the Apocalypse sysadmin. Utöver våra dagliga uppgifter - övervakning, backup, implementering, konfigurering, uppdatering etc. - ansvarar vi även för säkerheten i våra system. Även de system där tredjepartsleverantören rekommenderar att vi inaktiverar utökad säkerhet. Det känns som jobb Ethan Hunt från "Mission: Impossible."
Inför detta dilemma beslutar vissa systemadministratörer att ta blått piller, eftersom de tror att de aldrig kommer att veta svaret på den stora frågan om livet, universum och allt det där. Och som vi alla vet är svaret 42.
I andan av The Hitchhiker's Guide to the Galaxy, här är 42 svar på viktiga frågor om kontroll och användning. SELinux på dina system.
1. SELinux är ett påtvingat åtkomstkontrollsystem, vilket innebär att varje process har en etikett. Varje fil, katalog och systemobjekt har också etiketter. Policyregler styr åtkomst mellan taggade processer och objekt. Kärnan tillämpar dessa regler.
2. De två viktigaste begreppen är: märkning — märkningar (filer, processer, portar etc.) och Typ verkställighet (som isolerar processer från varandra baserat på typer).
4. Syftet med att tillhandahålla säkerhet på flera nivåer (Multi-Level Security - MLS) är att hantera processer (domäner) baserat på säkerhetsnivån för de data de kommer att använda. Till exempel kan en hemlig process inte läsa topphemlig data.
5. Säkerställa säkerhet i flera kategorier (Multi-Category Security - MCS) skyddar liknande processer från varandra (till exempel virtuella maskiner, OpenShift-motorer, SELinux-sandlådor, behållare, etc.).
6. Kärnalternativ för att ändra SELinux-lägen vid uppstart:
autorelabel=1 → får systemet att köra ommärkning
selinux=0 → kärnan laddar inte SELinux-infrastrukturen
enforcing=0 → laddar i tillåtande läge
7. Om du behöver märka om hela systemet:
# touch /.autorelabel
#reboot
Om systemmarkeringen innehåller ett stort antal fel kan du behöva starta i tillåtande läge för att anmärkningen ska lyckas.
8. För att kontrollera om SELinux är aktiverat: # getenforce
9. För att tillfälligt aktivera/inaktivera SELinux: # setenforce [1|0]
10. Kontrollerar SELinux-status: # sestatus
11. Konfigurationsfil: /etc/selinux/config
12. Hur fungerar SELinux? Här är ett exempel på märkning för Apache-webbservern:
Process som körs i sammanhang httpd_t, kan interagera med ett märkt objekt httpd_something_t.
13. Många kommandon accepterar ett argument -Z för att se, skapa och ändra sammanhang:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Kontexter etableras när filer skapas baserat på kontexten för deras överordnade katalog (med vissa undantag). RPM kan skapa sammanhang som under installationen.
14. Det finns fyra huvudorsaker till SELinux-fel, som beskrivs mer i detalj i punkterna 15-21 nedan:
Märkningsproblem
På grund av något som SELinux behöver veta
Fel i SELinux policy/applikation
Din information kan äventyras
15.Märkningsproblem: om dina filer finns i /srv/myweb är felaktigt markerade kan åtkomst nekas. Här är några sätt att fixa detta:
Om du känner till etiketten: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Om du känner till en fil med motsvarande märkning: # semanage fcontext -a -e /srv/myweb /var/www
Återställ sammanhanget (för båda fallen): # restorecon -vR /srv/myweb
16.Märkningsproblem: om du flyttar filen istället för att kopiera den kommer filen att behålla sitt ursprungliga sammanhang. Så här åtgärdar du det här problemet:
Ändra kontextkommandot med etiketten: # chcon -t httpd_system_content_t /var/www/html/index.html
Ändra kontextkommandot med länketiketten: # chcon --reference /var/www/html/ /var/www/html/index.html
Återställ sammanhanget (för båda fallen): # restorecon -vR /var/www/html/
17. Om SELinux du behöver vetaatt HTTPD lyssnar på port 8585, berätta för SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux du behöver veta Booleska värden som tillåter att delar av SELinux-policyn ändras under körning utan att kunskap om SELinux-policyn skrivs över. Om du till exempel vill att httpd ska skicka e-post anger du: # setsebool -P httpd_can_sendmail 1
19.SELinux du behöver veta logiska värden för att aktivera/inaktivera SELinux-inställningar:
Så här ser du alla booleska värden: # getsebool -a
För att se en beskrivning av var och en: # semanage boolean -l
Så här ställer du in ett booleskt värde: # setsebool [_boolean_] [1|0]
För en permanent installation, lägg till -P. Till exempel: # setsebool httpd_enable_ftp_server 1 -P
20. SELinux policyer/applikationer kan innehålla fel, inklusive:
Ovanliga kodvägar
konfigurationer
Omdirigerar standard
Filbeskrivning läcker
Körbart minne
Dåligt byggda bibliotek
Öppna biljetter (skicka inte in en rapport till Bugzilla; Bugzilla har ingen SLA).
21.Din information kan äventyrasom du har begränsade domäner som försöker:
Ladda kärnmoduler
Inaktivera påtvingat SELinux-läge
Skriva till etc_t/shadow_t
Ändra iptables regler
22. SELinux-verktyg för att utveckla policymoduler:
25. Om ett SELinux-fel uppstår, använd loggen setroubleshoot erbjuder flera möjliga lösningar.
Till exempel från journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
***** Plugin restorecon (99.5 confidence) suggests ************************
If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html
26. Loggning: SELinux registrerar information på många ställen: