AppArmor

Debian AppArmor-zelfstudie

Debian AppArmor-zelfstudie
AppArmor is een verplicht toegangscontrolesysteem voor Linux. In een verplicht toegangscontrolesysteem (MAC) legt de kernel beperkingen op aan paden, sockets, poorten en verschillende invoer-/uitvoermechanismen. Het is ontwikkeld door Immunex en wordt nu onderhouden door SUSE. Het maakt sinds versie 2 deel uit van de Linux-kernel.6.36.

Hoewel de Linux-kernel een goede isolatie van gebruikers en een sterk beheer van bestandsrechten biedt, biedt een MAC zoals AppArmor meer fijnmazige machtigingen en bescherming tegen veel onbekende bedreigingen. Als er een beveiligingsprobleem wordt gevonden in de Linux-kernel of een andere systeemdaemon, kan een goed geconfigureerd AppArmor-systeem de toegang tot kritieke paden verhinderen die kwetsbaar kunnen zijn voor het probleem.

AppArmor kan effectief in twee modi werken - afdwingen en klagen. Enforce is de standaard productiestatus van AppArmor, terwijl klagen nuttig is voor het ontwikkelen van een regelset op basis van echte bewerkingspatronen en voor het loggen van overtredingen. Het is geconfigureerd via platte tekstbestanden in een relatief vriendelijk formaat en heeft een kortere leercurve dan de meeste andere verplichte toegangscontrolesystemen control.

Installatie

Om AppArmor op Debian te installeren, voer je uit (als root):

apt install apparmor apparmor-utils auditd

U kunt auditd weglaten als u geen tools voor het genereren van profielen nodig heeft.

Als u starters- en aanvullende profielen wilt installeren, voert u het volgende uit:

apt apparmor-profiles apparmor-profiles-extra installeren

Aangezien AppArmor een Linux-kernelmodule is, moet u deze inschakelen met de volgende opdrachten:

mkdir -p /etc/default/grub.d

Maak het bestand /etc/default/grub.d/apparmor.cfg met de volgende inhoud:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"

Opslaan en afsluiten, voer dan uit:

update-grub

Start vervolgens opnieuw op.

Er is discussie of dit automatisch moet gebeuren. Misschien wilt u het einde van dit bugrapport raadplegen om te zien of dit is gewijzigd sinds het moment van schrijven.

Nadat u opnieuw hebt opgestart, kunt u controleren of AppArmor is ingeschakeld door het volgende uit te voeren:

aa-status

Deze opdracht geeft een lijst van geladen AppArmor-profielen en hun huidige staat van naleving (afgedwongen, klagen, enz.).)

Als je loopt:

ps auxZ | grep -v '^onbeperkt'

U ziet een lijst met programma's die worden beperkt door een AppArmor-profiel. Een beperkt programma is een programma dat wordt beïnvloed en beperkt (ofwel passief, in de klachtenmodus, of actief in de afgedwongen modus) door AppArmor.

Modi wijzigen / AppArmor uitschakelen

Als u AppArmor wilt uitschakelen omdat een programma niet werkt, kunt u overwegen om het profiel in de klachtenmodus te plaatsen in plaats van de gedwongen modus. Voer hiervoor uit (als root of via sudo):

aa-klacht /pad/naar/programma

Als ping bijvoorbeeld niet correct werkt, gebruik dan:

aa-complain /usr/bin/ping

Zodra een profiel zich in de klachtenmodus bevindt, kunt u de logboekregistratie bekijken via /var/log/syslog of met journalctl -xe op systemd-systemen (Debian 8.x, Jessie en hoger).

Nadat u het profiel hebt bewerkt om de beperking te verwijderen of aan te passen, kunt u de afdwingingsmodus weer inschakelen voor het binaire bestand met:

aa-enforce /pad/naar/programma

Vervang in het bovenstaande voorbeeld /pad/naar/programma door het volledige pad naar het binaire bestand dat wordt beïnvloed door het betreffende profiel.

Als je een probleem hebt met een programma en het zich in de klachtenmodus bevindt, zullen de logs specifieke informatie geven over welke actie is geweigerd. Het bewerkingsveld zal uitleggen wat het programma heeft geprobeerd te doen, het profielveld zal het specifieke profiel beïnvloeden, de naam zal het doel van de actie specificeren (i.e. welk bestand is gestopt bij een lees- of schrijfbewerking), en de gevraagde en geweigerde maskers geven aan of de bewerking, zowel gevraagd door het programma als geweigerd volgens het profiel, was gelezen of gelezen-schrijf.

U kunt een profiel volledig uitschakelen door het volgende uit te voeren:

aa-uitschakelen /pad/naar/programma

Of u kunt AppArmor volledig uitschakelen door het bestand te bewerken: /etc/default/grub.d/apparmor.cfg bevatten:

GRUB_CMDLINE_LINUX_DEFAULT=”$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0”

Dan draaien:

update-grub

En je systeem opnieuw opstarten.

Werken met AppArmor-profielen

AppArmor-profielen bevinden zich in de /etc/apparmor.d/ map. Als u het pakket apparmor-profiles en apparmor-profiles-extra packages installeert, vindt u profielen in /usr/share/doc/apparmor-profiles en /usr/share/doc/apparmor-profiles/extra. Om ze te activeren, kopieert u de bestanden naar /etc/apparmor.d bewerk ze vervolgens om ervoor te zorgen dat ze de gewenste waarden bevatten, sla ze op en voer ze uit:

service-apparmor herladen

Als u slechts één profiel opnieuw wilt laden, voert u het volgende uit:

apparmor_parser -r /etc/apparmor.d/profiel

Waar "profiel" de naam is van het betreffende profiel.

Het wordt niet aanbevolen om de profielen en extra profielen gewoon te kopiëren naar /etc/apparmor.d directory zonder ze handmatig te bewerken. Sommige profielen kunnen oud zijn en sommige zullen zeker niet de gewenste waarden bevatten. Als je ze allemaal kopieert, stel ze dan in ieder geval in om te klagen, zodat je overtredingen kunt controleren zonder programma's in productie te onderbreken:

cd /etc/apparmor.d
voor f in *.* ; doe een klacht /etc/apparmor.d/$f; gedaan

Je kunt het aa-enforce commando afzonderlijk gebruiken om profielen die je wilt behouden in te schakelen, degene die problemen veroorzaken af ​​te stemmen en af ​​te dwingen, of degene die je niet nodig hebt te verwijderen door aa-disable uit te voeren of het profielbestand te verwijderen uit /etc/apparmor.d.

Een AppArmor-profiel maken

Voordat u een aangepast profiel aanmaakt, moet u zoeken in de /etc/apparmor.d en /usr/share/doc/apparmor-profiles mappen voor een bestaand profiel dat het binaire bestand in kwestie dekt. Om deze te zoeken, voer je uit:

vind /usr/share/doc/apparmor-profiles | grep "programma" -i

Vervangen programma met het programma dat u wilt beschermen met AppArmor. Als je er een vindt, kopieer het dan naar /etc/apparmor.d en bewerk vervolgens het bestand in uw favoriete teksteditor.

Elk profiel bestaat uit drie hoofdsecties: omvat, mogelijkheden en paden. U kunt een nuttige referentie vinden in de documentatie van SuSE.

Inclusief

Bevat een syntaxis die u in het bestand kunt gebruiken. Ze gebruiken de C/C++ #include <> syntaxis en verwijzen meestal naar abstracties die te vinden zijn in de /etc/apparmor.d/abstracties directory.

Mogelijkheden

Het gedeelte met mogelijkheden, meestal te vinden na de bevat, geeft een overzicht van specifieke mogelijkheden die het programma kan uitvoeren. U kunt een programma bijvoorbeeld een setuid-bewerking laten uitvoeren met:

capaciteit setuid

Met de mogelijkheid net_bind_service kan een programma binden aan een netwerkpoort. Als je dit niet toestaat, kan een serverdaemon zoals Apache poort 80 niet openen en luisteren. Het weglaten van deze mogelijkheid kan echter uitstekende beveiliging bieden voor processen die u niet vertrouwt op het netwerk.

Paden

U kunt paden opsommen die het programma kan lezen (en mogelijk schrijven). Als u het programma bijvoorbeeld toegang wilt geven tot het bestand /etc/passwd, voegt u toe:

/etc/passwd r

In het profiel. Let op de "r" - dit betekent alleen-lezen. Als u dit verandert in "w", is schrijven naar dit pad of bestand toegestaan.

Zelfs als u een pad toestaat in AppArmor, is het nog steeds onderhevig aan beperkingen van het Linux-bestandssysteem (i.e. ingesteld met chmod, chgrp en chown). AppArmor zal echter nog steeds een extra beschermingslaag bieden als deze mechanismen worden aangetast.

Conclusie

De sleutel tot een succesvolle AppArmor-implementatie is om profielen in te stellen om te klagen en vervolgens af te dwingen. Zorgvuldig logboekonderzoek geeft u de minimale paden en mogelijkheden die nodig zijn voor een succesvolle werking van het programma. Door deze toe te wijzen en niet meer, verhoogt u uw systeembeveiliging drastisch.

HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...