FAQ – Velká příručka bezpečnosti logo

OS Linux


► Obsah

OS Linux pro pokročilé

Linux se díky svému minoritnímu zastoupení na desktopech v porovnání s OS Windows těší řádově menší pozornosti hackerů – většina malware pro Linux je směřována pouze na servery. Malware pro desktopové linuxové distribuce také existuje, akorát v mnohonásobně menším množství. Ačkoliv je tedy stav mnohých desktopových linuxových distribucí z pohledu bezpečnosti tristní, v praxi je riziko infikace nižší nežli u jiných OS. Moderní exploit kity jsou ovšem často multiplatformní a jejich počet roste. Dostatečné zabezpečení OS je proto nezbytné.

Tato kapitola využívá distribuci Arch Linux.

Tato část příručky počítá s tím, že jste pročetli kapitolu OS Linux pro méně pokročilé a máte minimálně znalosti v kapitole rozebírané.

Sekce kapitoly:


Základní bezpečnostní nastavení:

Sudo:

/etc/sudoers
-----------------------------------

Defaults   !visiblepw
Defaults    always_set_home
Defaults    match_group_by_gid
Defaults    always_query_group_plugin

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Defaults    secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Defaults    use_pty

root        ALL=(ALL)    ALL
uživatel    ALL=(ALL)    ALL

Uzamknutí roota:

sudo passwd -l root




Ochrana proti malware:

Firewall:

Pro běžné počítače stačí zakázat forward chain a bezpečně nastavit input. Nejjednodušší konfiguraci pro ipv4/6 nabízí nftables. Aplikační FW lze implementovat skrz MAC.

► Příklad pravidel pro běžný počítač
/etc/nftables.conf
-----------------------------------

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state invalid drop
        ct state established,related accept
        iif "lo" accept
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

MAC:

MAC se stal důležitou součástí bezpečnostního modelu linuxových distribucí. Implementací existuje více.

SELinux je velmi robustní implementace MAC využívána např. distribucí Fedora nebo OS Android. AppArmor je implementace MAC poskytující nižší úroveň ochrany než SELinux (mj. neumí omezit ioctl) využívána distribucemi openSUSE či Ubuntu. TOMOYO Linux je zajímavou méně známou alternativou, poskytující vyšší úroveň ochrany než AppArmor a zároveň nabízející mnohem jednodušší konfiguraci nežli SELinux.

Na Arch Linux lze bez problému provozovat TOMOYO nebo AppArmor, přičemž pro TOMOYO není třeba kompilovat vlastní kernel. SELinux je o něco složitější.

► Instalace TOMOYO Linux

Info
TOMOYO Linux není příliš rozšířený MAC a velmi těžko někde naleznete profily pro aplikace. Budete si je tedy muset sami vytvořit (příp. přepsat z AppArmor profilů – ty jsou všude). Dokumentaci naleznete zde.

  • Povolte TOMOYO Linux v GRUB:
  • /etc/default/grub
    -----------------------------------
    
    GRUB_CMDLINE_LINUX_DEFAULT="quiet security=tomoyo TOMOYO_trigger=/usr/lib/systemd/systemd"
  • Aktualizujte GRUB (grub-mkconfig -o /boot/grub/grub.cfg).
  • Nainstalujte tomoyo-tools:
  • sudo pacman -S gnupg
    gpg --recv-keys 43C83369623D7AD3A96C2FC7425F128D0C64F52A
    git clone https://aur.archlinux.org/tomoyo-tools.git
    cd tomoyo-tools
    gedit PKGBUILD
  • Zkontrolujte instrukce a spusťte instalaci:
  • makepkg -si
  • Restartujte OS.
► Použití TOMOYO Linux jako aplikační FW
  • Po úspěšné instalaci a restartu OS inicializujte TOMOYO:
  • sudo /usr/lib/tomoyo/init_policy
  • Následně upravte pravidla TOMOYO:
  • /etc/tomoyo/policy/current/profile.conf
    -----------------------------------
    
    PROFILE_VERSION=20110903
    0-COMMENT=-----Disabled Mode-----
    0-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 }
    0-CONFIG={ mode=disabled grant_log=no reject_log=yes }
    0-CONFIG::network::unix_stream_bind={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_stream_listen={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_stream_connect={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_dgram_bind={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_dgram_send={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_seqpacket_bind={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_seqpacket_listen={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network::unix_seqpacket_connect={ mode=disabled grant_log=no reject_log=no }
    0-CONFIG::network={ mode=enforcing grant_log=no reject_log=yes }
    1-COMMENT=-----Disabled Mode (net access)-----
    1-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 }
    1-CONFIG={ mode=disabled grant_log=no reject_log=no }
    2-COMMENT=-----Learning Mode-----
    2-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 }
    2-CONFIG={ mode=learning grant_log=no reject_log=yes }
    3-COMMENT=-----Permissive Mode-----
    3-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 }
    3-CONFIG={ mode=permissive grant_log=no reject_log=yes }
    4-COMMENT=-----Enforcing Mode-----
    4-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 }
    4-CONFIG={ mode=enforcing grant_log=no reject_log=yes }
  • Restartujte OS.
  • Otevřete konfiguraci TOMOYO pro aplikace:
  • sudo tomoyo-editpolicy

Varování
TOMOYO detekuje pouze aplikace, které byly od jeho aktivace alespoň 1x spuštěny.

  • Šipkami se posunujete mezi aplikacemi. Profil aplikace změníte klávesou S, zadáním čísla profilu a stisknutím Enter.
  • 0     #  bez přístupu k internetu
    1     #  s přístupem k internetu
    
  • Klávesou Q konfiguraci ukončíte.
  • Po dokončení konfigurace ji následně uložte:
  • sudo tomoyo-savepolicy

Hardened alokátor:

Info
Hardened malloc může působit problémy s aplikacemi, instalací znefunkčníte ze standardně využívaných např. man.

  • Stáhněte si nejnovější verzi zdrojového kódu.
  • Rozbalte, přesuňte se do extrahované složky a otevřete terminál. Instalace:
  • make
    sudo cp libhardened_malloc.so /usr/local/lib
  • Vyvořte potřebné konfigurační soubory:
  • /etc/ld.so.preload
    -----------------------------------
    
    /usr/local/lib/libhardened_malloc.so
  • /etc/sysctl.d/hardened_malloc.conf
    -----------------------------------
    
    vm.max_map_count = 524240
  • Restartujte OS.

Hardening aplikací:

Balíčky mohou být kompilovány s memory corruption mitigacemi (ASLR, PIE, RELRO, Canary,…), které následně významně ztěžují jejich exploitaci. Většina balíčků by standardně měla důležité mitigace obsahovat. Balíčky neobsahující zmíněné mitigace je nutné zkompilovat ručně.

► Audit mitigací běžících procesů
checksec --proc-all

Info
Skript checksec je podrobněji rozebírán níže.

► Kompilace aplikace s mitigacemi
  • Nainstalujte si ASP a GPG:
  • sudo pacman -S asp gnupg
    asp export extra/networkmanager
    cd ./networkmanager
  • Zahajte kompilaci + automatickou instalaci:
  • makepkg -si
  • Po úspěšné instalaci restartujte OS.
► Automatizace kompilace problémových balíčků
  • Použijte srcpac.
  • sudo pacman -S srcpac
    man srcpac




Audit:

Rootkit Hunter:

Rootkit Hunter je on-demand skener rootkitů, který umí zachytávat změny v důležitých souborech OS atd. Jedná se o vcelku solidní aplikaci určenou primárně pro servery, neztratí se ovšem ani na desktopu.

► Návod
  • Instalace a spuštění auditu:
  • pacman -S rkhunter
    rkhunter --versioncheck
    rkhunter --propupd
    rkhunter -c --enable all --disable none --rwo
  • Rkhunter vypíše veškerá svá varování, pravděpodobně false positives. Ty je potřeba opravit, aby se již v budoucnu nezobrazovaly.
  • Příklad mých úprav:
  • gedit /etc/rkhunter.conf
    -----------------------------------
    #
    # FP Fix
    SCRIPTWHITELIST="/usr/bin/egrep"
    SCRIPTWHITELIST="/usr/bin/fgrep"
    SCRIPTWHITELIST="/usr/bin/ldd"
    SCRIPTWHITELIST="/usr/bin/vendor_perl/GET"
    ALLOWDEVFILE="/dev/shm/pulse-shm-*"
    ALLOWDEVFILE="/dev/shm/user-Shm_*"
    ALLOWDEVFILE="/dev/shm/user-Valve*"
    ALLOWHIDDENFILE="/etc/.updated"
    ALLOWHIDDENFILE="/usr/share/man/man5/.k5identity.5.gz"
    ALLOWHIDDENFILE="/usr/share/man/man5/.k5login.5.gz"
  • Nyní byste již měli být bez false positive varování a rkhunter by měl být plně funkční. Má uloženou databázi kritických souborů OS, takže v případě jakékoli změny (např. pomocí malware) zobrazí varování. Sken můžete dát do cronu.
  • Více informací naleznete na oficiálních stránkách a zde.

Lynis:

Lynis umožňuje bezpečnostní audit mnoha OS založených na UNIXu. Provádí velmi detailní audit OS a po dokončení auditu zobrazí doporučení pro zvýšení bezpečnosti.

► Návod
  • Instalace a spuštění auditu:
  • pacman -S lynis
    lynis update info
    lynic -c

Checksec:

Checksec je skript určený pro kontrolu nastavení kernelu a zobrazení memory corruption mitigací spustitelných souborů.

► Návod
  • Instalace:
  • pacman -S checksec
  • Můžete auditovat bezpečnost nastavení kernelu:
  • checksec --kernel
  • Dále můžete auditovat bezpečnostní funkce balíčků:
  • checksec --proc-all
  • Více informací naleznete na oficiálních stránkách.



To je vše. Stay safe! smile

Top