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"


=== SELinuxin toiminta ===
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 toimintatilan lisäksi myös turvallisuuspolitiikka, englanniksi policy. Politiikkalajeja on kolme: **Strict**, **Targeted** ja **Unconfined**.
 
* [[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 ===
SELinuxin avulla voidaan rajoittaa tiedostojen pääsyoikeuksia hienovaraisemmin kuin Unixin tavallisilla käyttöoikeuksilla. Ls-komento tarjoaa tuen näiden pääsyoikeuksien katselemiselle. Tiedostojen SELinux-oikeudet voi listata tällä komennolla:
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==