Ero sivun ”Security-Enhanced Linux” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p hakemistorakenne lisätty, artikkelia päivitetty |
Lokien tarkastelu ja vianmääritys |
||
| (5 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
| Rivi 44: | Rivi 44: | ||
# cat /var/log/messages | grep "SELinux is preventing" | # cat /var/log/messages | grep "SELinux is preventing" | ||
=== | Nykyaikaisissa, erityisesti RHEL-pohjaisissa järjestelmissä, lokienhallinta tapahtuu [[systemd-journald]]-palvelun kautta. Lisäksi SELinux-kieltäytymisten analysointiin on olemassa tehokkaampia työkaluja: | ||
SELinuxissa on | |||
* [[journalctl]]: Moderni tapa tarkastella järjestelmälokeja. | |||
* [[sealert]] on osa [[setroubleshoot-server]] -pakettia, joka parsii kieltäytymiset ja antaa suoraan korjausehdotuksia (esim. tarvittavat audit2allow-komennot). | |||
* [[ausearch]] ja [[sealert]]: Parhaat työkalut SELinux-kieltäytymisten (denials) tutkimiseen. | |||
ausearch: etsii lokista tietyt SELinuxin kieltämät toiminnot. | |||
Esimerkiksi: | |||
ausearch -m AVC -ts recent | |||
=== Turvallisuuspolitiikat (Policy) === | |||
Toimintatilan lisäksi SELinuxissa on turvallisuuspolitiikka eli policy. Politiikkalajeja on kolme: | |||
* Strict | |||
* Targeted: Useimmissa jakeluissa käytetty politiikka, joka kohdistaa sääntöjä vain tietyille kriittisille palveluille. | |||
* Unconfined | |||
Monet Linux-komennot näyttävät SELinux-tiedot <tt>Z</tt>-vivulla. Esimerkiksi <tt>ps</tt> ja <tt>ls</tt>. | Monet Linux-komennot näyttävät SELinux-tiedot <tt>Z</tt>-vivulla. Esimerkiksi <tt>ps</tt> ja <tt>ls</tt>. | ||
=== Tiedostojen oikeudet === | === Tiedostojen ja prosessien oikeudet === | ||
SELinux lisää käyttöoikeuksiin uuden ulottuvuuden. Tiedostoilla ja prosesseilla on SELinux-konteksti, joka koostuu useista osista järjestyksessä: ''user:role:type:mls''. | |||
Ls-komento tarjoaa tuen näiden pääsyoikeuksien katselemiselle. Tiedostojen SELinux-oikeudet voi listata tällä komennolla: | |||
ls -Z | ls -Z | ||
| Rivi 58: | Rivi 73: | ||
ps axZ | ps axZ | ||
Vastaavasti tiedostojen oikeuksia pääsee muuttamaan <tt>chcon</tt>-komennolla: | Vastaavasti tiedostojen oikeuksia pääsee muuttamaan <tt>[[chcon]]</tt>-komennolla: | ||
chcon -u <user> -t <type> -r <role> <tiedosto> | chcon -u <user> -t <type> -r <role> <tiedosto> | ||
Esimerkiksi CentOS-järjestelmässä Apachelle voi antaa kirjoitusoikeuden uploads_dir-nimiseen kansioon: | Esimerkiksi CentOS-järjestelmässä Apachelle voi antaa kirjoitusoikeuden uploads_dir-nimiseen kansioon: | ||
chcon -t httpd_sys_rw_content_t uploads_dir | chcon -t httpd_sys_rw_content_t uploads_dir | ||
chcon tekee muutoksen, joka on vain väliaikainen (se ei säily tiedostojärjestelmän uudelleenmerkitsemisen jälkeen). Tuotantoympäristössä on oleellista käyttää työkaluja, jotka tallentavat muutokset SELinuxin politiikkatiedostoon. | |||
Pysyvään muutokseen tarvitaan semanage fcontext ja restorecon: | |||
* semanage fcontext: Määrittelee, mikä konteksti tiedostolla pitäisi olla. | |||
* restorecon: Soveltaa politiikassa määritellyn kontekstin tiedostoon. | |||
Esimerkiksi: | |||
<syntaxhighlight lang="bash"> | |||
# Määrittele polku pysyvästi | |||
# semanage fcontext -a -t httpd_sys_rw_content_t "/srv/www(/.*)?" | |||
# Sovella määritelty konteksti tiedostoihin | |||
# restorecon -Rv /srv/www | |||
</syntaxhighlight> | |||
Näin kansion SELinux-tyyppi muutetaan muotoon <tt>httpd_sys_rw_content_t</tt>. Nämä tyypit, kuten muutkin SELinux-asetukset ovat jakelukohtaisia. | Näin kansion SELinux-tyyppi muutetaan muotoon <tt>httpd_sys_rw_content_t</tt>. Nämä tyypit, kuten muutkin SELinux-asetukset ovat jakelukohtaisia. | ||
=== Lokien tarkastelu ja vianmääritys === | |||
SELinuxin kanssa työskennellessä haastavinta on usein ymmärtää, miksi jokin prosessi tai sovellus estetään ja miten tämä estyminen korjataan (eli miten politiikkaa muokataan). | |||
==== 1. SELinux-lokien sijainti ==== | |||
SELinux-tapahtumat kirjoitetaan Linuxin audit-järjestelmän kautta. | |||
* Lokitiedosto: Suurin osa SELinuxin estotapahtumista (AVC-kielto, "Access Vector Cache denied") kirjataan tiedostoon ''/var/log/audit/audit.log''. Vanhemmissa tai muissa jakeluissa lokit voivat löytyä myös tiedostosta'' /var/log/messages'' tai ''/var/log/syslog''. | |||
* Tärkeä avainsana: Lokiviestejä etsiessä kannattaa suodattaa avainsanalla ''SELINUX_ERR'' tai ''denied''. | |||
==== 2. Apuohjelmat lokien tulkintaan ==== | |||
Raakojen lokiviestien tulkitseminen on työlästä. Auditing-työkalut muuttavat nämä viestit luettavaan muotoon. | |||
* ausearch (Audit Search): Käytetään audit-lokitiedostojen selaamiseen ja suodattamiseen tiettyjen kriteerien perusteella, kuten SELinuxin kieltämien tapahtumien löytämiseen. | |||
Esimerkki: Haetaan kaikki SELinuxin kieltämät tapahtumat: | |||
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today | |||
* audit2why (Audit to Why): Ottaa raa'an lokiviestin syötteenä ja selittää, miksi SELinux esti kyseisen toiminnon. Tämä työkalu auttaa ymmärtämään, mikä politiikan sääntö (tai sen puute) aiheutti kiellon. | |||
Esimerkki: Koko lokitiedoston viestien muuntaminen selityksiksi: | |||
# cat /var/log/audit/audit.log | audit2why | |||
* audit2allow: Varoituksella käytettävä työkalu, joka ottaa lokiviestin ja generoi uuden SELinux-politiikkasäännön, joka sallisi estetyt toiminnot. Tätä työkalua käytetään yleensä viimeisenä keinona tai kun on täysin varma, että sovelluksen toiminnan salliminen on turvallista. Sitä tulisi käyttää harkiten, jotta turvallisuusjärjestelmän tarkoitus ei vesity. | |||
Esimerkki: Lokitietojen perusteella luodaan uusi politiikkamoduuli sallimaan estetyt toiminnot: | |||
# grep "denied" /var/log/audit/audit.log | audit2allow -M myapp_policy | |||
# semodule -i myapp_policy.pp | |||
==Aiheesta muualla== | ==Aiheesta muualla== | ||