Ero sivun ”Security-Enhanced Linux” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Lokien tarkastelu ja vianmääritys |
|||
| (6 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
| Rivi 1: | Rivi 1: | ||
{{Hakemistorakenne}} | |||
{{Ohjelma | {{Ohjelma | ||
| nimi= | | nimi = Security-Enhanced Linux | ||
| kuva= | | logo = | ||
| kuvateksti= | | kuva = | ||
| lisenssi=[[GPL]] | | kuvateksti = | ||
| käyttöliittymä=teksti | | tekijä = [[wikipedia:fi:NSA|NSA]] ja [[Red Hat]] | ||
| kotisivu=[http://selinuxproject.org/ selinuxproject.org] | | kehittäjä = Red Hat | ||
| lisenssi = [[GPL]] | |||
| käyttöliittymä = teksti | |||
| kotisivu = [http://selinuxproject.org/ selinuxproject.org]<br><li>[https://web.archive.org/web/20201022103915/https://www.nsa.gov/what-we-do/research/selinux/ nsa.gov/what-we-do/research/selinux/]{{InternetArchive}} | |||
| lähdekoodi = https://github.com/SELinuxProject/selinux | |||
}} | }} | ||
''' | '''Security-Enhanced Linux''' (''SELinux'') on [[wikipedia:fi:NSA|NSA]]:n kehittämä turvallisuusjärjestelmä, joka rajoittaa ohjelmien toimintaoikeuksia niille kirjoitettujen sääntöjen mukaan. Tarkoituksena on estää ohjelmia suorittamasta vaarallisia toimintoja, joko tarkoituksella tai esimerkiksi puskuriylivuotojen kautta. SELinux on käytössä useimmissa [[Fedora Linux]]-pohjaisissa jakeluissa, kuten [[RHEL]]- ja [[Rocky Linux]] -jakeluissa. | ||
==Käyttö== | ==Käyttö== | ||
| Rivi 39: | 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 53: | 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== | ||
*[ | *[https://fedoraproject.org/wiki/SELinux SELinux Fedoran wikissä] | ||
*[https://wiki.centos.org/HowTos/SELinux CentOS SELinux HOWTO] | *[https://wiki.centos.org/HowTos/SELinux CentOS SELinux HOWTO] | ||
*[https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf SELinux värityskirja] - Ohjelman toiminta yksinkertaisesti selostettuna värityskirjan muodossa | *[https://people.redhat.com/duffy/selinux/selinux-coloring-book_A4-Stapled.pdf SELinux värityskirja] - Ohjelman toiminta yksinkertaisesti selostettuna värityskirjan muodossa | ||