Pouze pro návštěvníky našeho blogu Získejte další 3 měsíce zdarma + 10% slevu na tříletý plán YSBLOG10
Chyťte dohodu

Jak opravit SELinux na Linuxovém serveru v roce 2026? – Snadný průvodce

Poslední aktualizace: 7. září 2026 8 min čtení Sanjeet Chauhan
Oprava SELinuxu na Linuxovém serveru

Oprava SELinuxu na Linuxovém serveru, identifikovat zamítnutí v protokolech auditu, opravit popisky souborů pomocí restorecon nebo semanage fcontext, upravte booleovské hodnoty služeb pomocí setsebool a pouze v případě potřeby vytvořte minimální lokální zásady pomocí audit2allow.

Ověřte v permisivním režimu a poté se pro plnou ochranu přepněte zpět do režimu vynucení. Pokud vás zajímá, jak opravit SELinux v prostředích linuxových serverů bez oslabení zabezpečení, je tento průvodce určen právě vám.

Projdeme si rychlou diagnostiku, bezpečné opravy a příklady z reálného světa, které řeší nejčastější problémy SELinuxu na systémech RHEL, CentOS, AlmaLinux, Rocky Linux a Fedora.

Co je SELinux a proč (někdy) něco kazí

SELinux je povinný systém řízení přístupu (MAC), který vynucuje zásady pro to, které procesy mohou přistupovat ke kterým souborům, portům a zdrojům.

Oprava SELinuxu na Linuxovém serveru

Pokud blokuje neočekávaný přístup, může se v aplikaci zobrazovat zpráva „Oprávnění odepřeno“, i když oprávnění Unixu vypadají správně. Oprava spočívá v sladění popisků, booleovských hodnot a zásad s vaší pracovní zátěží.

Režimy SELinux

  • Vynucování: Zásady jsou vynucovány, zamítnutí jsou zaznamenávána.
  • Permisivní: Zásady nejsou vynucovány, zamítnutí jsou pouze zaznamenávána (skvělé pro ladění).
  • Zakázáno: SELinux je vypnutý (v produkčním prostředí se mu vyhněte).

Popisky, typy a booleovské hodnoty (základní koncepty)

Každý soubor a proces má zabezpečení kontext jako uživatel:role:typ:úroveň. typ je to, co je v „cílené“ politice nejdůležitější. Služby očekávají specifické typy (například Apache čte httpd_sys_content_t). Booleovské hodnoty jsou přepínače, které umožňují širší akce (například umožnění Apache připojit se k síti).

Rychlý diagnostický kontrolní seznam (5 minut)

Krok 1: Zkontrolujte režim SELinux

getenforce
sestatus

Pokud musíte ladit rychle, přepněte na permisivní (dočasný) režim, chybu reprodukujte a poté se přepněte zpět.

# temporary (until reboot)
sudo setenforce 0   # permissive
sudo setenforce 1   # enforcing

Krok 2: Najděte odmítnutí

# show recent AVC denials (last hour)
sudo ausearch -m avc -ts now-1h | aureport -a

# or inspect audit log directly
sudo grep -i "avc" /var/log/audit/audit.log | tail -n 50

# if setroubleshoot is installed
sudo sealert -a /var/log/audit/audit.log

Hledejte zakázanou třídu (soubor, adresář, tcp_socket) a typové štítky zdroje (proces) a cíle (soubor/port).

Krok 3: Identifikace dotčené cesty/služby

Je to problém s popiskem souboru, nepovoleným portem nebo funkcí blokovanou booleovskou hodnotou? Následující části mapují každý příznak na bezpečné řešení.

Jak opravit SELinux na Linuxovém serveru - (Krok za krokem)

Oprava 1: Špatně označené soubory nebo adresáře

Většina chybných adresářů pochází z nesprávných popisků. Obnovte výchozí popisky pro známé cesty nebo nastavte trvalé popisky pro vlastní adresáře.

# restore default labels for a path
sudo restorecon -Rv /var/www/html

# define a persistent label for a custom app dir
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?"
sudo restorecon -Rv /var/www/myapp

Pokud jsou popisky celého systému nekonzistentní (po větším přesunu nebo obnově souborového systému), po restartu je znovu pojmenujte.

sudo touch /.autorelabel
sudo reboot

Oprava 2: Povolit službám používat vlastní porty

Služby se mohou vázat pouze na porty určitých typů. Namapujte svůj vlastní port na správný typ portu SELinux.

# example: allow Apache/Nginx to bind TCP 8080
sudo semanage port -a -t http_port_t -p tcp 8080

# verify
sudo semanage port -l | grep http_port_t

Oprava 3: Povolení požadovaných booleovských hodnot SELinuxu

Booleovské hodnoty umožňují širší chování, jako je síťová připojení, přístup NFS/SMB nebo uživatelské adresáře. Změny lze trvale nastavit pomocí -P.

# list all booleans
sudo getsebool -a | less

# common web-related booleans
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_enable_homedirs on
sudo setsebool -P httpd_use_nfs on
sudo setsebool -P httpd_use_cifs on

Oprava 4: Generování minimální lokální politiky (poslední možnost)

Pokud jsou popisky a booleovské hodnoty správné, ale legitimní přístup je stále odepřen, vytvořte malou lokální politiku z auditovaných odepření. Pečlivě si ji projděte, abyste se vyhnuli příliš permisivním pravidlům.

# inspect and understand the denial
sudo grep -i "avc" /var/log/audit/audit.log | audit2why | less

# generate a local module for a specific service pattern
sudo grep httpd /var/log/audit/audit.log | audit2allow -M myhttpd
sudo semodule -i myhttpd.pp

Ihned znovu otestujte. Pokud je modul příliš široký, odstraňte ho a upřesněte.

# list and remove a custom module
sudo semodule -l | grep myhttpd
sudo semodule -r myhttpd

Oprava 5: Kontejnery a připojené svazky (Docker/Podman)

Kontejnery potřebují správně označené objemy. Použijte :Z pro soukromou relabelaci, :z pro sdílené.

# Docker/Podman volume with SELinux relabel
docker run -v /srv/app:/var/www/html:Z -p 8080:80 nginx
# or
podman run -v /srv/app:/var/www/html:Z -p 8080:80 nginx

Pokud musíte sdílet stejný adresář mezi více kontejnery, použijte :zNezakazujte popisky uvnitř kontejnerů, pokud neprovádíte testování.

Oprava 6: Sdílení NFS/SMB

NFS a CIFS mají speciální kontexty a booleovské hodnoty. Ujistěte se, že připojení používají kompatibilní možnosti a že je vaše služba může číst.

# allow web server to access NFS/CIFS content
sudo setsebool -P httpd_use_nfs on
sudo setsebool -P httpd_use_cifs on

# label the mount point appropriately
sudo semanage fcontext -a -t httpd_sys_content_t "/mnt/webdata(/.*)?"
sudo restorecon -Rv /mnt/webdata

Bezpečná řešení a úskalí

Používejte permisivní režim pouze pro ladění

Povolený režim vám pomáhá zachytit zamítnutí, aniž by to narušilo aplikace. Opravte hlavní příčinu a poté se vraťte k vynucování. Ponechání serveru v povoleném režimu s sebou nese riziko.

Vyhněte se zakázání SELinuxu

Zakázání SELinuxu odstraní celou vrstvu ochrany. Pokud musíte režim trvale změnit, upravte konfiguraci a restartujte počítač – ale snažte se jej vynutit v produkčním prostředí.

sudo vi /etc/selinux/config
# SELINUX=enforcing|permissive|disabled
sudo reboot

Znovu označit po hromadném přesunutí nebo obnovení

Pokud jste provedli obnovu ze zálohy, změnili souborové systémy nebo použili rsync bez xattrs, kontexty mohou být nesprávné. Úplné přejmenování zajišťuje konzistenci zásad v celém systému.

Příklady oprav z reálného světa

Apache/Nginx 403 Po nasazení

Příznak: HTTP 403 nebo „Oprávnění odepřeno“ v protokolech po přesunutí webu na /var/www/myapp.

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?"
sudo restorecon -Rv /var/www/myapp

Webová aplikace potřebuje odchozí volání API

Příznak: PHPAplikace /Python se nemůže připojit k externím API.

sudo setsebool -P httpd_can_network_connect on

MariaDB v adresáři vlastních dat

Příznak: MariaDB se nepodaří spustit nebo načíst data na /data/mysql.

sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
sudo restorecon -Rv /data/mysql

Nginx Proxy na portu 8080

Příznak: Nginx Nelze se navázat na 8080, i když je volný.

sudo semanage port -a -t http_port_t -p tcp 8080
sudo systemctl restart nginx

Přístup k svazku Dockeru byl zamítnut.

Příznak: Kontejnerizovaná aplikace dostane chybu „Oprávnění odepřeno“ s připojením vazby.

docker run -v /srv/app:/var/www/html:Z image:tag

Monitorování, protokolování a udržování oprav

Použijte správné nástroje

  • auditováno a /var/log/audit/audit.log pro autoritativní popření.
  • řešení problémů (setroubleshoot-server) abyste získali rady čitelné pro člověka sealert.
  • policycoreutils for semanage, restorecon, setsebool, semodule.

Zajištění perzistence i po restartech

  • Použijte semanage fcontext pro zachování popisků souborů.
  • Použijte setsebool -P pro trvalé booleovské změny.
  • Vlastní zásady dokumentu (semodule) a udržovat je pod kontrolou verzí.

Nejlepší postupy pro týmy a nasazení

  • Štítky plánu během návrhu aplikace: pokud možno zvolte datové adresáře zarovnané s výchozími typy.
  • Automatizovat s Ansible: použití sefcontext, seboolean, a seport moduly pro vynucení stavu.
  • Test v permisivním režimu v připravování zachytit odmítnutí, opravit a poté odeslat s vynucením v produkčním prostředí.
  • Preferovat booleovské hodnoty a popisky před vlastními zásadami; udržujte lokální moduly minimalistické a specifické.
  • Ověření po upgraduAktualizace zásad mohou změnit očekávané chování – znovu ověřit klíčové služby.

Kdy vyhledat pomoc (a jak) YouStable Může pomoci)

Pokud se problémy se SELinuxem opakují, zvažte kontrolu konfigurace. YouStable, Naše managed Linuxový hosting a server Odborníci předběžně zajišťují zabezpečení obrazů, sladí zásady SELinuxu s vaším stackem a monitorují protokoly auditu, aby vaše aplikace zůstaly zabezpečené a dostupné – bez nutnosti pokusů a omylů. Potřebujete pomoc 24 hodin denně, 7 dní v týdnu? Náš tým je vám k dispozici.

FAQs

1. Jak zjistím, zda SELinux něco blokuje?

Použijte ausearch -m avc -ts now-1h nebo zkontrolovat /var/log/audit/audit.log pro položky „AVC“. Pokud setroubleshoot je nainstalován, spusťte sealert -a /var/log/audit/audit.log pro srozumitelné pokyny. V zamítnutí bude uvedeno, který typ procesu se pokusil o přístup ke kterému souboru/typu portu a proč byl zablokován.

2. Je bezpečné zakázat SELinux v produkčním prostředí?

Ne. SELinux výrazně snižuje dopad narušení zabezpečení omezením služeb. Pro ladění dočasně použijte permisivní režim, opravte popisky/booleovské hodnoty a vraťte se k vynucování. Zakázání SELinuxu by mělo být až krajní možností a obvykle indikuje konfigurační dluh, který je třeba vyřešit.

3. Jak trvale změním režim SELinuxu?

Změnit /etc/selinux/config a nastavte SELINUX=enforcing or permissivea poté restartujte. Vyhněte se disabledMěnící se s setenforce je dočasné a resetuje se po restartu. Po přepnutí z vypnutého stavu na vynucený stav spusťte úplné přejmenování (/.autorelabel).

4. Jak můžu dovolit Apache použít vlastní docroot a dosáhnout vzdálené databáze?

Označte docroot a povolte odchozí síťová připojení. Například: semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?", restorecon -Rv /var/www/myapp, pak setsebool -P httpd_can_network_connect onPokud používáte NFS/SMB, povolte také httpd_use_nfs or httpd_use_cifs.

5. Jak opravím chybu „Oprávnění odepřeno“ v Dockeru na připojených svazcích pomocí SELinuxu?

Připojit :Z or :z k připojení svazku, aby se cesta k hostiteli přejmenovala pro použití v kontejneru: -v /host/path:/container/path:ZTím se zachovává omezení SELinuxu a zároveň se kontejneru udělují správné popisky pro bezpečný přístup k souborům.

Zvládnutí těchto kroků vám pomůže rychle a správně opravit SELinux na linuxových serverech a zároveň zachovat bezpečnost. Pokud chcete, aby se o to postarali odborníci, YouStableJe manageTým d serveru dokáže implementovat, monitorovat a spravovat zásady SELinuxu přizpůsobené vašemu stacku.

Zanechat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *.

Přejděte na začátek