Instala y configura Cortex XDR en macOS

Cortex XDR es una plataforma avanzada de protección de endpoints que integra capacidades de detección, prevención y respuesta. Instalar Cortex XDR en dispositivos macOS a través de tu solución de gestión de dispositivos móviles (MDM) permite un despliegue centralizado y asegura que todos los endpoints estén protegidos sin necesidad de instalaciones manuales.

Esta guía proporciona instrucciones paso a paso para instalar Cortex XDR de forma silenciosa en macOS, incluyendo cómo desplegar el paquete de instalación necesario y configurar extensiones del sistema y permisos para una experiencia fluida del usuario.

Requisitos #

Antes de desplegar Cortex XDR en dispositivos macOS mediante Applivery, asegúrate de contar con lo siguiente:

  • Paquete del cliente Cortex XDR (.pkg).

  • Distribution ID y Cloud ELB Address (desde tu panel de Cortex XDR).

  • Script de activación (para licenciar el agente).

  • Política de Full Disk Access (mediante perfil de configuración).

  • Perfil .mobileconfig personalizado de Cortex XDR.

  • 1 licencia de Applivery para la Distribución de Apps.

Preparar Cortex XDR #

Para desplegar Cortex XDR utilizando Applivery, deberás subir el paquete comprimido de la aplicación (.zip) a la sección de Distribución de Apps y configurarlo con un script de activación previo a la instalación.

Primero, descarga el instalador de .pkg de Cortex XDR desde tu panel de control de Cortex XDR y copia tu Distribution ID y Cloud ELB Address, ya que los necesitarás más adelante para el script de activación.

Una vez descargado, comprime el archivo .pkg haciendo clic derecho sobre él y seleccionando Comprimir, lo que generará el archivo .zip necesario para Applivery.

A continuación, inicia sesión en el panel de Applivery y navega hasta la sección de Distribución de Apps. Desde allí, sigue los pasos descritos en nuestra documentación:

  1. Crear tu primera app.
  2. Cargar tu primera build.
app-distribution

Configurar la política de Cortex XDR #

Una vez en el panel de control de Applivery, dirígete a la sección Gestión de Dispositivos y selecciona Políticas (1). Selecciona la política donde desees desplegar la app. Desde el menú lateral izquierdo, accede a la sección Apps (2) y haz clic en el botón + Añadir App (3).

En el modal que se abrirá, selecciona la pestaña Applivery (4) para continuar con la configuración.

Establece la plataforma como macOS (5), selecciona Tu Workspace (6) como origen de la app y busca Cortex XDR en el desplegable de aplicaciones (7). Para la versión a instalar, selecciona Última (8) para asegurarte de que siempre se despliegue la última versión.

add-cortex

Continúa al siguiente paso y elige el modo de instalación según tu estrategia: Instalación forzosa, Requerido para la inscripción o Disponible.

En la sección Configuración, selecciona Pre-instalación (9) y pega tu script de activación, asegurándote de reemplazar los valores de ejemplo por tu propio Distribution ID y Cloud ELB Address.

cortex-pre-install

Script de activación #

				
					#!/bin/bash

# Get current session user
currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ && ! /loginwindow/ { print $3 }')

#Cortex XDR Distribution ID and Cloud Adress <---- MODIFY VARIABLES WITH YOURS
distribution="DISTRIBUTION_ID"
cloud="CLOUD_ADRESS" # https:// format

# Path where Config.xml will be saved
folderPath="/Users/$currentUser/Library/Application Support/auditApps"
filePath="$folderPath/Config.xml"

# Ensure auditApps folder exists and adjust permissions
sudo mkdir -p "$folderPath"
sudo chown "$currentUser" "$folderPath"
sudo chmod 700 "$folderPath"

# Write content to Config.xml using cat
sudo cat << EOF > "$filePath"
<?xml version="1.0"?>
<config version="1.0">
    <distribution_id>$distribution</distribution_id>
    <cloud_elb_address>$cloud</cloud_elb_address>
    <proxy_list />
</config>
EOF

# Adjust file permissions
sudo chown "$currentUser" "$filePath"
sudo chmod 600 "$filePath"

sudo installer -applyChoiceChangesXML "/Users/$currentUser/Library/Application Support/auditApps/Config.xml" -pkg "/Users/$currentUser/Library/Application Support/auditApps/Cortex XDR.pkg" -target /

# Verify if the file was created successfully
if [[ -f "$filePath" ]]; then
    echo "Config.xml created at $filePath"
else
    echo "Error creating Config.xml"
    exit 1
fi
				
			

Finalmente, haz clic en Guardar cambios para aplicar y guardar la configuración de tu política.

Perfil .mobileconfig personalizado de Cortex XDR #

Para aplicar la configuración personalizada, navega hasta la política correspondiente y haz clic en + Añadir configuración (10) desde el menú lateral izquierdo.

Luego, selecciona el botón + Importar (11) y pega el contenido proporcionado del archivo .xml en el editor.

Una vez completado este paso, asegúrate de hacer clic en Guardar cambios para aplicar la configuración.

xml
				
					<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Privacy Preferences Policy Control</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.TCC.configuration-profile-policy.7388C706-49BA-4067-BADE-8D031B084B69</string>
			<key>PayloadType</key>
			<string>com.apple.TCC.configuration-profile-policy</string>
			<key>PayloadUUID</key>
			<string>7388C706-49BA-4067-BADE-8D031B084B69</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>Services</key>
			<dict>
				<key>Accessibility</key>
				<array>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier "com.paloaltonetworks.cortex.agent" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>com.paloaltonetworks.cortex.agent</string>
						<key>IdentifierType</key>
						<string>bundleID</string>
						<key>StaticCode</key>
						<false/>
					</dict>
				</array>
				<key>SystemPolicyAllFiles</key>
				<array>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier "com.paloaltonetworks.traps.securityextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>com.paloaltonetworks.traps.securityextension</string>
						<key>IdentifierType</key>
						<string>bundleID</string>
						<key>StaticCode</key>
						<false/>
					</dict>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier pmd and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>/Library/Application Support/PaloAltoNetworks/Traps/bin/pmd</string>
						<key>IdentifierType</key>
						<string>path</string>
						<key>StaticCode</key>
						<false/>
					</dict>
				</array>
			</dict>
		</dict>
		<dict>
			<key>AllowUserOverrides</key>
			<true/>
			<key>AllowedSystemExtensions</key>
			<dict>
				<key>PXPZ95SK77</key>
				<array>
					<string>com.paloaltonetworks.traps.securityextension</string>
					<string>com.paloaltonetworks.traps.networkextension</string>
				</array>
			</dict>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR System Extensions</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.system-extension-policy.93526FBD-2421-4402-9CAF-210780E2D0FF</string>
			<key>PayloadType</key>
			<string>com.apple.system-extension-policy</string>
			<key>PayloadUUID</key>
			<string>93526FBD-2421-4402-9CAF-210780E2D0FF</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>FilterDataProviderBundleIdentifier</key>
			<string>com.paloaltonetworks.traps.networkextension</string>
			<key>FilterDataProviderDesignatedRequirement</key>
			<string>identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
			<key>FilterGrade</key>
			<string>firewall</string>
			<key>FilterPacketProviderBundleIdentifier</key>
			<string>com.paloaltonetworks.traps.networkextension</string>
			<key>FilterPacketProviderDesignatedRequirement</key>
			<string>identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
			<key>FilterPackets</key>
			<false/>
			<key>FilterSockets</key>
			<true/>
			<key>FilterType</key>
			<string>Plugin</string>
			<key>PayloadDescription</key>
			<string>Content Filter for the Cortex XDR agent network extension</string>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Network Content Filter</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.webcontent-filter.CA9C208A-EC6D-4565-864D-02B30DE9D56A</string>
			<key>PayloadType</key>
			<string>com.apple.webcontent-filter</string>
			<key>PayloadUUID</key>
			<string>CA9C208A-EC6D-4565-864D-02B30DE9D56A</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>PluginBundleID</key>
			<string>com.paloaltonetworks.cortex.app</string>
			<key>UserDefinedName</key>
			<string>Cortex XDR Network Filter</string>
		</dict>
		<dict>
			<key>NotificationSettings</key>
			<array>
				<dict>
					<key>AlertType</key>
					<integer>1</integer>
					<key>BadgesEnabled</key>
					<true/>
					<key>BundleIdentifier</key>
					<string>com.paloaltonetworks.traps-agent</string>
					<key>CriticalAlertEnabled</key>
					<true/>
					<key>GroupingType</key>
					<integer>0</integer>
					<key>NotificationsEnabled</key>
					<true/>
					<key>PreviewType</key>
					<integer>0</integer>
					<key>ShowInCarPlay</key>
					<true/>
					<key>ShowInLockScreen</key>
					<true/>
					<key>ShowInNotificationCenter</key>
					<true/>
					<key>SoundsEnabled</key>
					<true/>
				</dict>
				<dict>
					<key>AlertType</key>
					<integer>1</integer>
					<key>BadgesEnabled</key>
					<true/>
					<key>BundleIdentifier</key>
					<string>com.paloaltonetworks.cortex.agent</string>
					<key>CriticalAlertEnabled</key>
					<true/>
					<key>GroupingType</key>
					<integer>0</integer>
					<key>NotificationsEnabled</key>
					<true/>
					<key>PreviewType</key>
					<integer>0</integer>
					<key>ShowInCarPlay</key>
					<true/>
					<key>ShowInLockScreen</key>
					<true/>
					<key>ShowInNotificationCenter</key>
					<true/>
					<key>SoundsEnabled</key>
					<true/>
				</dict>
			</array>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Notifications</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.notificationsettings.FE495ADF-1E68-4486-9BB6-0E75D6C3177E</string>
			<key>PayloadType</key>
			<string>com.apple.notificationsettings</string>
			<key>PayloadUUID</key>
			<string>FE495ADF-1E68-4486-9BB6-0E75D6C3177E</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Managed Login Items</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.servicemanagement.1645DB60-CBC6-4AE2-A679-BC52DD4C85CE</string>
			<key>PayloadType</key>
			<string>com.apple.servicemanagement</string>
			<key>PayloadUUID</key>
			<string>1645DB60-CBC6-4AE2-A679-BC52DD4C85CE</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>Rules</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>Allows Cortex XDR launch daemons and launch agents</string>
					<key>RuleType</key>
					<string>LabelPrefix</string>
					<key>RuleValue</key>
					<string>com.paloaltonetworks.cortex</string>
					<key>TeamIdentifier</key>
					<string>PXPZ95SK77</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>PayloadDescription</key>
	<string>Cortex XDR Config: PPPC + SE + Content Filter + Notifications + BTM</string>
	<key>PayloadDisplayName</key>
	<string>Cortex XDR Agent Unified Config Profile v5</string>
	<key>PayloadIdentifier</key>
	<string>com.paloaltonetworks.cortex.AA16E926-D153-4B2E-B4CC-342BB</string>
	<key>PayloadOrganization</key>
	<string>Palo Alto Networks</string>
	<key>PayloadRemovalDisallowed</key>
	<true/>
	<key>PayloadScope</key>
	<string>System</string>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>AA16E926-D153-4B2E-B4CC-342BB</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
	<key>TargetDeviceType</key>
	<integer>5</integer>
</dict>
</plist>

				
			
Updated on mayo 8, 2025
¿Te ha sido útil este artículo?

En esta página