ĂversĂ€ttningen av artikeln förbereddes speciellt för kursens studenter .

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 inte alltid Àr vad de verkar vara Àr vÀlkÀnd..."
âDouglas Adams, Liftarens guide till galaxen
SĂ€kerhet. Tillförlitlighet. Efterlevnad. Policy. Sysadmin-apokalypsens fyra ryttare. Utöver vĂ„ra dagliga uppgifter â övervakning, sĂ€kerhetskopiering, driftsĂ€ttning, konfigurering, uppdatering etc. â Ă€r vi ocksĂ„ ansvariga för sĂ€kerheten i vĂ„ra system. Ăven de system dĂ€r en tredjepartsleverantör rekommenderar att vi inaktiverar utökad sĂ€kerhet. Det verkar som arbete frĂ„n "Mission Impossible".
Inför detta dilemma vÀljer vissa systemadministratörer att ta , eftersom de tror att de aldrig kommer att fÄ veta svaret pÄ den stora frÄgan om livet, universum och allting. Och som vi alla vet Àr det svaret 42.
I samma anda som Liftarens guide till galaxen kommer hÀr 42 svar pÄ viktiga frÄgor om kontroll och anvÀndning. i era system.
1. SELinux â Ă€r ett obligatoriskt Ă„tkomstkontrollsystem, vilket innebĂ€r att varje process har en etikett. Varje fil, katalog och systemobjekt har ocksĂ„ en etikett. Policyregler styr Ă„tkomst mellan etiketterade processer och objekt. KĂ€rnan upprĂ€tthĂ„ller dessa regler.
2. De tvĂ„ viktigaste begreppen Ă€r: mĂ€rkning â mĂ€rkning (filer, processer, portar etc.) och TyptillĂ€mpning (vilket isolerar processer frĂ„n varandra baserat pĂ„ typer).
3. Korrekt format pÄ etiketten user:role:type:level (frivillig).
4. Syftet med att tillhandahĂ„lla sĂ€kerhet pĂ„ flera nivĂ„er (FlernivĂ„sĂ€kerhet â MLS) Ă€r hanteringen av 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 topphemliga data.
5. SÀkerstÀlla sÀkerhet i flera kategorier (Flerkategoriserad sÀkerhet - MCS) skyddar liknande processer frÄn varandra (t.ex. virtuella maskiner, OpenShift-motorer, SE-sandlÄdorLinux, containrar, etc.).
6. KÀrnparametrar för att Àndra SE-lÀgenLinux vid laddning:
autorelabel=1â tvingar systemet att initiera ommĂ€rkningselinux=0â kĂ€rnan laddar inte SE-infrastrukturenLinuxenforcing=0â starta i tillĂ„tande lĂ€ge
7. Om du behöver ommÀrka hela systemet:
# touch /.autorelabel
#reboot
Om systemetiketten innehÄller ett stort antal fel kan du behöva starta i tillÄtande lÀge för att ometiketteringen ska lyckas.
8. För att kontrollera om SE Àr aktiveratLinux: # getenforce
9. För att tillfÀlligt aktivera/avaktivera SELinux: # setenforce [1|0]
10. Kontrollera SE-statusLinux: # sestatus
11. InstÀllningsfil: /etc/selinux/config
12. Hur SE fungerarLinuxHÀr Àr ett exempel pÄ mÀrkning för Apache-webbservern:
- BinÀr representation:
/usr/sbin/httpdâhttpd_exec_t - Konfigurationskatalog:
/etc/httpdâhttpd_config_t - Loggfilkatalog:
/var/log/httpd â httpd_log_t - InnehĂ„llskatalog:
/var/www/html â httpd_sys_content_t - Startskript:
/usr/lib/systemd/system/httpd.service â httpd_unit_file_d - processen:
/usr/sbin/httpd -DFOREGROUND â httpd_t - Hamnar:
80/tcp, 443/tcp â httpd_t, http_port_t
Process som körs i kontext httpd_t, kan interagera med objektet med etiketten httpd_something_t.
13. MÄnga lag accepterar argumentet -Z för att visa, skapa och redigera kontext:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontexter anges nÀr filer skapas baserat pÄ kontexten i deras överordnade katalog (med vissa undantag). RPM:er kan ange kontexter bÄde vid installationstillfÀllet och vid installationstillfÀllet.
14. Det finns fyra huvudorsaker till SE-felLinux, vilka beskrivs mer i detalj i punkterna 15â21 nedan:
- MĂ€rkningsproblem
- PÄ grund av nÄgot som SELinux mÄste veta
- Fel i SE-policy/applikationLinux
- Din information kan vara komprometterad
15. Problem med mÀrkning: om dina filer finns i /srv/myweb Àr felaktigt markerade kan Ätkomst nekas. HÀr Àr nÄgra sÀtt att ÄtgÀrda 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 markeringar:
# semanage fcontext -a -e /srv/myweb /var/www - Ă
terstÀlla sammanhanget (för bÄda fallen):
# restorecon -vR /srv/myweb
16. Problem med mÀrkning: Om du flyttar en fil istÀllet för att kopiera den, behÄller filen sin ursprungliga kontext. SÄ hÀr ÄtgÀrdar du 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 kontext (för bÄda fallen):
# restorecon -vR /var/www/html/
17. Om SELinux behöver veta, att HTTPD lyssnar pÄ port 8585, berÀtta för SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux behöver veta Booleska vÀrden som lÄter dig Àndra delar av SE-policynLinux vid körning utan kÀnnedom om omskrivning av SE-policyLinuxOm du till exempel vill att httpd ska skicka e-post, ange: # setsebool -P httpd_can_sendmail 1
19. SELinux behöver veta logiska vÀrden för att aktivera/avaktivera SE-instÀllningarLinux:
- För att se alla logiska vÀrden:
# getsebool -a - För att se en beskrivning av varje:
# semanage boolean -l - För att stÀlla in ett logiskt vÀrde:
# setsebool [_boolean_] [1|0] - För permanent installation, lÀgg till
-P. Till exempel:# setsebool httpd_enable_ftp_server 1 -P
20. SE-policyer/ansökningarLinux kan innehÄlla fel, inklusive:
- Ovanliga kodvÀgar
- konfigurationer
- Omdirigera stdout
- LĂ€ckage av filbeskrivningar
- Körbart minne
- DÄligt byggda bibliotek
Ăppna Ă€renden (skicka inte in en rapport till Bugzilla; det finns inget SLA i Bugzilla).
21. Din information kan vara komprometterad, om du har begrÀnsade domÀner och försöker:
- Ladda kÀrnmoduler
- Inaktivera pÄtvingat lÀge SELinux
- Skriv till
etc_t/shadow_t - Ăndra iptables regler
22. SE-verktygLinux för att utveckla policymoduler:
# yum -y install setroubleshoot setroubleshoot-server
Starta om eller starta om auditd efter installationen.
23. anvÀndning
journalctl för att lista alla loggar relaterade till setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. anvÀndning journalctl för att lista alla loggar som Àr kopplade till en specifik SE-taggLinux. Till exempel:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. NÀr ett SE-fel uppstÄrLinux anvÀnd logg setroubleshoot med ett förslag pÄ 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.html26. Loggning: SELinux registrerar information pÄ mÄnga stÀllen:
- / var / log / messages
- /var/log/audit/audit.log
- /var/lib/settroubleshoot/settroubleshoot_database.xml
27. Loggning: Hitta SE-felLinux i revisionsloggen:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. För att hitta SE-meddelandenLinux à tkomstvektorcache (AVC) för en specifik tjÀnst:
# ausearch -m avc -c httpd
29. Verktyg audit2allow samlar in information frÄn loggar över förbjudna operationer och genererar sedan SE-behörighetspolicyreglerLinux. Till exempel:
- För att skapa en lÀsbar beskrivning av orsaken till Ätkomstnegationen:
# audit2allow -w -a - SÄ hÀr visar du vilken typ av tillÀmpningsregel som tillÄter nekad Ätkomst:
# audit2allow -a - För att skapa en anpassad modul:
# audit2allow -a -M mypolicy - alternativ
-Mskapar en tillÀmpningsfil av typen (.te) med det angivna namnet och kompilerar regeln till ett policypaket (.pp):mypolicy.pp mypolicy.te - SÄ hÀr installerar du en anpassad modul:
# semodule -i mypolicy.pp
30. SÄ hÀr konfigurerar du en separat process (domÀn) för att köras i tillÄtande lÀge: # semanage permissive -a httpd_t
31. Om du inte lÀngre vill att domÀnen ska vara tillÄtande: # semanage permissive -d httpd_t
32. SÄ hÀr inaktiverar du alla tillÄtande domÀner: # semodule -d permissivedomains
33. Aktivera MLS SE-policyLinux: # yum install selinux-policy-mls
ĐČ /etc/selinux/config:
SELINUX=permissiv
SELINUXTYPE=mls
Se till att SELinux fungerar i tillÄtande lÀge: # setenforce 0
AnvÀnd skriptet fixfilesför att sÀkerstÀlla att filerna fÄr nya namn vid nÀsta omstart:
# fixfiles -F onboot # reboot
34. Skapa en anvÀndare med ett specifikt MLS-intervall: # useradd -Z staff_u john
AnvÀnda kommandot useradd, mappa den nya anvÀndaren till en befintlig SE-anvÀndareLinux (I detta fall, staff_u).
35. För att se korrespondensen mellan SE-anvÀndareLinux О Linux: # semanage login -l
36. Definiera ett specifikt intervall för anvÀndaren: # semanage login --modify --range s2:c100 john
37. SÄ hÀr korrigerar du etiketten i anvÀndarens hemkatalog (om det behövs): # chcon -R -l s2:c100 /home/john
38. För att visa aktuella kategorier: # chcat -L
39. För att Àndra kategorier eller börja skapa dina egna, redigera filen enligt följande:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. SÄ hÀr kör du ett kommando eller skript i en specifik fil, roll och anvÀndarkontext:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tfilkontext-rrollkontext-uanvÀndarkontext
41. BehÄllare som körs med SE inaktiveratLinux:
- Podman:
# podman run --security-opt label=disable ⊠- Hamnarbetare:
# docker run --security-opt label=disable âŠ
42. Om du behöver ge en container fullstÀndig Ätkomst till systemet:
- Podman:
# podman run --privileged ⊠- Hamnarbetare:
# docker run --privileged âŠ
Och nu vet du redan svaret. SÄ snÀlla: fÄ inte panik och slÄ pÄ SELinux.
LĂ€nkar:
- by
- av Dan Walsh
- by
- by
KĂ€lla: will.com
