Henry Isakoff 🥕 Palvelinten Hallinta

| Palvelinten Hallinta | 3 min

Secuirell - SecOps työkalupakki

Kurssi kulminoituu pienprojektiin.

Eli Iljan kanssa mietimme, että jatkuvasti on tarvetta yksilölliselle kokonaisuudelle tietoturvatyökalujen parissa. Vaikka voisimme käyttää esimerkiksi Kalista omaa tyhjää kuvaa aina uudestaan, voisi olla hyödyllistä luoda keskitetty hallintajärjestelmä omille työkaluillemme.

Eli tähän Salt voisi olla täydellinen demo. Tätä varten siis loimme Secuirrel salt-kokonaisuuden.

Tavoitteet, periaatteet ja suunta

Meillä tässä tavoitteena on rakentaa ratkaisu joka noudattaa modernin keskitetyn hallinnan periaatteita. Kurssilla keskityimme Salttiin, niin käytämme tässä tuota. Jos projekti lähtee laajenemaan, jatkotavoitteet ovat myös Ansiblessa jolloin tarvetta ei olisi omalle binäärille pohjalla.

Kurssiin verrattuna pidimme tavoitteina seuraavia:

  • Infra koodina: Koko työaseman konfiguraatio – paketit, työkalut, asetukset ja käyttäjäkohtaiset säädöt – on määritelty koodina YAML-tiedostoissa. Tämä tekee ympäristöstä versiohallittavan ja läpinäkyvän. Git-repositorio on "yksi totuus" siitä, miltä koneen kuuluu näyttää.
  • Idempotenssi: Konfiguraation voi ajaa uudelleen ja uudelleen. Salt varmistaa, että vain tarvittavat muutokset tehdään, eikä mitään hajoa tai asenneta kahteen kertaan. Tämä on merkittävä parannus perinteisiin shell-skripteihin, jotka suorittavat komennot sokeasti joka kerta.
  • Modulaarisuus ja laajennettavuus: Projektin rakenne on jaettu loogisiin kategorioihin (forensiikka, web, reverse ym). Tämä tekee uusien työkalujen lisäämisestä ja vanhojen ylläpidosta helppoa. Ainakin teoreettisesti.

Jo tässä parin päivän rakennuksessa saimme aika laajasti nämä tehtyä. Sain myös omat tekniset pohjarakenteet tehtyä. Josta.

Toteutus ja arkkitehtuuri

Projekti on rakennettu SaltStack-tiloilla (states). Pääohjaustiedosto (top.sls) kutsuu ctf_box-nimistä tilaa, jonka init.sls-tiedosto orkestroi kaiken muun.

  • Rakenne: Asetukset on jaettu kategorioihin, kuten forensics/, reverse/, web/ ja cracking/. Jokaisella kategorialla on oma init.sls-tiedosto, joka sisällyttää kyseisen kategorian työkalut.
  • Logiikka: Jinja2 käytin dynaamisesti luomaan konfiguraatioita ja hallitsemaan Salttia ja sen suoritusta. Esimerkiksi pillar-datan avulla voidaan asentaa vain tietyt kategoriat tai aktivoida käyttäjäkohtainen profiili.

Tämä jäi vielä kovin kesken, mutta laajennettavuus näkyy jo nyt.

Otimme omista käyttökokemuksista ja tarpeista työkalut tähän demoon. Näitä pystyy laajentamaan sitä mukaan kun tarpeet kasvaa.

  • Rinnakkaiset Työkaluversiot: Asentaa Binwalk v2:n ja Binwalk v3:n rinnakkain komentoina binwalk2 ja binwalk.

Binwalk hyvä esimerkki jossa uudemman ja vanhemman välillä on niin suuri ero, että kiva pitää molemmat lähellä.

  • Monimutkaiset Asennukset: Hoitaa monivaiheiset asennukset, kuten Ghidran (JDK-riippuvuus, purku, oikeuksien hallinta) ja Pwndbgn (virallinen asennusskripti).

Ideana oli tottakai saada myös ghidra vaikka debianiinkin pohjalle.

Mukana myös demossa sitten omat henkilökohtaiset tarpeet (esimerkiksi Oh-my-posh ym). Ne helppo lisätä kokonaisuuteen.

Gitistä löytyy tekeleemme.

Secuirell

Kommentit

Tässä n 10h teon aikana tuli opittua todella paljon saltstackista ja jinja2 toimintalogiikasta. Itse pidän paljon haasteista ja nyt jo näen paljon mitä tekisin eri tavalla. Saltin vahvuus on kuitenkin siinä, että yksittäin tehtyjä asioita saadaan kasattua monimutkaiseen kokonaisuuteen.

Veikkaan, että tämä ajatus on juuri tämän kurssin hedelmä!

Lähteet

Secuirell https://github.com/ilpakka/secuirrel/tree/main

Käytetty aika: n 10h miniprojektin tekoon. Valtaosa ajasta jinjan ymmärrykseen ja ensimmäisen ison binwalk kokonaisuuden tekoon. Seuraavat helpottuivat huomattavasti.