SELinux na RHEL a CentOS prakticky III.

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, 22
Pozná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

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.