Ve třetím díle seiálu o SELinuxu se podíváme podrobněji na příkaz semanage.
Syntaxe je:
semanage {login|user|port|interface|fcontext} -l [-n] semanage login -{a|d|m} [-sr] login_name semanage user -{a|d|m} [-LrRP] selinux_name semanage port -{a|d|m} [-tr] [-p protocol] port | port_range semanage interface -{a|d|m} [-tr] interface_spec semanage fcontext -{a|d|m} [-frst] file_spec
Jak vidíte, prvním parametrem příkazu je právě jeden z následujích parametrů – login, user, port, interface, fcontext. Tento parametr určuje, co v bezpečnostním systému SELinuxu zjišťujeme, případně modifikujeme. Možnosti uživatelského účtu, uživatele SELinuxu, TCP nebo UDP portu, rozhraní , nebo bezpečnostního kontextu souborů a adresářů.
Přepínače -{a|d|m} znamenají {přidat|odstranit|modifikovat} konkrétní pravidlo. Přepínač -l vylistuje aktuální stav pravidla. Zajímavý je také přepínač -s, který specifikuje seuser-a, neboli příslušného uživatele SELinuxu, což není to samé jako uživatel v operačním systému. V implicitně nastaveném RHEL 5 jsou tito uživatelé pouze tři – root, user_u a system_u. Například v následujícím příkladu může uživatel webdesign pracovat s bezpečenostním kontextem uživatele SELinuxu web_u.
$ semanage login -a -s web_u webdesign
A dále je to přepínač -t, který určuje typ bezpečnostního kontextu. V praxi je používán zejména k určení bezpečnostního kontextu souborů a adresářů. V následujícím příkladu je adresáři /weby a všem jeho podadresářům přiřazen bezpečnostní kontext webového obsahu (permanentně).
$ semanage fcontext -a -t httpd_sys_content_t "/weby(/.*)?"
Z následujícího příkladu je patrný postup, jak umožnit webovému serveru naslouchat na TCP portu 444. Druhý příklad ukazuje, jak daemonu sshd umožnit naslouchat na TCP portu 2222.
$ semanage port -a -t http_port_t -p tcp 444 $ semanage port -a -t ssh_port_t -p tcp 2222
Pokud například neznáte přesně název typu bezpečnostního kontextu, pod kterým běží sshd server nebo k jakým portům má umožněn přístup, pomůže následující příkaz.
$ semanage port -l |grep ssh ssh_port_t tcp 2222, 22Poznámka: Tuto modifikaci, samozřejmě i se změnou konfigurace portu, na kterém běží ssh daemon, používám standardně u svých serverů. Je to spolehlivé, jednoduché a odstíní to 99,99 % pokusů různých otravů, kteří spouštějí roboty, a zkoušejí cca 10000-krát za den prolámat se mi na servery hádáním kombinace uživatel/heslo. Pokud ještě zakážete přímé přihlášení uživatele root a dáte si pozor na útok man-in-middle, i vysoce odborný (a hodně draze zaplacený) útok na službu sshd má jen nepatrnou šanci na úspěch.
Tolik k příkazu semanage.
Příště se podíváme trochu podrobněji na daemona audit a nástroje pro využití jím zaznamenaných informací.
Literatura:
Uživatelský manuál pro SELinux RHEL 7
Již výše uvedený odkaz na uživatelský manuál pro SELinux RHEL 4 a 5
Poradna na ABCLinuxu – pár zajímavých vláken k SELinuxu
A samozřejmě – vyhledání tématu SELinux na www.root.cz