SELinux po léta pomáhá předcházet poškození systémů zneužíváním zero-day. Tento nástroj je také užitečný pro izolaci virtuálního počítače a je vyžadován pro izolaci kontejnerů. Přesto je SELinux stále běžně zakázán nebo umístěn do permisivního režimu.
targeted
SELinuxu politika je navržena tak, aby izolovala různé domény procesů a přitom stále umožňovala interakci mezi službami podle potřeby. Administrátor potřebuje jen několik příkazů, aby nakonfiguroval systém tak, aby používal tuto zásadu se svými přizpůsobenými aplikacemi a udržoval SELinux v režimu vynucení.
[Další informace o používání dokumentace zásad SELinux naleznete zde.]
semanage
příkaz se používá k úpravě kontextů souborů, kontextů portů a booleanů. Pokud stále existuje konflikt s konkrétním procesem, může být doména uvedena do permisivního režimu, dokud nebude možné dokončit další vyšetřování. Tím zůstane zbytek systému chráněn v režimu vynucení.
Pouze se čtyřmi semanage
příkazy níže, většinu systémů lze nakonfigurovat tak, aby vaše přizpůsobené aplikace běžely se SELinuxem v režimu vynucení.
semanage boolean
příkaz
targeted
zásada obsahuje mnoho booleanů pro povolení a zakázání sad allow
pravidla, což předpokládá, že služby mají více případů použití a jsou v každém prostředí spouštěny odlišně. Použití booleanů umožňuje různé sady pravidel pro různé případy použití:Webový server v akademickém prostředí může potřebovat povolit studentům publikovat obsah z jejich domovských adresářů, zatímco firemní, veřejně přístupný web může potřebovat odmítnout přístup do domovské stránky jakéhokoli uživatele. adresářů, omezovat SSI spustitelné soubory a zobrazovat data uložená ve sdílené složce NFS.
httpd_selinux
manuálová stránka popisuje použití všech booleanů poskytnutých pro httpd
domény a také ukázkový setsebool
příkazy k trvalému povolení každého boolean. Alternativní (a novější) způsob, jak zobrazit a změnit tyto booleovské hodnoty, je semanage boolean
příkaz.
-l
volba uvádí všechny booleovské hodnoty v načtené politice. Poté můžete filtrovat podle klíčového slova:
$ sudo semanage boolean -l | grep httpd
httpd_anon_write (off , off) Allow httpd to anon write
httpd_builtin_scripting (on , on) Allow httpd to builtin scripting
httpd_can_check_spam (off , off) Allow httpd to can check spam
httpd_can_connect_ftp (off , off) Allow httpd to can connect ftp
httpd_can_connect_ldap (off , off) Allow httpd to can connect ldap
Tento výstup obsahuje název boolean, aktuální a trvalý stav booleanu a stručný popis toho, jak se boolean používá.
Chcete-li změnit boolean pomocí semanage
použití:
$ sudo semanage boolean -m --off httpd_ssi_exec
Můžete také uvést lokálně přizpůsobené booleany přidáním -C
možnost:
$ sudo semanage boolean -l -C
SELinux boolean State Default Description
httpd_ssi_exec (off , off) Allow httpd to ssi exec
virt_sandbox_use_all_caps (on , on) Allow virt to sandbox use all caps
virt_use_nfs (on , on) Allow virt to use nfs
Manuálové stránky pro každou doménu SELinux obsahují popis všech poskytnutých booleanů pro tyto domény. Pro více možností při modifikaci SELinux booleans pomocí semanage
, viz semanage-boolean
manuálová stránka.
Tuto semanage
můžete automatizovat příkazy s jejich souvisejícími moduly a rolemi Ansible. Modul Ansible pro semanage boolean
je seboolean
. Toto a související moduly popsané níže používají role poskytované v linux-system-roles
balíček ve Fedoře nebo rhel-system-roles
balíček v Red Hat Enterprise Linux. Balíček Red Hat je k dispozici od verze Red Hat Enterprise Linux 7.4 a lze jej nalézt v úložišti "Extras".
semanage fcontext
příkaz
targeted
zásada poskytuje informace o kontextu souboru pro soubor aplikace – včetně dat, souborů protokolu a souborů runtime – výchozí a běžné alternativní umístění. Tyto kontextové definice jsou mapování že restorecon
příkaz používá k ověření nebo změně kontextu souboru.
semanage fcontext
příkaz lze použít k vypsání kontextových definic souborů a přidání dalších. -l
zobrazí všechny kontexty v načtené politice. Poté můžete filtrovat podle klíčového slova:
$ sudo semanage fcontext -l | grep sshd
/etc/rc\.d/init\.d/sshd regular file system_u:object_r:sshd_initrc_exec_t:s0
/etc/ssh/primes regular file system_u:object_r:sshd_key_t:s0
/etc/ssh/ssh_host.*_key regular file system_u:object_r:sshd_key_t:s0
/etc/ssh/ssh_host.*_key\.pub regular file system_u:object_r:sshd_key_t:s0
/usr/lib/systemd/system/sshd-keygen.* regular file system_u:object_r:sshd_keygen_unit_file_t:s0
Tento výstup obsahuje vzor regulárního výrazu pro cílové názvy souborů, typ souboru a kontext souboru, který se má přiřadit k odpovídajícímu souboru.
Související manuálová stránka, v tomto případě man sshd_selinux
, obsahuje seznam spravovaných souborů a popis každého kontextu souboru dostupného pro doménu. Existují také ukázkové příkazy pro určení a použití alternativního označení.
Pokud jste například chtěli uložit sshd
hostitelské klíče v samostatném podadresáři, můžete spustit následující dva příkazy:
$ sudo semanage fcontext -a -t sshd_key_t '/etc/ssh/keys(/.*)?'
$ sudo restorecon -r /etc/ssh/keys
V tomto příkladu bude regulární výraz odpovídat adresáři /etc/ssh/keys
stejně jako všechny podadresáře a soubory nalezené v /etc/ssh/keys
adresář.
Stejně jako u booleanů můžete zobrazit všechny lokálně přizpůsobené kontexty souborů přidáním -C
možnost:
$ sudo semanage fcontext -l -C
SELinux fcontext type Context
/usr/share/dnfdaemon/dnfdaemon-system all files system_u:object_r:rpm_exec_t:s0
Další možnosti při úpravě kontextů souborů SELinux naleznete v semanage-fcontext
manuálová stránka.
Můžete automatizovat semanage fcontext
pomocí Ansible sefcontext
modul. restorecon
příkaz bude stále nutné spouštět pomocí samostatného příkazového modulu. Viz ansible-doc sefcontext
například. selinux
systémová role zahrnuje oba úkoly.
semanage port
příkaz
Kromě kontextů souborů také targeted
politika také definuje kontexty portů. Stejně jako u booleanů a kontextů souborů jsou manuálové stránky specifické pro doménu uvedeny definované typy a mohou také zobrazovat ukázkové příkazy potřebné ke spuštění služby na jiném portu.
Zobrazte kontexty portů pomocí:
$ sudo semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
Při spuštění služby na vlastním portu musíte změnit konfigurační soubor pro službu a také přidat definici portu SELinux. Bez definice portu se služba nespustí a zaprotokoluje se chyba podobná „nelze navázat na port“.
Přidejte definici portu pomocí:
$ sudo semanage port -a -t http_cache_port_t -p tcp 8010
Při zadávání portu musíte uvést protokol i číslo portu. Kromě toho lze pro každý protokol a číslo portu definovat pouze jeden typ. Další možnosti při úpravě kontextů portů SELinux naleznete v semanage-port
manuálová stránka.
semanage-port
můžete automatizovat pomocí příkazu seport
Modul Ansible.
semanage permissive
příkaz
Místo přesunu celého systému do permisivního režimu – nebo v horším případě úplného vypnutí SELinuxu – můžete jednu doménu umístit do permisivního režimu. Doména v permisivním režimu umožňuje všechny akce, zatímco stále protokoluje, což by znamenalo zamítnutí. Ostatní domény v systému zůstávají v režimu vynucení, který zaznamenává i zakazuje akce, které nejsou výslovně povoleny.
Manuálové stránky pro běžné domény uvádějí typy SELinuxu, které lze umístit do permisivního režimu.
Chcete-li vypsat všechny domény, které jsou aktuálně v permisivním režimu, použijte:
$ sudo semanage permissive -l
Při počáteční instalaci je nepravděpodobné, že budou nějaké domény v permisivním režimu.
Chcete-li uvést doménu do permisivního režimu, použijte:
$ sudo semanage permissive -a squid_t
-d
smaže permisivní doménu, čímž znovu povolí režim vynucení pro tuto doménu.
Další možnosti při uvádění domén do permisivního režimu naleznete v semanage permissive
manuálová stránka.
Ansible selinux_permissive
modul lze použít k uvedení domény do permisivního režimu. Viz ansible-doc selinux_permissive
pro příklady.
Soubory
Veškerá semanage
příkazy, které přidávají nebo upravují cílenou konfiguraci zásad, ukládají informace do *local
soubory pod /etc/selinux/targeted
adresářový strom. Všechny tyto soubory mají varování, že by neměly být přímo upravovány, ale slouží k zachování přizpůsobení. Po aktualizaci SELinuxu a balíčků zásad jsou tyto místní soubory přizpůsobení ponechány na místě a použity na aktualizované zásady.