ProHoster > Blog > administrasie > SELinux cheat sheet vir stelsel administrateurs: 42 antwoorde op belangrike vrae
SELinux cheat sheet vir stelsel administrateurs: 42 antwoorde op belangrike vrae
Die vertaling van die artikel is spesifiek vir die studente van die kursus voorberei "Linux Administrateur".
Hier kry jy antwoorde op belangrike vrae oor die lewe, die heelal en alles in Linux met verbeterde sekuriteit.
"Die belangrike waarheid dat dinge nie altyd is wat dit lyk nie, is algemene kennis ..."
- Douglas Adams, Die Hitchhiker's Guide to the Galaxy
Veiligheid. Verhoogde betroubaarheid. Korrespondensie. Beleid. Four Horsemen of the Apocalypse sysadmin. Benewens ons daaglikse take - monitering, rugsteun, implementering, konfigurasie, opdatering, ens. - is ons ook verantwoordelik vir die sekuriteit van ons stelsels. Selfs daardie stelsels waar die derdeparty-verskaffer aanbeveel dat ons verbeterde sekuriteit deaktiveer. Dit voel soos werk Ethan Hunt uit "Mission: Impossible."
Gekonfronteer met hierdie dilemma, besluit sommige stelseladministrateurs om te neem blou pil, want hulle dink hulle sal nooit die antwoord op die groot vraag van die lewe, die heelal en dit alles weet nie. En soos ons almal weet, is daardie antwoord 42.
In die gees van The Hitchhiker's Guide to the Galaxy, is hier 42 antwoorde op belangrike vrae oor beheer en gebruik. SELinux op jou stelsels.
1. SELinux is 'n gedwonge toegangsbeheerstelsel, wat beteken dat elke proses 'n etiket het. Elke lêer, gids en stelselvoorwerp het ook byskrifte. Beleidreëls beheer toegang tussen gemerkte prosesse en voorwerpe. Die kern dwing hierdie reëls af.
2. Die twee belangrikste konsepte is: etikettering — merke (lêers, prosesse, poorte, ens.) en Tik handhawing (wat prosesse van mekaar isoleer op grond van tipes).
4. Die doel van die verskaffing van multi-vlak sekuriteit (Multi-Level Security - MLS) is om prosesse (domeine) te bestuur gebaseer op die vlak van sekuriteit van die data wat hulle sal gebruik. Byvoorbeeld, 'n geheime proses kan nie hoogs geheime data lees nie.
6. Kernelopsies vir die verandering van SELinux-modusse tydens opstart:
autorelabel=1 → veroorsaak dat die stelsel heretikettering uitvoer
selinux=0 → die kern laai nie die SELinux-infrastruktuur nie
enforcing=0 → laai in permissiewe modus
7. As jy die hele stelsel moet herbenoem:
# touch /.autorelabel
#reboot
As die stelselmerk 'n groot aantal foute bevat, moet jy dalk in permissiewe modus selflaai om hermerking te slaag.
8. Om te kyk of SELinux geaktiveer is: # getenforce
9. Om SELinux tydelik te aktiveer/deaktiveer: # setenforce [1|0]
10. Gaan SELinux-status na: # sestatus
11. Konfigurasie lêer: /etc/selinux/config
12. Hoe werk SELinux? Hier is 'n voorbeeldmerk vir die Apache-webbediener:
Binêre voorstelling: /usr/sbin/httpd→httpd_exec_t
Konfigurasiegids: /etc/httpd→httpd_config_t
Loglêergids: /var/log/httpd → httpd_log_t
Inhoud gids: /var/www/html → httpd_sys_content_t
Begin skrip: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
proses: /usr/sbin/httpd -DFOREGROUND → httpd_t
Hawens: 80/tcp, 443/tcp → httpd_t, http_port_t
Proses loop in konteks httpd_t, kan interaksie hê met 'n benoemde voorwerp httpd_something_t.
13. Baie opdragte aanvaar 'n argument -Z om konteks te sien, te skep en te verander:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Konteks word gevestig wanneer lêers geskep word gebaseer op die konteks van hul ouergids (met enkele uitsonderings). RPM's kan kontekste vestig soos tydens installasie.
14. Daar is vier hoofoorsake van SELinux-foute, wat in meer besonderhede in punte 15-21 hieronder beskryf word:
Etikettering kwessies
As gevolg van iets wat SELinux moet weet
Fout in SELinux-beleid/toepassing
Jou inligting kan gekompromitteer word
15.Etikettering probleem: as jou lêers in is /srv/myweb verkeerd gemerk is, kan toegang geweier word. Hier is 'n paar maniere om dit reg te stel:
As jy die etiket ken: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
As jy 'n lêer met ekwivalente merke ken: # semanage fcontext -a -e /srv/myweb /var/www
Herstel van die konteks (vir beide gevalle): # restorecon -vR /srv/myweb
16.Etikettering probleem: as jy die lêer skuif in plaas daarvan om dit te kopieer, sal die lêer sy oorspronklike konteks behou. Om hierdie probleem op te los:
Verander die konteks opdrag met die etiket: # chcon -t httpd_system_content_t /var/www/html/index.html
Verander die konteks opdrag met die skakel etiket: # chcon --reference /var/www/html/ /var/www/html/index.html
Herstel die konteks (vir beide gevalle): # restorecon -vR /var/www/html/
17. As SELinux wat jy moet weetdat HTTPD op poort 8585 luister, vertel SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux wat jy moet weet Boole-waardes wat toelaat dat dele van die SELinux-beleid tydens looptyd verander word sonder dat kennis van die SELinux-beleid oorskryf word. Byvoorbeeld, as jy wil hê httpd moet e-pos stuur, voer in: # setsebool -P httpd_can_sendmail 1
19.SELinux wat jy moet weet logiese waardes om SELinux-instellings te aktiveer/deaktiveer:
Om alle Boolese waardes te sien: # getsebool -a
Om 'n beskrywing van elk te sien: # semanage boolean -l
Om 'n Boolese waarde te stel: # setsebool [_boolean_] [1|0]
Vir 'n permanente installasie, voeg by -P. Byvoorbeeld: # setsebool httpd_enable_ftp_server 1 -P
20. SELinux-beleide/-toepassings kan foute bevat, insluitend:
Ongewone kode paaie
Konfigurasies
Herlei tans standout
Lêerbeskrywing lek
Uitvoerbare geheue
Swak geboude biblioteke
Maak kaartjies oop (moenie 'n verslag by Bugzilla indien nie; Bugzilla het geen SLA nie).
21.Jou inligting kan gekompromitteer wordas jy beperkte domeine het wat probeer om:
Laai kernmodules
Deaktiveer gedwonge SELinux-modus
Skryf na etc_t/shadow_t
Verander iptables-reëls
22. SELinux-nutsgoed vir die ontwikkeling van beleidsmodules:
25. As 'n SELinux-fout voorkom, gebruik die logboek setroubleshoot bied verskeie moontlike oplossings.
Byvoorbeeld, van 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. Aanteken: SELinux teken inligting op baie plekke aan:
27. Teken: soek na SELinux-foute in die ouditlogboek:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Om SELinux Access Vector Cache (AVC) boodskappe vir 'n spesifieke diens te vind:
# ausearch -m avc -c httpd
29. Nuts audit2allow versamel inligting uit logs van verbode bedrywighede en genereer dan SELinux-toestemmingsbeleidreëls. Byvoorbeeld:
Om 'n mens-leesbare beskrywing te skep van hoekom toegang geweier word: # audit2allow -w -a
Om 'n tipe afdwingingsreël te sien wat toegang geweier toelaat: # audit2allow -a
Om 'n pasgemaakte module te skep: # audit2allow -a -M mypolicy
opsie -M skep 'n tipe afdwingingslêer (.te) met die gespesifiseerde naam en stel die reël saam in 'n beleidspakket (.pp): mypolicy.pp mypolicy.te
Om 'n pasgemaakte module te installeer: # semodule -i mypolicy.pp
30. Om 'n aparte proses (domein) op te stel om in permissiewe modus te werk: # semanage permissive -a httpd_t
31. As jy nie meer wil hê dat die domein permissief moet wees nie: # semanage permissive -d httpd_t
32. Om alle permissiewe domeine te deaktiveer: # semodule -d permissivedomains
33. Aktiveer MLS SELinux-beleid: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
Maak seker dat SELinux in permissiewe modus werk: # setenforce 0
Gebruik 'n skrif fixfilesom te verseker dat die lêers met die volgende herlaai herbenoem word:
# fixfiles -F onboot # reboot
34. Skep 'n gebruiker met 'n spesifieke MLS-reeks: # useradd -Z staff_u john
Gebruik die opdrag useradd, karteer die nuwe gebruiker na 'n bestaande SELinux-gebruiker (in hierdie geval, staff_u).
35. Om die kartering tussen SELinux- en Linux-gebruikers te sien: # semanage login -l
36. Definieer 'n spesifieke reeks vir die gebruiker: # semanage login --modify --range s2:c100 john
37. Om die gebruiker se tuisgids-etiket reg te stel (indien nodig): # chcon -R -l s2:c100 /home/john
38. Om huidige kategorieë te sien: # chcat -L
39. Om kategorieë te verander of jou eie te begin skep, wysig die lêer soos volg:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Om 'n opdrag of skrip in 'n spesifieke lêer, rol en gebruikerskonteks uit te voer: