GNU/Linux >> Znalost Linux >  >> Linux

Čtyři semanage příkazy pro udržení SELinuxu v režimu vynucení

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.


Linux
  1. 10+ Linux VI příkazy s příklady

  2. Jak zakázat nebo nastavit SELinux do Permisivního režimu

  3. Mac Terminal v[m] Editor Commands

  1. Nastavte režim vynucení SELinux pomocí Ansible

  2. 25 základních příkazů Vim pro navigaci a úpravy

  3. SElinux:Jak přejít do permisivního režimu bez restartu?

  1. Jak povolit SELinux v CentOS/RHEL 7

  2. Jak zakázat SELinux na AlmaLinuxu

  3. Jak deaktivovat SELinux na CentOS 8