SELinux kan ontmoedigend lijken en erg moeilijk te implementeren in de meeste moderne systemen. Het configureren van SELinux heeft echter enorme voordelen, zowel bij het afdwingen van beveiliging als bij het oplossen van problemen.
Deze tutorial zal verschillende concepten bespreken die door SELinux zijn geïmplementeerd en verschillende praktische methoden verkennen om SELinux te implementeren.
OPMERKING: Voordat we beginnen, is het goed om de opdrachten in deze tutorial te gebruiken als rootgebruiker of een gebruiker binnen de sudoers-groep.
SELinux-pakketten installeren
Laten we verschillende SELinux-pakketten installeren, die op hun beurt zullen helpen om met SELinux-beleidsregels te werken.
Voordat we doorgaan met het installeren van de SELinux-pakketten, is het goed dat we controleren welke op het huidige systeem zijn geïnstalleerd.
In de meeste installaties van REHL-distributies zijn sommige pakketten standaard geïnstalleerd. Deze pakketten zijn inclusief:
- setools - dit pakket wordt gebruikt voor het bewaken van logboeken, het opvragen van beleid en het beheer van contextbestanden.
- policycoreutils-python - biedt python-kernhulpprogramma's voor het beheren van SELinux
- policycoreutils - dit pakket biedt ook hulpprogramma's voor het beheren van SELinux.
- mcstrans - mcstrans biedt SELinux-vertaaldaemon, die verschillende niveaus vertaalt naar eenvoudige formaten die gemakkelijk kunnen worden begrepen.
- setools-console - vergelijkbaar met setools.
- Selinux-beleid - het biedt een referentie voor het configureren van het SELinux-beleid
- Selinux-policy-targeted - vergelijkbaar met SELinux-policy
- Libselinux-utils - SELinux libselinux hulpprogramma's die helpen bij het beheren van SELinux
- Setroubleshoot-server - tools voor het oplossen van problemen met SELinux
Om te verifiëren welke pakketten al op je systeem zijn geïnstalleerd, kun je het rpm -qa commando gebruiken en het resultaat naar grep voor SELinux sturen als:
rpm -qa | grep selinuxlibselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-targeted-3.14.3-54.el8_3.2.noarchus
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.noarchus
libselinux-2.9-4.el8_3.x86_64
Dit zou je een output moeten geven van alle pakketten die geïnstalleerd zijn voor SELinux-ondersteuning
Als niet alle SELinux-pakketten op uw systeem zijn geïnstalleerd, gebruik dan yum om ze te installeren zoals getoond in de onderstaande opdracht:
yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstransSELinux-modi en -statussen
Laten we nu beginnen te spelen met SELinux, in het bijzonder de SELinux-modi.
SELinux-modi
Indien ingeschakeld, kan SELinux drie mogelijke modi hebben:
- afdwingen
- Toegeeflijk
- Gehandicapt
Afdwingingsmodus
Als de SELinux-modus wordt afgedwongen, zal het ervoor zorgen dat geen ongeautoriseerde toegang tot het systeem door een gebruiker of proces wordt geweigerd. De handhavingsmodus houdt ook logboeken bij van pogingen tot ongeautoriseerde toegang.
Toegeeflijke modus
Toegeeflijke modus werkt als een gedeeltelijk ingeschakelde SELinux-status. In deze modus wordt geen toegang geweigerd omdat SELinux zijn beleid niet afdwingt in deze modus. De permissieve modus houdt echter wel een logboek bij van pogingen tot beleidsschending. Deze modus is zeer efficiënt om te testen voordat deze volledig wordt ingeschakeld, aangezien gebruikers en componenten nog steeds met het systeem kunnen communiceren, maar nog steeds logs kunnen verzamelen. Hiermee kunt u uw systeem afstemmen op manieren die u goeddunkt.
Uitgeschakelde modus
De uitgeschakelde modus kan ook worden gezien als een uitgeschakelde staat waarin SELinux is uitgeschakeld en geen beveiliging biedt.
SELinux-staten
Zodra SELinux op een systeem is geïnstalleerd. Het kan binaire toestanden hebben: ingeschakeld en uitgeschakeld. Gebruik het commando om de status van SELinux te bekijken:
afdwingenGehandicapt
De bovenstaande uitvoer geeft aan dat SELinux momenteel is uitgeschakeld.
U kunt ook de opdracht sestatus gebruiken, zoals hieronder weergegeven:
sestatusSELinux-status: uitgeschakeld
SELinux in- en uitschakelen
Statussen en configuratie van SELinux worden afgehandeld door het configuratiebestand in /etc/selinux/config. U kunt de opdracht cat gebruiken om de inhoud ervan te bekijken.
cat /etc/selinux/config#Dit bestand regelt de status van SELinux op het systeem.
#SELINUX= kan een van deze drie waarden aannemen:
#enforcing - SELinux beveiligingsbeleid wordt afgedwongen.
#permissive - SELinux drukt waarschuwingen af in plaats van af te dwingen.
#disabled - Er is geen SELinux-beleid geladen.
SELINUX=afdwingen
#SELINUXTYPE= kan een van deze drie waarden aannemen:
# gericht - Gerichte processen zijn beveiligd,
# minimum - Aanpassing van gericht beleid. Alleen geselecteerde processen zijn beveiligd.
# mls - Beveiliging op meerdere niveaus.
SELINUXTYPE=gericht
Van de bovenstaande uitvoer hebben we twee hoofdrichtlijnen ingeschakeld:. De SELINUX-richtlijn specificeerde de modus waarin SELinux is geconfigureerd. De SELINUXTYPE-richtlijn specificeert de SELinux-beleidsset. Standaard gebruikt SELinux een gericht beleid waarmee u toegangsbeheerrechten kunt aanpassen. Het andere beleid is Beveiliging op meerdere niveaus of MLS.
Mogelijk vindt u in sommige versies een minimumbeleid.
cd /etc/selinux/[ls -l
totaal 4
-rw-r--r-- 1 root root 548 Feb 16 22:40 config
drwxr-xr-x 1 wortel wortel 4096 16 februari 22:43 mls
-rw-r--r-- 1 wortel wortel 2425 21 jul 2020 semanage.conf
drwxr-xr-x 1 wortel wortel 4096 16 februari 22:40 gericht
Laten we nu kijken hoe we SELinux op het systeem kunnen inschakelen. We raden aan om eerst de SELINUX-modus in te stellen op tolerant en niet afgedwongen.
nano /etc/selinux/configBewerk nu de SELINUX-richtlijn als:
SELINUX=toelatendNadat u het bestand hebt opgeslagen, voert u een herstart van het systeem uit.
opnieuw opstartenOPMERKING: We raden ten zeerste aan om de SELINUX-richtlijn op permissive in te stellen voordat u SELinux afdwingt.
Nadat je het systeem opnieuw hebt opgestart, controleer je of er logs zijn gerapporteerd door SELinux in /var/log/messages.
Zorg er vervolgens voor dat je geen fouten hebt en dwing SELinux af door de richtlijn in te stellen om af te dwingen in /etc/selinux/config
Ten slotte kun je de SELinux-status bekijken met het sestatus-commando:
SELinux-status: ingeschakeldSELinuxfs aankoppelen: /sys/fs/selinux
SELinux hoofdmap: /etc/selinux
Naam van geladen beleid: getarget
Huidige modus: afdwingen
Modus uit configuratiebestand: fout (succes)
Beleid MLS-status: ingeschakeld
Beleid deny_unknown status: toegestaan
Geheugenbeveiligingscontrole: actueel (veilig)
Max. kernelbeleidsversie: 31
Je kunt ook het setenforce-commando gebruiken om te schakelen tussen verschillende SELinux-modi. Om bijvoorbeeld de modus op permissief in te stellen, gebruikt u de opdracht:
setenforce permissieveDeze modus is tijdelijk en wordt na een herstart hersteld naar een modus in het configuratiebestand.
sestatus SELinux-status: ingeschakeldSELinuxfs aankoppelen: /sys/fs/selinux
SELinux hoofdmap: /etc/selinux
Naam van geladen beleid: getarget
Huidige modus: tolerant
Modus uit configuratiebestand: afdwingen
Beleid MLS-status: ingeschakeld
Beleid deny_unknown status: toegestaan
Geheugenbeveiligingscontrole: actueel (veilig)
Max. kernelbeleidsversie: 31
SELinux-beleid en context
Om verwarring voor SELinux-beginners te voorkomen, zullen we niet diep ingaan op de manier waarop het SELinux-beleid wordt geïmplementeerd, maar er gewoon op ingaan om u een idee te geven.
SELinux werkt door beveiligingsbeleid te implementeren. Een SELinux-beleid verwijst naar een regel die wordt gebruikt om toegangsrechten te definiëren voor elk object in het systeem. Objecten verwijzen naar gebruikers, processen, bestanden en rollen.
Elke context wordt gedefinieerd in de vorm van de gebruiker:rol:type:niveau.
Maak bijvoorbeeld een map in je thuismap en bekijk de SELinux-beveiligingscontext zoals getoond in de onderstaande commando's:
mkdir ~/linuxhint_dirls -Z ~/ | grep linuxhint
Dit zal de output weergeven zoals hieronder getoond:
unconfined_u:object_r:user_home_t:s0 linuxhint_dirU kunt ook andere mappen met de beveiligingscontexten vinden als:
systeem:_u:object_r:user_home_t:s0U kunt zich realiseren dat de bovenstaande uitvoer de syntaxis van de gebruiker:rol:type:niveau volgt.
Conclusie
Dat was een beginnershandleiding voor SELinux met CentOS 8. Hoewel de tutorial is ontworpen voor beginners, is het meer dan genoeg om je voeten in SELinux te laten werken en de intimiderende aard van SELinux te verwijderen.
Bedankt voor het lezen.