Skip to content

Libux v1.0.0 — Package manager + hardening

Choose a tag to compare

@Forbelskym22 Forbelskym22 released this 21 Apr 14:20
· 20 commits to main since this release

First stable release. Scope z roadmapy je kompletní (všech 10 feature modulů), plus přibyl správce balíčků a rozsáhlé bugfixy/hardening napříč kódem.

New

  • Package manager (Packages v hlavním menu) — instalace a odinstalace podporovaných služeb z jedné obrazovky: apache2, openssh-server, mariadb-server, phpmyadmin, isc-dhcp-server, iptables-persistent
  • Tři pohledy: Status / Install / Remove (multi-select)
  • Purge běží v DEBIAN_FRONTEND=noninteractive, aby mariadb-server a phpmyadmin nevisely na debconf promptech
  • apt-get autoremove -y po odinstalaci čistí osiřelé závislosti

Bug fixes

  • SSH install teď po apt install volá systemctl enable --now ssh, takže služba sama naběhne a přežije reboot
  • SSH config změny (Port / PermitRootLogin / PasswordAuthentication / MaxAuthTries / AllowUsers / DenyUsers) se automaticky aplikují — už nevidíš vyřešený config a nefunkční SSH
  • authorized_keys se teď vytváří pod cílovým uživatelem (sudo -u <user>) — sshd StrictModes je dřív tiše odmítal, protože byly vlastněné rootem
  • iptables-persistent detekce: kontroluje se netfilter-persistent, ne iptables-restore (ten je součástí base iptables a check nikdy netrigoval instalaci)

Hardening

  • sshd -t validace před aplikací každé změny — rozbitý config se na server nikdy nenapíše, žádné lockouty
  • Atomický zápis sshd_config (tempfile v adresáři + os.replace(), zachovává mode/uid/gid) — Ctrl+C během zápisu už configy nerozbije
  • Shell injection v modules/ssh/keys.py opraven — obsah klíče i souboru jde přes stdin, ne přes interpolaci do bash -c
  • Validace usernamu (POSIX regex) a filenamu pro ssh-keygen (žádná /, .. ani leading -)

Polish

  • Jednotný utils.is_pkg_installed() ve všech modulech — používá dpkg-query -W -f='${Status}' + check install ok installed, takže po apt remove (bez purge) už se balíček nezobrazuje jako nainstalovaný
  • main.py dispatch přes (label, callback) tabulku místo if/elif řetězce podle indexu — přidání další položky nerozbije routing
  • remove_key matchuje klíče přes index z menu, ne přes options.index(label) — duplicitní labely už nevedou ke smazání špatného klíče

Compatibility

  • MariaDB < 10.4 (Debian 10 buster, MariaDB 10.3) — Set root password nejprve zkusí moderní IDENTIFIED VIA unix_socket OR mysql_native_password, při ERROR 1064 fallback na SET PASSWORD FOR 'root'@'localhost'
  • simple-term-menu zamčen na >=1.6,<2 — verze 2.x měnila API preselected_entries / multi_select_select_on_accept

Requirements

  • Python 3.x
  • Debian (testováno na 11, 12, 13)
  • Root permissions

Install

sudo ./Libuxv1.0.0