SELinuxin tutkiminen jatkuu

Lauantain puurtamista

Nyt on lauantai 17.03.2018. Olen jatkanut SELinuxin tutkimista, mutta aloitin jo iltapäivällä kirjoittamalla hyvin pienen TCP-serverin Linuxiin. Laitoin TCP-serveriin tahallani takaportin demonstraation vuoksi, jotta voisin näyttää kuinka SELinuxin policyn avulla on mahdollista rajoittaa kaikenlaisia prosesseja Linuxissa, mukaanlukien tämä ilkeämielinen daemon.

Annoin ohjelmalle nimeksi bddaemon, joka on lyhenne sanoista "backdoored demonstration daemon" eli "takaportitettu demonstraatio demoni". Demoni ei siis tee yhtään mitään järkevää. Se vain kuuntelee localhostin (IPv4 osoite 127.0.0.1) vapaavalintaista porttia ja vastaa käskyyn "hi" vastauksella "hello". Mutta jos sille antaa käskyksi "howdy", se ajaakin /bin/bash komentotulkin ja yhdistää sen file descriptorit bddaemonin verkkoliikennettä kuljettavaan sockettiin eli verkkopistokkeeseen. Takaportti on siis se, että tämä tervehdyksiin vastaava daemoni antaakin pääsyn järjestelmään jos joku tietää tervehtiä sitä "howdy" eikä "hi"!

SELinuxin policyn avulla voimme hyvin suurella tarkkuudella määrittää mitä bddaemon saa tehdä Linuxissa. Ne asiat, joita policyssä ei ole sallittu, SELinux automaattisesti kieltää.

Userspacen puoli SELinuxissa on aika järkyttävä viidakko koodia ja skriptejä, sen olen tänään todennut. Olen tutkinut tuntikausia miten saisin lisättyä Fedora Linux 27:n SELinuxin targeted policyyn omat sääntöni tälle bddaemonille. RPM-pakettia muodostetaan juuri, mutta en ole varma onnistuinko. Yritän kohta asentaa oman selinux-policy-targeted pakettini ja katson toimiiko se. En ole kovin luottavainen asian suhteen.

Kokeilujani teen VirtualBoxin alaisuudessa eli siis virtuaalikoneessa. En halua sotkea fyysisen läppärini Fedora Linux 27:aa sorkkimalla SELinuxin policyä.

No niin, kello on nyt 18:40 ja reboottasin äsken virtuaalikoneeni Fedora Linux 27:n. SELinux-kokeiluni ei onnistunut!

Sääntöni ei mennyt perille /etc/selinux/targeted/policy/policy.31 policy-tiedostoon. Testasin grep-komennolla, että esimerkiksi merkkijono "apache" tuosta binäärimöykystä löytyy, samoin "ejabberd", mutta ei "bddaemon", joka oli oman daemonini nimi. Jotain siis meni pieleen kuten jo osasin arvellakin. Pitää jatkaa tutkimuksia.

Sunnuntaina homma viimein toimii

Aika paljon aikaa ja vaivaa vaadittiin ja nyt on sunnuntai 18.03.2018 klo 19:27. Sain lopulta SELinux-hommani toimimaan kuten halusin, mutta päätin jättää koodianalyysin toiseen artikkeliin. Eli en jaksanut enää tässä artikkelissani lähteä kaivamaan syvempiä tietoja SELinuxin sielunelämästä.

Englanninkielisen SELinux-artikkelini löydät tästä linkistä.