Master's Thesis

Automated auditing tool for Unix operating systems

Final Thesis 2.27 MB

Author of thesis: Bc. Branislav Kadlec

Acad. year: 2025/2026

Supervisor: Ing. Karel Kuchař, Ph.D.

Reviewer: Ing. Petr Blažek, Ph.D.

Abstract:

This thesis deals with the design and implementation of a modular automated tool for security auditing of Unix operating systems. The tool is implemented in two versions, namely in Python and Bash, with both versions enabling the execution of identical audit processes in local mode and, in the case of the Python version, also in remote mode via SSH. The theoretical part of the thesis analyzes current security requirements for operating systems and describes mechanisms of mandatory access control with a focus on SELinux and AppArmor, and provides a comparative analysis of existing auditing tools such as Lynis, OpenSCAP, Tiger, Rkhunter, and Chk-rootkit. The theoretical part also includes an analysis of the NIS2 directive and its practical implications for organizations operating Unix systems. The practical part of the thesis describes a design for a modular tool architecture with a central control script, main.py, and a class EnumerationFramework, which ensures the dynamic loading of test modules, their sequential execution, and the collection of results. The tool includes 23 implemented test modules in Python and Bash, covering ten thematic categories, including network security, user account management, kernel hardening, disk encryption, and logging configuration. The audit output is a structured report in JSON format containing identified deficiencies, recommendations for remediation, and normalized severity of findings and a numerical assessment of the overall security status. The functionality of the proposed solution was verified in an experimental setup consisting of a pair of virtualized machines in a VMware environment, where a real-world security audit scenario was simulated, including remote testing of an industrial RTU device. Measurements demonstrated that during a local audit, the tool causes a short-term increase in RAM usage of 4 to 4.5 percentage points with a baseline of around 39%, while CPU load remains negligible throughout the entire run. The total amount of data transferred during the remote audit remained under 1 MB, confirming the tool’s usability even in resource-constrained industrial environments.

Keywords:

security audit, Unix operating systems, automation, modular architecture, NIS2, SELinux, AppArmor, Python, Bash, hardening

Date of defence

09.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaCznamka

Grading

C

Process of defence

Student prezentoval výsledky své práce a komise byla seznámena s posudky. Otázky oponenta: - Zadání požaduje, aby bylo možné provádět audit skrze obě implementace. Můžete doložit výsledky auditu provedeného Bash verzí a vysvětlit, čím se výstup liší od verze Python, případně proč všechna měření a ukázky reportů vycházejí pouze z Python implementace? - V demonstrovaném běhu se spustilo pouze 22 z 23 testů. Můžete uvést, kolik testů a kategorií nástroj reálně obsahuje a co bylo příčinou, že se test passwordPolicyCheck v reportu neobjevil? - Bodové hodnocení vychází ze vzorce n×4 s penalizacemi podle závažnosti. Na základě, čeho byly zvoleny základní hodnota i jednotlivé penalizační váhy a jak je zajištěna srovnatelnost skóre mezi audity s odlišným počtem vykonaných testů? Student obhájil diplomovou práci s výhradami a odpověděl na otázky členů komise a oponenta.

Language of thesis

Slovak

Faculty

Department

Study programme

Communications and Informatics (MPC-TIT)

Composition of Committee

doc. Ing. Petr Mlýnek, Ph.D. (předseda)
doc. Ing. Martin Vaculík, Ph.D. (místopředseda)
doc. Ing. Pavel Šilhavý, Ph.D. (člen)
doc. Ing. Martin Kyselák, Ph.D. (člen)
Ing. Rudolf Vohnout, Ph.D. (člen)
Ing. Pavel Bezpalec, Ph.D. (člen)
Ing. Lukáš Benešl, Ph.D. (člen)
Jakub Lešinský (člen)
Ing. Viet Anh Phan (člen)

Supervisor’s report
Ing. Karel Kuchař, Ph.D.

Práce je členěna do dvou hlavních kapitol, s rozsahem 89 stran. Z formálního hlediska práce obsahuje gramatické a typografické nedostatky, místy se v práci objevují neodborné výrazy, text je místy méně přehledný. Některé obrázky nejsou vektorové. Práce využívá celkem 24 zdrojů, kde je využita zejména odborná literatura a webové odkazy na nástroje. Práce je zaměřena na vytvoření automatizovaného auditovacího nástroje ve dvou implementacích (Python a Bash). Validace představená v kapitole 2 byla provedena na virtualizovaném a reálném průmyslovém zařízení. Student navrhl a vypracoval nástroj zpracovávající celkem 23 testů z 10 definovaných kategorií. Zadání práce považuji za splněné. Student vypracoval obě implementace nástroje (Python a Bash), kde pouze skrze Python implementaci je možné provádět vzdálené testování. Z pohledu praktického zpracování je práce na velmi dobré úrovni a výsledky jsou využitelné v praxi, jejich prezentace však snižuje celkovou úroveň, kde např. obr. 2.6 má popis y-onové osy odlišný s titulkem obrázku; na str. 65 dochází k přetékání textu mimo stránku atp. Student byl během semestru aktivní a pravidelně konzultoval. Na základě výše zmíněného doporučuji práci k obhajobě s bodovým hodnocením B, 82 bodů. Points proposed by supervisor: 82

Grade proposed by supervisor: B

Reviewer’s report
Ing. Petr Blažek, Ph.D.

Předložená diplomová práce o 89 stranách včetně příloh je členěna do dvou kapitol. Teoretická část (kap. 1) shrnuje problematiku informační bezpečnosti, Unixových systémů, mechanismů MAC (SELinux, AppArmor), bezpečnostních rámců (ISO/IEC 27001, CIS, NIS2) a vybraných auditních nástrojů (Lynis, OpenSCAP, Tiger, Rkhunter, Chkrootkit). Praktická část (kap. 2) popisuje architekturu nástroje, implementované testy, strukturu reportů a systém hodnocení. Funkčnost je ověřena na dvou virtuálních strojích a na vzdáleném auditu RTU přes SSH.
Výhradu k práci mám k nekonzistentnímu popisu počtu testů a kategorií, které student definuje, kde počet testů kolísá mezi „10“ a „23“ a u kategorií mezi sedmi a deseti.
Další výhradu mám k požadavku zadání auditovat skrze obě implementace, všechna měření a reporty vycházejí z Python verze a Bash implementace není doložena jediným výstupem. Autor navíc v kap. 2.3 sám uvádí, že pro Bash verzi textový report v požadovaném rozsahu a část kategorií „budú predmetom finálneho dopracovania“.
Dále interpretace výsledků testování je chaotická, obr. 2.6 má popisek jako „Využitie CPU“, ale osa Y zobrazuje RAM, a osa obr. 2.7 nese jednotku „b/s“, přestože vynesené hodnoty spíše odpovídají paketům za sekundu, nikoli bitové propustnosti vzhledem k popisu v textu.
Formálně práce obsahuje řadu chyb – nestandardní číslování (2.0.1–2.0.4), nesoulad adres pracoviště (obr. 2.3 vs. text), nejednotné přípony souborů .py/.sh v tab 2.1 a 2.2, překlepy, přetékání textu. V literatuře je uvedeno 24 zdrojů, což je průměrný počet a jejich použití je korektní.
Přes výše uvedené nedostatky je samotná aplikace ve verzi Python funkční a z větší části i ve verzi pro Bash, a proto hodnotím cíle práce jako splněné a doporučuji práci k obhajobě s hodnocením D/65 bodů. Topics for thesis defence:
  1. Zadání požaduje, aby bylo možné provádět audit skrze obě implementace. Můžete doložit výsledky auditu provedeného Bash verzí a vysvětlit, čím se výstup liší od verze Python, případně proč všechna měření a ukázky reportů vycházejí pouze z Python implementace?
  2. V demonstrovaném běhu se spustilo pouze 22 z 23 testů. Můžete uvést, kolik testů a kategorií nástroj reálně obsahuje a co bylo příčinou, že se test passwordPolicyCheck v reportu neobjevil?
  3. Bodové hodnocení vychází ze vzorce n×4 s penalizacemi podle závažnosti. Na základě, čeho byly zvoleny základní hodnota i jednotlivé penalizační váhy a jak je zajištěna srovnatelnost skóre mezi audity s odlišným počtem vykonaných testů?
Points proposed by reviewer: 65

Grade proposed by reviewer: D

Responsibility: Mgr. et Mgr. Hana Odstrčilová