De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
Dit document beschrijft het proces voor het configureren van de macOS-servicevoorwaarden in Cisco ISE.
Cisco raadt kennis van de volgende onderwerpen aan:
Opmerking: Dit document behandelt de configuratie voor de macOS-servicevoorwaarde. De eerste configuratie van de houding wordt niet behandeld in dit document.
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
macOS-servicevoorwaarde is handig wanneer u case moet gebruiken om te controleren of een service is geladen in het macOS-apparaat en kunt u ook controleren of deze actief is of niet. De macOS-servicevoorwaarde kan twee verschillende servicetypen controleren: daemons en agents.
Een daemon is een programma dat op de achtergrond wordt uitgevoerd als onderdeel van het totale systeem (dat wil zeggen, het is niet gebonden aan een bepaalde gebruiker). Een daemon kan geen enkele GUI weergeven; meer specifiek is het niet toegestaan om verbinding te maken met de vensterserver. Een webserver is het perfecte voorbeeld van een daemon.
Een agent is een proces dat op de achtergrond wordt uitgevoerd namens een bepaalde gebruiker. Agents zijn handig omdat ze dingen kunnen doen die daemons niet kunnen, zoals betrouwbaar toegang krijgen tot de hoofddirectory van de gebruiker of verbinding maken met de vensterserver. Een kalender monitoring programma is een goed voorbeeld van een agent.
In het onderstaande diagram kunt u zien hoe elk apparaat wordt geladen op basis van het opstarten van het apparaat en de aanmelding van de gebruiker:
Meer informatie over daemons en agenten vindt u hier in de documentatie van Apple
Demonen en agents die beschikbaar zijn op je macOS-apparaat zijn te vinden op de volgende locaties:
Location (Locatie) |
Beschrijving |
~/Library/LaunchAgents |
Per-user agents geleverd door de gebruiker. |
/Library/LaunchAgents |
Per-user agents geleverd door de beheerder. |
/Library/LaunchDaemons |
Systeembrede daemons die door de beheerder worden geleverd. |
/System/Library/LaunchAgents |
OS X Per-user agents |
/System/Library/LaunchDaemons |
OS X Systeembrede daemons |
U kunt de lijst van elke categorie vanaf macOS-terminal controleren met behulp van deze opdrachten:
ls -ltr ~/Library/LaunchAgents
ls -ltr /Library/LaunchAgents
ls -ltr /Library/LaunchDaemons
ls -ltr /System/Library/LaunchAgents
ls -ltr /System/Library/LaunchDaemons
De vorige locaties kunnen u alle daemons en agents laten zien die beschikbaar zijn op het macOS-apparaat, maar niet allemaal zijn geladen of actief.
De configuratie voor macOS-servicevoorwaarden kan worden gedaan met behulp van de volgende stappen:
1. Identificeer de servicenaam die moet worden gecontroleerd.
2. (Optioneel) Controleer de details van de service om te bepalen of deze een Agent of een Deamon is.
3. Selecteer de service-operator die moet worden geëvalueerd.
4. Configureer de vereiste en het houdingsbeleid voor een dergelijke voorwaarde.
Opmerking: de conditie van de servicehouding vereist verhoogde bevoegdheden om te werken, dus het is een MUST dat ISE PSN wordt vertrouwd door Cisco Secure Client (voorheen AnyConnect) - Naslaggids
De ISE Posture Compliance Module kan controleren of de services geladen, uitgevoerd en geladen zijn en worden uitgevoerd met afsluitcode.
Om de services te controleren die zijn geladen, gebruikt u de opdracht sudo launchtl dumpstate.
Als u de services wilt controleren die zijn geladen en een afsluitcode hebben, gebruikt u de lijst met opdrachtregels sudo.
De vorige opdrachten kunnen abrupt veel informatie weergeven, in plaats daarvan kunt u deze opdrachten gebruiken om alleen de werkelijke servicenaam weer te geven:
Als u alleen de servicenamen wilt controleren die zijn geladen, gebruikt u deze opdracht:
sudo grep -B 10 -A 10 -E "^\s*state = "<< "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's|.*/|;s| = {$||'
Gebruik deze opdracht als u alleen de servicenamen wilt controleren die zijn geladen en een afsluitcode hebben:
sudo launchctl list | awk '{if (NR>1) print $3}'
Deze commando's tonen veel informatie, dus aan het einde van elke opdracht wordt aanbevolen om een ander grep-filter te gebruiken om de service te vinden waarnaar u op zoek bent.
Als u bijvoorbeeld op zoek bent naar een leverancierspecifieke service, kunt u een trefwoord gebruiken als filter op de en.
In het geval van Cisco-services zouden de opdrachten ongeveer als volgt zijn:
sudo grep -B 10 -A 10 -E "^\s*state = "<< "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's|.*/|;s| = {$||' | grep -i cisco
sudo launchctl list | awk '{if (NR>1) print $3}' | grep -i cisco
In het tweede deel van de configuratie van deze voorwaarde moet u controleren of uw service een daemon- of agenttype is.
Tip: Deze stap is optioneel, omdat ISE u de mogelijkheid biedt om de optie voor Daemon of User Agent te selecteren, dus u kunt die optie gewoon selecteren en dit onderdeel overslaan.
Als u in deze toestand korrelig wilt zijn, kunt u het type controleren door dit te doen:
Bijvoorbeeld, voor de opdracht sudo grep -B 10 -A 10 -E "^\s*state = "<< "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's/.\{3\}$/' | grep -i com.cisco.secureclient.iseposture, is de uitvoer: gui/501/com.cisco.secureclient.iseposture.
2. Controleer het servicetype met de opdracht sudo launchctl print { Uw launchctl servicenaam } | grep -i 'type = Launch'
In het volgende voorbeeld, voor de opdracht: sudo launchctl print gui/501/com.cisco.secureclient.iseposture | grep -i 'type = Launch', is de uitvoer: type = LaunchAgent.
Dit betekent dat het servicetype Agent is, anders wordt het type = LaunchDaemon weergegeven.
Opmerking: Als de informatie leeg is, selecteert u de optie voor Daemon of User Agent in ISE voor de instelling voor het servicetype.
Met ISE kunt u 5 verschillende serviceproviders selecteren:
Zijn al die services die worden vermeld bij het gebruik van deze twee opdrachten:
sudo grep -B 10 -A 10 -E "^\s*state = "<< "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's|.*/|;s| = {$||'
sudo launchctl list | awk '{if (NR>1) print $3}'
Zijn al die diensten waarvan de eigenschappenlijst (plist) is gedefinieerd, maar die niet zijn geladen, of diensten waarvoor zelfs geen eigenschappenlijst (plist) is gedefinieerd, dus helemaal niet kunnen worden geladen?
Deze services zijn niet eenvoudig te identificeren en het is het meest gebruikelijk voor de use case wanneer u wilt controleren of een specifieke service niet in het macOS-apparaat zou moeten bestaan.
Als u bijvoorbeeld wilt voorkomen dat de zoomservice op het macOS-apparaat wordt geladen, kunt u hier ons.zoom.zoomDaemon plaatsen als de waarde voor de service, op deze manier zorgt u ervoor dat zoom niet wordt uitgevoerd of helemaal niet is geïnstalleerd.
Er zijn services die niet kunnen worden verwijderd en de lijst met eigenschappen is gedefinieerd.
Met deze opdracht kunt u bijvoorbeeld zien dat dhcp6d plist is gedefinieerd:
ls -ltr /System/Library/LaunchDaemons | grep.com.apple.dhcp6d.plist
Als u de lijst met services controleert, ziet u dat deze niet is geladen:
sudo grep -B 10 -A 10 -E "^\s*state = "<< "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's|.*/|;s| = {$|' | grep -i com.apple.dhcp6d
sudo launchctl list | awk '{if (NR>1) print $3}' | grep -i.com.apple.dhcp6d
Als u de waarde instelt op com.apple.dhcp6d" is het macOS-apparaat compatibel, omdat de service niet is geladen, ook al is de service-lijst gedefinieerd.
Niet alle services worden uitgevoerd, er zijn meerdere statussen voor elke service, zoals uitvoeren, niet uitvoeren, wachten, afsluiten, niet-geïnitialiseerd, enzovoort.
Als u alle services wilt controleren die worden uitgevoerd, gebruikt u deze opdracht:
sudo grep -B 10 -A 10 -E "^\s*state = running" << "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's|.*/|;s| = {$||'
De services die met het bovenstaande commando worden vermeld, raken de conditie van de serviceoperator Loaded & Running.
Sommige services kunnen worden afgesloten met een verwachte of onverwachte afsluitcode. Dergelijke services kunnen met de volgende opdracht worden vermeld:
sudo grep -B 10 -A 10 "state = e" << "$(launchctl dumpstate)" | grep -aiE "\/.*= {" | sed 's/.\{3\}$/'
Om de afsluitcode te kennen, kunt u elke service kiezen en de opdracht gebruiken:
sudo launchctl print { Uw launchctl servicenaam } | grep -i 'laatste afsluitcode'
Voorbeeld:
Sudo Launchctl Print gui/501/com.apple.mdmclient.agent | GREP -i 'Laatste afsluitcode'
waarvan de uitvoer is: laatste afsluitcode = 0
Opmerking: hier betekent de afsluitcode 0 meestal dat alles correct is gedaan door de service. Als een computer niet overeenkomt met de 0 als afsluitcode, betekent dit dat de service de verwachte actie niet heeft uitgevoerd.
Deze laatste optie werkt wanneer de service is geladen en uitgevoerd of geladen met afsluitcode.
Deze afbeelding toont een voorbeeld van een macOS-servicevoorwaarde.
Opmerking: momenteel wordt alleen de exacte servicenaam ondersteund. Er is een uitbreidingsverzoek voor ondersteuning van jokertekens in de servicenamen, Cisco bug ID CSCwf01373
Zodra de voorwaarde is geconfigureerd, moet u een vereiste voor een dergelijke voorwaarde maken, gebruikt u de optie Alleen berichttest voor deze vereiste.
Navigeer naar ISE > Werkcentra > Houding > Vereisten om het te maken.
Opmerking: er zijn geen herstelopties voor servicevoorwaarden.
Zodra dit is gebeurd, is de laatste stap het configureren van het Posture Policy dat de gemaakte vereiste gebruikt.
Navigeer naar ISE > Werkcentra > Houding > Houdingsbeleid om het beleid te maken.
Schakel het nieuwe beleid in, noem het zoals u wilt en selecteer de vereiste die u zojuist hebt gemaakt.
U kunt controleren of de posture-conditie van macOS is geslaagd of mislukt vanuit de Cisco Secure Client GUI zelf.
U kunt ook het ISE Posture-rapport controleren van ISE > Operations > Reports > Reports > Endpoints and Users > Posture Assessment by Endpoint.
Veelvoorkomende problemen die u kunt tegenkomen tijdens het configureren van deze macOS-servicehoudingsvoorwaarde zijn:
Zoals eerder aangegeven, vereist de servicevoorwaarde verhoogde machtigingen. Het is noodzakelijk dat het certificaat voor het postuur-scanproces door de server wordt vertrouwd.
Anders komt u deze fout tegen:
De ISE Posture-module ontdekt de PSN-servers op basis van IP-adres of volledig gekwalificeerde domeinnaam (FQDN). De beste praktijk is om de Posture-configuratiebestanden te hebben om de ISE-knooppunten via FQDN te ontdekken, dus de certificaten voor beheer en portaal (Client Provisioning Portal) moeten de FQDN in het CN-veld of het SAN-veld bevatten. U kunt ook een wildcard-certificaat hiervoor gebruiken, wildcard-certificaten worden ondersteund voor deze stroom.
Vanwege systeemeffecten kan het CN-veld in de toekomst niet worden vertrouwd. Voeg de jokervermelding of de FQDN in het SAN-veld toe als een best practice.
Als de ISE-PSN's worden ontdekt via het IP-adres in plaats van FQDN, is het een vereiste dat het IP-adres van de knooppunten wordt opgenomen in het CN-veld of het SAN-veld van het certificaat (de certificaten) dat is gekoppeld aan het beheer- en portaalgebruik.
ISE Posture-modules vertrouwen op het certificaat dat door de ISE-server wordt gepresenteerd. Als de CA zich in het systeemcertificaatarchief van de macOS-sleutelhangertoegang bevindt, moet deze CA de instelling Bij gebruik van dit certificaat instellen op Altijd vertrouwen.
U kunt het wangedrag tegenkomen dat zelfs wanneer het certificaat correct is geladen en aan alle CN- en SAN-vereisten is voldaan, het macOS-systeem het certificaat nog steeds niet vertrouwt. Open in dergelijke gevallen de toepassing Keychain-toegang, navigeer naar het tabblad Systeemcertificaatopslag en verwijder daar het CA-certificaat.
Navigeer vervolgens naar macOS Terminal-toepassing en voer deze opdracht uit: sudo /usr/bin/security add-trusted-cert -r trustRoot -d -k /Library/Keychains/System.keychain
{Pad naar uw CA-certificaat}
Als uw certificaat zich bijvoorbeeld in uw bureaublad bevindt, is de opdracht deze: sudo /usr/bin/security add-trusted-cert -r trustRoot -d -k /Library/Keychains/System.keychain /Users/JohnDoe/Downloads/CA_certificate.crt
Nadat u de opdracht hebt uitgevoerd, start u de computer opnieuw op en probeert u het opnieuw.
U kunt ook de foutmeldingen "Cisco Secure Client Scan omzeilen" en "Uw netwerk is niet geconfigureerd om Cisco ISE Posture Agent te gebruiken" tegenkomen:
Dit bericht wordt weergegeven omdat er geen profielen zijn geconfigureerd in Client Provisioning in ISE > Work Centers > Posture > Client Provisioning > Client Provisioning Policies.
Hoewel u mogelijk een voorwaarde ziet voor Mac OSX-besturingssystemen, betekent dat niet dat u alle macOS-versies dekt.
Standaard bevat ISE geen nieuwste macOS-versies, zoals Sequoia (15.6.x), om een dergelijk bericht te voorkomen en ervoor te zorgen dat de houding wordt bijgewerkt.
U moet de Posture-feed bijwerken vanuit ISE > Werkcentra > Posture > Instellingen > Software-updates > Posture-updates.
Dit kan online rechtstreeks vanuit ISE worden bijgewerkt, of offline via een zip-bestand dat hier kan worden gedownload van de Posture Offline-site
Als je in de details wilt gaan, kun je een DART-bundel verzamelen van het geposte macOS-apparaat. Hiervoor moet de DART-module zijn geïnstalleerd. Navigeer vervolgens met de Cisco Secure Client-toepassing actief naar de menubalk en klik op Cisco Secure Client en vervolgens in Diagnostics Reports genereren.
Opmerking: Het is belangrijk om de optie Inclusief systeemlogboeken ingeschakeld te hebben bij het genereren van de DART-bundel, anders zal de DART-bundel geen informatie over de ISE-houdingsmodule bevatten.
Vanwege veiligheidsredenen kunnen sommige logs versleuteld en niet zichtbaar zijn, maar in het unified_log.log van de DART-bundel ziet u mogelijk vergelijkbare logs zoals weergegeven:
Opmerking: Dit logboekvoorbeeld is voor de macOS-servicevoorwaarde die in dit document is geconfigureerd.
[Tue Feb 27 10:30:58.576 2024][csc_iseposture]Function: createCheckXMLString Thread Id: 0x4A9FD7C0 File: Check.cpp Line: 417 Level: debug :: parsed Check string to: (
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
)
[Tue Feb 27 10:30:58.576 2024][csc_iseagent]Function: processPostureData Thread Id: 0x4A9FD7C0 File: AuthInfo.cpp Line: 763 Level: debug :: Decrypted posture data, X-Perfigo-DM-Software-List =
ISE: 3.3.0.430
ISE: 2.x
0
30
macOS-Service-Requirement
macOS Service is non compliant
3
0
3
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
(macOS-Service-Condition)
[Tue Feb 27 10:30:58.576 2024][csc_iseagent]Function: SMP_initCheck Thread Id: 0x4A9FD7C0 File: SMNavPosture.cpp Line: 682 Level: debug :: MSG_SP_START_CHK, {item:0,str:"
ISE: 3.3.0.430
ISE: 2.x
0
30
macOS-Service-Requirement
macOS Service is non compliant
3
0
3
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
(macOS-Service-Condition)
",isElevationAllowed:1,nRemediationTimeLeft:0}
[Tue Feb 27 10:30:58.646 2024][csc_eliseposture]Function: createCheckXMLString Thread Id: 0x4A9FD7C0 File: Check.cpp Line: 417 Level: debug :: parsed Check string to: (
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
)
[Tue Feb 27 10:30:58.646 2024][csc_eliseposture]Function: doCheck Thread Id: 0x4A9FD7C0 File: Rqmt.cpp Line: 279 Level: debug :: Checking rqmt, [macOS-Service-Requirement]:Mandatory
[Tue Feb 27 10:30:58.658 2024][csc_eliseposture]Function: doCheck Thread Id: 0x4A9FD7C0 File: CheckSvc.cpp Line: 87 Level: debug :: The agent com.apple.sysmond check had a result of : success. The requested checkType was: ctDaemonOrUserAgentStatus and opType was: cotRunning
[Tue Feb 27 10:30:58.658 2024][csc_eliseposture]Function: completeCheck Thread Id: 0x4A9FD7C0 File: Rqmt.cpp Line: 318 Level: debug :: check result of rqmt, [macOS-Service-Requirement]:PASSED
U kunt ook de houdingscomponent instellen op foutopsporingslogniveau in de ISE PSN-node die het eindpunt verifieert en positioneert.
U kunt dit logniveau configureren vanuit ISE > Operations > Troubleshoot > Debug Wizard > Debug Log Configuration. Klik op de PSN-hostnaam en wijzig het logniveau van de component Posture van INFO in DEBUG.
Met hetzelfde voorbeeld voor de macOS-servicevoorwaarde kunt u vergelijkbare logs zien in het ise-psc.log:
2024-02-27 10:30:58.658 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-1][[]] cisco.cpm.posture.runtime.PostureHandlerImpl -::username:::- NAC agent xml
ISE: 3.3.0.430
ISE: 2.x
0
30
macOS-Service-Requirement
macOS Service is non compliant
3
0
3
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
(macOS-Service-Condition)
2024-02-27 10:30:58.659 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-1][[]] cisco.cpm.posture.util.StatusUtil -::username:::- StatusUtil - getPosturePolicyHTML [
ISE: 3.3.0.430
ISE: 2.x
0
30
macOS-Service-Requirement
macOS Service is non compliant
3
0
3
macOS-Service-Condition
3
303
com.apple.sysmond
running
0
(macOS-Service-Condition)
]
2024-02-27 10:31:06.044 DEBUG [https-jsse-nio-10.4.21.59-8443-exec-8][[]] cisco.cpm.posture.util.AgentUtil -::username:::- Increase MnT counter at POSTURE:Posture.Requirement.Success.macOS-Service-Requirement
Als er nog steeds problemen zijn, kunt u een TAC-ticket ophalen bij het Cisco-team.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
11-Sep-2025
|
Eerste vrijgave |