PAM-Authentifikatioun fonctionnéiert manuell, awer verseeft als OpenVPN-Service
Eng PAM-Anmeldung déi aus enger Root-Shell fonctionnéiert an ënner systemd verseeft, deit op den Helper hin, net op d’Passwuert. Trennt Privilegien, Dateizougrëff an SELinux.
D’Authentifikatioun iwwer PAM kann geléngt wann Dir de Client manuell start, an AUTH_FAILED versoen soubal systemd deeselwechte Profil start. D’Passwuert ännert sech tëschent dësen Ausféierungen net; wat sech ännert ass de Set vun Aschränkungen ëm de Prozess deen PAM d’Fro stellt. PAM äntwert iwwer en Helper deem seng Fäegkeet seng eegen Umeldungsinformatiounen ze änneren genee dat ass wat eng gehärt Unit ewech hëlt. Fannt deen Helper an d’Grenz déi en brauch ier Dir eng Fäegkeetslëscht beréiert.
unix_chkpwd ass de binäre Fichier deen d’PAM-Fro beäntwert
Mat lokaler Passwuertauthentifikatioun liest pam_unix seelen de Hash-Fichier selwer. Et féiert unix_chkpwd aus, deen d’Distributiounen als setuid root oder setgid shadow installéieren, sou datt ee Passwuert am Numm vun engem Prozess kontrolléiert ka ginn deen näischt domat ze dinn huet /etc/shadow ze liesen. Huelt d’Fäegkeet ewech déi Identitéit ze kréien an den Helper kann d’Kontroll net ofschléissen, also gëtt de Modul eng einfach Authentifikatiounsfehler zréck.
D’Fehler gesäit duerno an all Log deen de Client gesäit wéi en Umeldungsproblem aus. Dat ass d’Falle: de Client mellt wat PAM him gesot huet, a PAM mellt just datt de Stack nee gesot huet. Den Helper manuell als root auszeféieren beweist och näischt, well et e Privilegiewee test wat de Service ni benotzt. Liest d’Unit déi systemd tatsächlech gelueden huet, duerno de Systemlog fir den Versuch deen en gemaach huet. Déi zwou Vueë trennen e Sandbox-Problem vun engem falsch-Passwuert-Problem.
Liest d’Unit ier Dir de Passwuertlog liest
Eng gepackt Unit kann en Drop-in droen deen Dir net geschriwwen hutt, an déi effektiv Konfiguratioun ass d’zesummegesate Resultat. Dréckt d’Unit aus wéi systemd se gesäit, zesumme mat de Sandbox-Astellungen déi entscheeden ob den Helper sech selwer erhéije kann. Nëmme-Liesen-Inspektioun ass op dëser Etapp genuch.
systemctl cat [email protected]
systemctl show [email protected] -p User -p Group -p CapabilityBoundingSet -p AmbientCapabilities -p NoNewPrivileges
journalctl -u [email protected] -b
Den éischte Kommando weist wou d’Unit an hir Drop-ins hierkommen, wat wichteg ass well eng Iwwerschreiwung déi viru Méint bäigefüügt gouf méi laang lieft wéi d’Erënnerung firwat se existéiert. Den zweete dréckt déi Sandbox-Wäerter aus vun deenen déi nächst zwou Sektiounen ofhänken.
Vergläicht wat Dir gesitt mat engem funktionéierende Host vun der selwechter Distributioun a Versioun. En Ënnerscheed an User, CapabilityBoundingSet oder NoNewPrivileges ass eng konkret Spuer; en Ënnerscheed a Prosa-Kommentaren net. Schreift d’Wäerter op ier Dir eppes ännert, well eng spéider Vergläichung mat engem bewegende Zil beweist näischt. Wann de Service mat engem net-privilegéierten Kont an engem eidele Bounding-Set leeft, huet den Helper bal näischt mat deem en schaffe kann.
Umeldungsinformatiounen-Transformatioun, Dateizougrëff a Politik sinn dräi Grenzen
Fänkt mat deem un wat wärend exec geschitt. Eng setuid-Binär oder en Fichier mat Dateifäegkeeten löst eng Umeldungsinformatiounen-Transformatioun aus, also ass déi resultéierend Identitéit keng Fortsetzung vum Uruffer. De Bounding-Set begrenzt wat sou eng Binär kréie kann, an NoNewPrivileges blockéiert setuid-, setgid- an Dateifäegkeetsgewënn komplett. Jiddwereng vun den dräi kann den Helper stoppen an all aner Servicefunktioun intakt loossen.
Trennt duerno breet diskretionär Ëmgoen vu schmuelen Lieszougrëff. CAP_DAC_OVERRIDE iwwerspréngt diskretionär Kontrollen bal iwwerall, wärend CAP_DAC_READ_SEARCH Liesen an Verzeechnes-Duerchgang mat sengen eegene zousätzleche Pouvoiren deckt. Et sinn ënnerschiddlech Instrumenter mat ënnerschiddlechem Aflossradius, an keent ass eng Schreifweis fir loos PAM de Shadow-Fichier liesen.
Frot zum Schluss ob déi obligatoresch Politik d’Aktioun iwwerhaapt erlaabt. Eng Linux-Fäegkeet hewelt SELinux net aus, an eng ze hunn beweist näischt iwwer eng type enforcement-Regel. Behandelt eng Dateizougrëffs-Affuerderung an eng Fäegkeets-Affuerderung als ënnerschiddlech Beweiser, well se ënnerschiddlech Korrekturen an dacks ënnerschiddlech Besëtzer nennen. Liest all Feld vum Rekord amplaz just d’Wuert denied. Wat fir en Ausféierbaren d’Aktioun gemaach huet, an wat fir enger Domain et gelaf ass, wat fir en Zil et beréiert huet, wat fir eng Klass vun Objet bedeelegt war a wat fir eng Erlaabnes d’Politik ofgeleent huet — jiddwerengt engt d’Äntwert op eng aner Manéier an.
Zitt d’Affuerderung aus dem Auditlog eraus
Op engem duerchsetzenden Host ass d’Auditspuer déi eenzeg Plaz déi eng Affuerderung festhält. Frot déi rezent Evenementer of a liest se géint den Zäitstempel vun der feelgeschloener Umeldung, net géint d’Zäit wou Dir d’Enquête ugefaangen hutt.
ausearch -m AVC,USER_AVC -ts recent
En eidelt Resultat ass keen Beweis vun Onschold. Et heescht entweder datt d’Auditéierung net sammelt, oder datt Är Fënster de Versuch verpasst huet, an déi zwou Méiglechkeeten musse ausgeschloss ginn ier Dir d’Politik ausschléisst.
Dem Red Hat seng SELinux-Fehlerbehebungsguidance setzt Label- a Konfiguratiounskontrollen virun d’Generéiere vun Allow-Regelen, wat och fir dëst Problem déi richteg Reiefolleg ass. Eng falsch gelabelet Helper-Binär an eng Lach an der Politik ginn ähnlech Affuerderungen awer brauchen ënnerschiddlech Reparaturen. Eng Allow-Regel fir e Label-Fehler ze generéiere verstoppt de Feeler an iwwerléisst et dem nächsten Paketupdate en erëm anzeféieren. Bestätegt de Label op dem installéierten Helper ier Dir eng Politik schreift.
Beweist d’Ännerung mat enger akzeptéierter an enger refuséierter Umeldung
Ännert just d’Grenz déi Dir gewisen hutt, a test dann déi zwou Resultater. E Kont dee sech soll authentifizéieren muss geléngt, an e Kont mat engem falsche Passwuert muss nach ëmmer versoen. Eng Ännerung déi all Versuch geléngt huet d’Authentifikatioun ewechgeholl amplaz se ze reparéieren.
Maacht e richtegen Uschlossversuch a liest de Journal direkt duerno. D’Linn déi d’Reparatur beweist ass den pam_unix(openvpn:auth)-Agang fir deen Versuch: do soll authentifikatioun geléngt stoen, an keen AVC-Rekord soll déiselwecht Sekonn droen.
journalctl -u [email protected] -n 30 --no-pager
ss -tnp | grep openvpn
En funktionéierenden Tunnel brauch och eng Neiverbindung, well Sandbox-Ännerungen déi zweet Verbindung méi heefeg briechen wéi déi éischt. Kontrolléiert de etabléierte Socket no der Neiverbindung a bestätegt datt déiselwecht Unit en nach ëmmer servéiert.