Skip to content

Grsecurity – základní instalace

Grsecurity je sada patchů pro kernel, která má za cíl zvýšit zabezpečení jádra a systému, a to jak pro útoky zvenčí tak pro útoky zevnitř systému. Grsec se skládá z několika částí:

  • PaX – komponenta, která se stará o zabezpečení paměti. Snaží se zabránit útokům typu buffer overflow, provádí randomizaci paměti, aby útočník nemohl uhodnout, která část kódu se nachází na kterém místě paměti apod.
  • RBAC – role-based access control – umožňuje nastavit mnohem větší granularitu práv na linuxovém systému, než poskytuje klasický linuxový model. Díky němu je možné přiřadit procesům jen ty prostředky, které nezbytně potřebují pro svojí funkčnost. Seznam toho, co umí, je poměrně značný, asi nejblíže bych ho přirovnal k selinuxu.
  • Chroot – grsec zde značně vylepšuje vlastnosti a zabezpečení linuxového chrootu.

Na jednotlivé možnosti grsecu se podíváme blíže na screenshotech z instalace.

Krok 1 – stažení zdrojáků jádra
Na začátku je potřeba se podívat, jaké verze jádra jsou grsecem podporovány. Grsec vydává 2 verze patche. První je „stable“, která je určena pro stable větev kernelu dle kernel.org. Druhá verze je „testing“, kde grsec drží krok s nejnovějšími verzemi kernelu, většinou zaostává o jedno minor číslo z důvodu nutnosti patch přizpůsobit a otestovat, což ve finále ničemu nevadí.

Zdrojáky jádra stáhneme např. na kernel.org, já jsem stáhnul 3.12.8 tzn. že budu potřebovat testing verzi grsecu.

Krok 2 – stažení grsec patche
Patch stáhneme na stránkách grsecu podle verze, kterou potřebujeme.

Obojí uložíme například do /usr/src a kernel rovnou rozbalíme.
V mém případě mám tedy uloženy dva soubory:

linux-3.12.8.tar.xz
grsecurity-3.0-3.12.8-201401251521.patch

 

Pomocí tar xf linux-3.12.8.tar.xz rozbalíme zdrojáky a do vytvořeného adresáře nahrajeme grsec patch a provedeme jeho aplikaci.

patch -p1 < grsecurity-3.0-3.12.8-201401251521.patch

Tímto máme zdrojáky jádra obohacené o funkce grsecu. Jádro ale nemůžeme začít rovnou kompilovat, protože žádná z funkcí grsecu není v jádře defaultně zapnuta. Je tedy potřeba spustit konfiguraci jádra a potřebné volby si zapnout. Pro konfiguraci jádra budeme potřebovat mít v systému nainstalovány aplikace gcc, gcc-<ver>-plugin-dev, g++, make a libncurses5-dev (týká se debianu, v jiných distrech se může název mírně lišit). Nyní se pomocí make menuconfig dostaneme do nastavení paramentrů jádra.
01_make_menuconfig

V sekci Security options nám přibyla podsekce Grsecurity.
02_grsec

Máme zde možnost zvolit Configuration Method. Dostaneme na výběr mezi serverem a desktopem. Já si tedy zvolím např. server a tím se provede konfigurace za mě. Je potřeba promyslet, které volby jsou pro nás užitečné a vhodné. Pokud například zakážeme autoloading modulů a používáme initrd, jádro nenajede. Pokud si tedy necháme grsec nakonfigurovat automaticky, nezbývá než uložit konfiguraci a zkompilovat jádro. Samozřejmě vzhledem k tomu, že v jádře jsou defaultně zapnuty volby, které na serveru nejsou potřeba – např. drivery pro audio, bluetooth apod. – můžeme tyto volby vyhodit a urychlit tím kompilaci jádra. Další věc je, že pokud použijete testing patch, jádro nemusí najet, což se stává poměrně často, a to i pokud používáte automatickou konfiguraci. Pokud se kompilace zdaří, nezapomeneme na initrd a pak můžeme systém restartovat. Nové jádro se nám pak ukáže jako <ver>-grsec.

A jak se nyní systém chová? Zkusíme se mrknout jako klasický user:

  • zakázaný přístup k dmesg
  • user vidí jen svoje procesy
  • zakázaný přístup k výpisu modulů
  • zakázaný přístup k výpisu hardwaru
  • a mnoho dalších featur 🙂

 

trepliev@pax:~$ dmesg
dmesg: volání klogctl selhalo: Operace není povolena
trepliev@pax:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
trepliev  2510  0.0  0.1  71200  1668 ?        S    15:37   0:00 sshd: trepliev@pts/0
trepliev  2511  0.0  0.3  19608  3316 pts/0    Ss   15:37   0:00 -bash
trepliev  2593  0.0  0.1  15800  1400 pts/0    R+   15:39   0:00 ps aux
trepliev@pax:~$ lsmod
libkmod: ERROR ../libkmod/libkmod-module.c:1567 kmod_module_new_from_loaded: could not open /proc/modules: Permission denied
Error: could not get list of modules: Permission denied
trepliev@pax:~$ lspci
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.

Zde zaříznutý přístup k symlinkům v /tmp patřící jinému uživateli:

kitt@pax:~$ /tmp/trep.sh
-bash: /tmp/trep.sh: Operace zamítnuta

Grsec se hodí například na zabezpečení webserverů či dalších služeb spojených s větším bezpečnostním rizikem (viz jeden z mých předchozích blogů).

To je pro dnešek vše. RBAC a další sepíšu opět až bude více času. Jen poslední poznámka. Jádro je nutno patchovat, protože grsec není součástí vanilla jádra. Linusu Torvaldsovi se nelíbí některé techniky, které jsou v patchi použity. Více na LKLM.

2 thoughts on “Grsecurity – základní instalace

  1. Pingback: Pozadí a moje plocha v průběhu let « LinuxWay - Blog

  2. Pingback: Shell – omezení příkazů pro uživatele « LinuxWay - Blog

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload the CAPTCHA.