En Ufänger Guide fir SELinux

En Ufänger Guide fir SELinux

Iwwersetzung vum Artikel virbereet fir Course Studenten "Linux Sécherheet"

SELinux oder Security Enhanced Linux ass e verstäerkten Zougangskontrollmechanismus entwéckelt vun der US National Security Agency (NSA) fir béiswëlleg Andréngen ze vermeiden. Et implementéiert en forcéierten (oder obligatoresche) Zougangskontrollmodell (Englesch Mandatory Access Control, MAC) uewen op dem existente diskretionären (oder selektiven) Modell (English Discretionary Access Control, DAC), dat heescht Permissiounen fir ze liesen, ze schreiwen, auszeféieren.

SELinux huet dräi Modi:

  1. Ëmzesetzen - Zougangsverweigerung baséiert op Politikregelen.
  2. Permissiv - e Logbuch vun Aktiounen ze halen, déi d'Politik verletzen, déi am Duerchféierungsmodus verbuede wieren.
  3. Behënnerter - komplett auszeschalten vun SELinux.

Par défaut sinn d'Astellungen an /etc/selinux/config

Änneren SELinux Modi

Fir den aktuelle Modus erauszefannen, lafen

$ getenforce

Fir de Modus op Permissiv z'änneren, lafen de folgende Kommando

$ setenforce 0

oder, Modus ze änneren aus erlaabt op erzwéngen, ausféieren

$ setenforce 1

Wann Dir SELinux komplett auszeschalten musst, da kann dat nëmmen duerch d'Konfiguratiounsdatei gemaach ginn

$ vi /etc/selinux/config

Fir auszeschalten, ännert de SELINUX Parameter wéi follegt:

SELINUX=disabled

SELinux opsetzen

All Datei a Prozess ass mat engem SELinux Kontext markéiert, deen zousätzlech Informatioun enthält wéi Benotzer, Roll, Typ, asw. Wann dëst Är éischte Kéier ass datt Dir SELinux aktivéiert, musst Dir als éischt de Kontext an d'Etiketten konfiguréieren. De Prozess fir Etiketten a Kontext ze ginn ass bekannt als Tagging. Fir unzefänken ze markéieren, an der Konfiguratiounsdatei änneren mir de Modus op erlaabt.

$ vi /etc/selinux/config
SELINUX=permissive

Nodeems Dir de Modus gesat huet erlaabt, erstellt eng eidel verstoppte Datei an der Root mam Numm autorelabel

$ touch /.autorelabel

an de Computer nei starten

$ init 6

Notiz: Mir benotzen de Modus erlaabt fir Marquage, zanter dem Gebrauch vun der Modus erzwéngen kann de System während dem Neistart erofsetzen.

Maacht Iech keng Suergen, wann den Download op e puer Fichier festhält, d'Markéierung dauert eng Zäit. Wann d'Markéierung fäerdeg ass an Äre System gestart ass, kënnt Dir op d'Konfiguratiounsdatei goen an de Modus setzen erzwéngenan och lafen:

$ setenforce 1

Dir hutt elo erfollegräich SELinux op Ärem Computer aktivéiert.

Iwwerwaachung vun de Logbicher

Dir hutt vläicht e puer Feeler begéint wärend der Markéierung oder wärend de System leeft. Fir z'iwwerpréiwen ob Äre SELinux richteg funktionnéiert a wann et den Zougang zu all Port, Applikatioun, etc., blockéiert, musst Dir d'Logbicher kucken. De SELinux Log ass an /var/log/audit/audit.log, awer Dir musst net déi ganz Saach liesen fir Feeler ze fannen. Dir kënnt den Audit2why Utility benotze fir Feeler ze fannen. Fëllt de folgende Kommando aus:

$ audit2why < /var/log/audit/audit.log

Als Resultat kritt Dir eng Lëscht vu Feeler. Wann et keng Feeler am Logbuch waren, da gi keng Messagen ugewisen.

SELinux Politik konfiguréieren

Eng SELinux Politik ass eng Rei vu Reegelen déi de SELinux Sécherheetsmechanismus regéieren. Eng Politik definéiert eng Rei vu Reegele fir e spezifescht Ëmfeld. Elo léiere mir wéi Dir Politik konfiguréiert fir Zougang zu verbuedenen Servicer z'erméiglechen.

1. Logesch Wäerter (Schalter)

Schalter (Booleaner) erlaben Iech Deeler vun enger Politik während der Runtime z'änneren, ouni nei Politiken ze kreéieren. Si erlaben Iech Ännerungen ze maachen ouni SELinux Politiken nei ze starten oder ze kompiléieren.

Beispill:
Loosst d'soen mir wëllen e Benotzer d'Haus Verzeechnes via FTP liesen / schreiwen deelen, a mir hu schonn gedeelt, mee wann mir probéieren et ze Zougang, mir gesinn näischt. Dëst ass well d'SELinux Politik verhënnert datt den FTP-Server an den Heemverzeichnis vum Benotzer liest a schreift. Mir mussen d'Politik änneren, sou datt de FTP-Server Zougang zu Heemverzeichnungen kritt. Loosst eis kucken ob et Schalter fir dëst duerch maachen

$ semanage boolean -l

Dëse Kommando wäert d'verfügbare Schalter mat hirem aktuellen Zoustand (op oder aus) a Beschreiwung oplëschten. Dir kënnt Är Sich verfeineren andeems Dir grep bäidréit fir nëmmen ftp Resultater ze fannen:

$ semanage boolean -l | grep ftp

an Dir fannt déi folgend

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Dëse Schalter ass ausgeschalt, also wäerte mir et aktivéieren mat setsebool $ setsebool ftp_home_dir on

Elo wäert eise ftp-Daemon Zougang zum Heemverzeechnes vum Benotzer kréien.
Notiz: Dir kënnt och eng Lëscht vu verfügbare Schalter ouni Beschreiwung kréien andeems Dir maacht getsebool -a

2. Etiketten a Kontext

Dëst ass deen allgemengste Wee fir d'SELinux Politik ëmzesetzen. All Datei, Dossier, Prozess a Port ass mam SELinux Kontext markéiert:

  • Fir Dateien an Ordner ginn Etiketten als erweidert Attributer am Dateiesystem gespäichert a kënne mat dem folgenden Kommando gekuckt ginn:
    $ ls -Z /etc/httpd
  • Fir Prozesser a Ports gëtt d'Etikettéierung vum Kernel geréiert, an Dir kënnt dës Etiketten wéi follegt gesinn:

Prozess

$ ps –auxZ | grep httpd

port

$ netstat -anpZ | grep httpd

Beispill:
Loosst eis elo e Beispill kucken fir Etiketten a Kontext besser ze verstoen. Loosst eis soen datt mir e Webserver hunn deen amplaz vun engem Verzeechnes /var/www/html/ использует /home/dan/html/. SELinux betruecht dëst als eng Verletzung vun der Politik an Dir kënnt Är Websäiten net gesinn. Dëst ass well mir de Sécherheetskontext net mat den HTML Dateien verbonne sinn. Fir de Standard Sécherheetskontext ze gesinn, benotzt de folgende Kommando:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Hei hu mer httpd_sys_content_t als Kontext fir HTML Dateien. Mir mussen dëse Sécherheetskontext fir eisen aktuelle Verzeechnes setzen, deen am Moment de folgende Kontext huet:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

En alternativen Kommando fir de Sécherheetskontext vun enger Datei oder Verzeechnes ze kontrolléieren:

$ semanage fcontext -l | grep '/var/www'

Mir wäerten och Semanage benotzen fir de Kontext z'änneren wa mir de richtege Sécherheetskontext fonnt hunn. Fir de Kontext vun /home/dan/html z'änneren, lafen déi folgend Kommandoen:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Nodeems de Kontext mat Semanage geännert gëtt, lued de Restorecon Kommando de Standardkontext fir Dateien a Verzeichnisser. Eise Webserver wäert elo fäeg sinn Dateien aus dem Dossier ze liesen /home/dan/htmlwell de Sécherheetskontext fir dësen Dossier geännert gouf httpd_sys_content_t.

3. Schafen lokal Politik

Et kënne Situatiounen sinn, wou déi uewe genannte Methode fir Iech net nëtzlech sinn an Dir kritt Feeler (avc/denial) am audit.log. Wann dat passéiert, musst Dir eng lokal Politik erstellen. Dir kënnt all Feeler fannen Audit2why benotzt, wéi uewen beschriwwen.

Dir kënnt eng lokal Politik erstellen fir Feeler ze léisen. Zum Beispill kréie mir e Feeler am Zesummenhang mat httpd (apache) oder smbd (samba), mir grepen d'Feeler a kreéieren eng Politik fir si:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

et ass http_policy и smb_policy sinn d'Nimm vun de lokalen Politiken déi mir erstallt hunn. Elo musse mir dës erstallt lokal Politiken an déi aktuell SELinux Politik laden. Dëst kann wéi follegt gemaach ginn:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Eis lokal Politik gouf erofgelueden a mir sollten net méi avc oder denail am audit.log kréien.

Dëst war mäi Versuch Iech ze hëllefen SELinux ze verstoen. Ech hoffen, datt Dir nom Liesen vun dësem Artikel Iech méi bequem fillt mat SELinux.

Source: will.com

Setzt e Commentaire