NetWorker: Cómo configurar la autenticación de LDAPS
Summary: Descripción general de la configuración de AD o Protocolo ligero seguro de acceso a directorios (LDAPS) con NetWorker mediante el asistente de autoridad externa de NMC. Este artículo de la base de conocimientos también se puede utilizar para obtener instrucciones sobre cómo actualizar una configuración de autoridad externa existente. ...
Instructions
Este artículo se puede dividir en las siguientes secciones.
Requisitos previos:
- Determine qué host es el
authcservidor. Esto es útil en zonas de datos de NetWorker más grandes. En zonas de datos más pequeñas con un solo NetWorker Server, NetWorker Server es el servidor de autenticación. - Determine qué entorno de tiempo de ejecución de Java se utiliza para el servicio de autenticación.
- Configure variables de línea de comandos para facilitar la importación de los certificados de CA utilizados para SSL con la autenticación externa de NetWorker.
Configuración de SSL:
- Recopilación de los certificados necesarios para la comunicación SSL con el servidor de autenticación externo.
- Importe los certificados utilizados para la autenticación de LDAPS en el entorno de tiempo de ejecución de los servicios de autenticación
cacertsAlmacén de claves.
Configuración del recurso de autoridad externa:
- Cree el recurso de autoridad externa en el servicio de autenticación.
- Determine los usuarios o grupos externos que se utilizarán para NetWorker.
- Defina qué usuarios o grupos externos tienen acceso a NetWorker Management Console (NMC).
- Defina los permisos de NetWorker Server que tienen los usuarios y grupos externos.
- (Opcional) Configure FULL_CONTROL permisos de seguridad para un usuario o grupo externo.
Expanda cada una de las siguientes secciones para obtener instrucciones detalladas. Es importante que revise cuidadosamente cada sección antes de continuar:
Requisitos previos
Requisitos previos
Para utilizar LDAPS, debe importar el certificado de CA (o la cadena de certificados) desde el servidor LDAPS al almacén de claves cacerts de Java del servidor de autenticación de NetWorker.
- Determine qué host es el servidor de autenticación de NetWorker. Esto se puede validar en el archivo gstd.conf del servidor de NetWorker Management Console (NMC):
/opt/lgtonmc/etc/gstd.conf
Windows:
C:\Program Files\EMC NetWorker\Management\GST\etc\gstd.conf
gstd.conf El archivo contiene una cadena authsvc_hostname que define el servidor de autenticación que se utiliza para procesar las solicitudes de inicio de sesión para NetWorker Management Console (NMC). Para obtener más información, consulte: NetWorker: cómo identificar qué servidor es el servidor de autenticación utilizado por NMC y NWUI
- En el servidor de autenticación de NetWorker, identifique la instancia de Java utilizada.
B. En Acerca de, haga clic en Configuración avanzada del sistema.
C. En Propiedades del sistema, haga clic en Variables de ambiente.
D. El
NSR_JAVA_HOME define la ruta del entorno de tiempo de ejecución de Java que utiliza NetWorker authc:

-
- E. En una línea de comandos administrativa, configure variables de línea de comandos que especifiquen la ruta de instalación de Java determinada en el paso anterior:
set JAVA="Path\to\java"
keytool comandos en la configuración de SSL y garantiza la correcta cacerts file importa el certificado de CA. Esta variable se elimina una vez que se cierra la sesión de la línea de comandos y no interfiere con ninguna otra operación de NetWorker.
Linux:
A. Compruebe el /nsr/authc/conf/installrc para ver qué ubicación de Java se utilizó al configurar el servicio de autenticación:
sudo cat /nsr/authc/conf/installrc
[root@nsr ~]# cat /nsr/authc/conf/installrc JAVA_HOME=/opt/nre/java/latest
echo $JAVA_HOME devuelve una ruta diferente; por ejemplo, si también está instalado Oracle Java Runtime Environment (JRE). En el siguiente paso, es importante usar el método $JAVA_HOME ruta como se define en el archivo /nsr/authc/conf/installrc file.
B. Configure las variables de la línea de comandos que especifican la ruta de instalación de Java determinada en el paso anterior.
JAVA=/path/to/java
keytool comandos en la configuración de SSL y garantiza la correcta cacerts file importa el certificado de CA. Esta variable se elimina una vez que se cierra la sesión de la línea de comandos y no interfiere con ninguna otra operación de NetWorker.
Instalación de SSL
Instalación de SSL
Para usar LDAPS, debe importar el certificado de CA (o la cadena de certificados) desde el servidor LDAPS al almacenamiento de claves de confianza de JAVA. Esto se puede hacer con el siguiente procedimiento:
Obtenga el certificado de CA raíz (y la cadena, si está configurado) del servidor de autenticación.
Linux:
- Abra un símbolo del sistema elevado en el servidor de autenticación de NetWorker (AUTHC).
- Utilice la herramienta OpenSSL para obtener una copia del certificado de CA del servidor LDAPS.
openssl s_client -showcerts -connect LDAPS_SERVER:636 2>/dev/null </dev/null
- Por lo general, Linux incluye
opensslinstalado. Si los servidores Linux existen en el entorno, puede usaropensslpara recopilar los archivos de certificado. Estos se pueden copiar y utilizar en Windowsauthcservidor. - Si no tiene OpenSSL y no se puede instalar, pida al administrador de AD que proporcione uno o más certificados exportándolos en formato x.509 codificado Base-64.
- Reemplazar
LDAPS_SERVERcon el nombre de host o la dirección IP de su servidor LDAPS.
- El comando anterior genera el certificado de CA o una cadena de certificados en formato de correo con privacidad mejorada (PEM), por ejemplo:
-----BEGIN CERTIFICATE----- MIIGQDCCBSigAwIBAgITbgAAAAiwkngyAQWDwwACAAAACDANBgkqhkiG9w0BAQsF ...REMOVED FOR BREVITY... m4mGyefXz4TBTwD06opJf4NQIDo= -----END CERTIFICATE-----
- Copie el certificado a partir de
---BEGIN CERTIFICATE---y terminando con---END CERTIFICATE---y péguelo en un nuevo archivo. Si hay una cadena de certificados, debe hacerlo con cada certificado. - Vaya a Importación de certificados.
Windows:
Windows no tiene OpenSSL instalado de manera predeterminada. Si está instalado en su sistema, puede seguir las mismas instrucciones de la sección anterior de Linux . Si no está instalado, puede instalarlo desde una plataforma de otros fabricantes o seguir los siguientes pasos para recopilar el certificado sin OpenSSL.
- Abra un símbolo del sistema de PowerShell con privilegios elevados en el servidor de autenticación de NetWorker (AUTHC).
- Ejecute el siguiente script, reemplazando
EXTERNAL_AUTH_SERVER_ADDRESScon su nombre de host o IP de LDAP o Active Directory (AD):
$server = "EXTERNAL_AUTH_SERVER_ADDRESS"
$port = 636
$tcp = New-Object System.Net.Sockets.TcpClient
$tcp.Connect($server, $port)
$ssl = New-Object System.Net.Security.SslStream(
$tcp.GetStream(),
$false,
{ param($sender,$cert,$chain,$errors) $true }
)
try {
$ssl.AuthenticateAsClient($server)
"=== Protocol ==="
$ssl.SslProtocol
"=== Cipher ==="
"$($ssl.CipherAlgorithm) ($($ssl.CipherStrength)-bit)"
""
"=== Server Certificate ==="
$remoteCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($ssl.RemoteCertificate)
"Subject : $($remoteCert.Subject)"
"Issuer : $($remoteCert.Issuer)"
"NotBefore: $($remoteCert.NotBefore)"
"NotAfter : $($remoteCert.NotAfter)"
""
$b64 = [Convert]::ToBase64String($remoteCert.RawData, [Base64FormattingOptions]::InsertLineBreaks)
"-----BEGIN CERTIFICATE-----"
$b64
"-----END CERTIFICATE-----"
}
finally {
$ssl.Dispose()
$tcp.Dispose()
}
PS C:\Users\administrator.AMER> $server = "dc.amer.lan"
PS C:\Users\administrator.AMER> $port = 636
PS C:\Users\administrator.AMER>
PS C:\Users\administrator.AMER> $tcp = New-Object System.Net.Sockets.TcpClient
PS C:\Users\administrator.AMER> $tcp.Connect($server, $port)
PS C:\Users\administrator.AMER>
PS C:\Users\administrator.AMER> $ssl = New-Object System.Net.Security.SslStream(
>> $tcp.GetStream(),
>> $false,
>> { param($sender,$cert,$chain,$errors) $true }
>> )
PS C:\Users\administrator.AMER>
PS C:\Users\administrator.AMER> try {
>> $ssl.AuthenticateAsClient($server)
>>
>> "=== Protocol ==="
>> $ssl.SslProtocol
>> "=== Cipher ==="
>> "$($ssl.CipherAlgorithm) ($($ssl.CipherStrength)-bit)"
>> ""
>> "=== Server Certificate (exactly what the DC sends) ==="
>>
>> $remoteCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($ssl.RemoteCertificate)
>>
>> "Subject : $($remoteCert.Subject)"
>> "Issuer : $($remoteCert.Issuer)"
>> "NotBefore: $($remoteCert.NotBefore)"
>> "NotAfter : $($remoteCert.NotAfter)"
>> ""
>>
>> $b64 = [Convert]::ToBase64String($remoteCert.RawData, [Base64FormattingOptions]::InsertLineBreaks)
>> "-----BEGIN CERTIFICATE-----"
>> $b64
>> "-----END CERTIFICATE-----"
>> }
>> finally {
>> $ssl.Dispose()
>> $tcp.Dispose()
>> }
=== Protocol ===
Tls13
=== Cipher ===
Aes256 (256-bit)
=== Server Certificate ===
Subject : CN=DC.amer.lan
Issuer : CN=amer-DC-CA, DC=amer, DC=lan
NotBefore: 11/29/2025 01:17:22
NotAfter : 11/29/2026 01:17:22
-----BEGIN CERTIFICATE-----
MIIGDDCCBPSgAwIBAgITNAAAAAT93FoJVZwLkQAAAAAABDANBgkqhkiG9w0BAQsFADBAMRMwEQYK
...REMOVED FOR BREVITY...
c1HhZw24yOwFSOtTQg==
-----END CERTIFICATE-----
- Copie el certificado a partir de
---BEGIN CERTIFICATE---y terminando con---END CERTIFICATE---y péguelo en un nuevo archivo. Si hay una cadena de certificados, debe hacerlo con cada certificado. - Vaya a Importación de certificados.
Importación de certificados:
2. Muestra una lista de certificados de confianza actuales en el almacén de confianza.
- Para NetWorker 19.12.x (JRE 8.x) y versiones anteriores:
%JAVA%\bin\keytool -list -keystore %JAVA%\lib\security\cacerts -storepass changeit
$JAVA/bin/keytool -list -keystore $JAVA/lib/security/cacerts -storepass changeit
- Para NetWorker 19.13 (JDK 17.x) y versiones posteriores:
%JAVA%\bin\keytool -list -cacerts -storepass changeit
$JAVA/bin/keytool -list -cacerts -storepass changeit
grep o findstr comandos con el comando anterior para limitar la búsqueda. Si hay un certificado de CA obsoleto o existente del servidor LDAPS, elimínelo con el siguiente comando:
- Para NetWorker 19.12.x (JRE 8.x) y versiones anteriores:
%JAVA%\bin\keytool -delete -alias ALIAS_NAME -keystore %JAVA%\lib\security\cacerts -storepass changeit
$JAVA/bin/keytool -delete -alias ALIAS_NAME -keystore $JAVA/lib/security/cacerts -storepass changeit
- Para NetWorker 19.13 (JDK 17.x) y versiones posteriores:
%JAVA%\bin\keytool -delete -alias ALIAS_NAME -cacerts -storepass changeit
$JAVA/bin/keytool -delete -alias ALIAS_NAME -cacerts -storepass changeit
- Para NetWorker 19.12.x (JRE 8.x) y versiones anteriores:
%JAVA%\bin\keytool -import -alias ALIAS_NAME -keystore %JAVA%\lib\security\cacerts -storepass changeit -file \PATH_TO\CERT_FILE
$JAVA/bin/keytool -import -alias ALIAS_NAME -keystore $JAVA/lib/security/cacerts -storepass changeit -file /PATH_TO/CERT_FILE
- Para NetWorker 19.13 (JDK 17.x) y versiones posteriores:
%JAVA%\bin\keytool -import -alias ALIAS_NAME -cacerts -storepass changeit -file \PATH_TO\CERT_FILE
$JAVA/bin/keytool -import -alias ALIAS_NAME -cacerts -storepass changeit -file /PATH_TO/CERT_FILE
- Reemplace ALIAS_NAME con un alias para el certificado importado (por ejemplo, RCA (root CA)). Cuando se importan varios certificados para una cadena de certificados, cada certificado debe tener un nombre de alias diferente y importarse por separado.
- Reemplace PATH_TO\CERT_FILE por la ubicación del archivo de certificado que creó en el paso 6.
yes y presione Intro.
C:\Users\administrator>%JAVA%\bin\keytool -import -alias RCA -keystore %JAVA%\lib\security\cacerts -storepass changeit -file C:\root-ca.cer Owner: CN=networker-DC-CA, DC=networker, DC=lan Issuer: CN=networker-DC-CA, DC=networker, DC=lan Serial number: 183db0ae21d3108244254c8aad129ecd ... ... ... Trust this certificate? [no]: yes Certificate was added to keystore
|) el sistema operativo grep o findstr a lo anterior para acotar el resultado.
C:\Users\administrator>%JAVA%\bin\keytool -list -keystore %JAVA%\lib\security\cacerts -storepass changeit | findstr RCA RCA, Jan 15, 2025, trustedCertEntry,
net stop nsrd net start nsrd
nsr_shutdown service networker start
Adición de autenticación externa a NetWorker
Adición de autenticación externa a NetWorker
Como alternativa, puede usar el método authc_config Método de script:
Si se sigue alguno de los artículos, puede ir a la parte donde se crea el recurso de autoridad externa, no es necesario repetir el procedimiento de importación del certificado.
1. Inicie sesión en NetWorker Management Console (NMC) con su cuenta de administrador de NetWorker. Seleccione Setup-->Users and Roles-->External Authority.
Para Active Directory mediante SSL:
R. Obtenga los detalles del ID de configuración:
authc_config -u Administrator -p 'NetWorker_AdminPass' -e find-all-configs authc_config -u Administrator -p 'NetWorker_AdminPass' -e find-config -D config-id=CONFIG_ID#
Ejemplo:
nve:~ # authc_config -u Administrator -p '!Password1' -e find-all-configs
The query returns 1 records.
Config Id Config Name
1 AD
nve:~ # authc_config -u Administrator -p '!Password1' -e find-config -D config-id=1
Config Id : 1
Config Tenant Id : 1
Config Name : AD
Config Domain : networker.lan
Config Server Address : ldaps://dc.networker.lan:636/dc=networker,dc=lan
Config User DN : cn=nw authadmin,ou=dell,dc=networker,dc=lan
Config User Group Attribute :
Config User ID Attribute : sAMAccountName
Config User Object Class : person
Config User Search Filter :
Config User Search Path :
Config Group Member Attribute: member
Config Group Name Attribute : cn
Config Group Object Class : group
Config Group Search Filter :
Config Group Search Path :
Config Object Class : objectclass
Is Active Directory : false
Config Search Subtree : true
authc_config Comando para establecer is-active-directory=y:
authc_config -u Administrator -p 'NETWORKER_ADMIN_PASSWORD' -e update-config -D config-id=CONFIG_ID# -D config-server-address="ldaps://DOMAIN_SERVER:636/BASE_DN" -D config-user-dn="CONFIG_USER_DN" -D config-user-dn-password='CONFIG_USER_PASSWORD' -D config-active-directory=y
nve:~ # authc_config -u Administrator -p '!Password1' -e update-config -D config-id=1 -D config-server-address="ldaps://dc.networker.lan:636/dc=networker,dc=lan" -D config-user-dn="cn=nw authadmin,ou=dell,dc=networker,dc=lan" -D config-user-dn-password='PASSWORD' -D config-active-directory=y
Configuration AD is updated successfully.
nve:~ #
nve:~ # authc_config -u Administrator -p '!Password1' -e find-config -D config-id=1
Config Id : 1
Config Tenant Id : 1
Config Name : AD
Config Domain : networker.lan
Config Server Address : ldaps://dc.networker.lan:636/dc=networker,dc=lan
Config User DN : cn=nw authadmin,ou=dell,dc=networker,dc=lan
Config User Group Attribute :
Config User ID Attribute : sAMAccountName
Config User Object Class : person
Config User Search Filter :
Config User Search Path :
Config Group Member Attribute: member
Config Group Name Attribute : cn
Config Group Object Class : group
Config Group Search Filter :
Config Group Search Path :
Config Object Class : objectclass
Is Active Directory : true
Config Search Subtree : true
El recurso de autoridad externa ahora está configurado correctamente para Microsoft Active Directory.
Configuración de permisos de acceso de usuarios y grupos externos en NetWorker
authc_mgmt en NetWorker Server para confirmar que los grupos/usuarios de AD/LDAP estén visibles:
authc_mgmt -u Administrator -p 'NetWorker_Admin_Pass' -e query-ldap-users -D query-tenant=tenant_name -D query-domain=domain_name authc_mgmt -u Administrator -p 'NetWorker_Admin_Pass' -e query-ldap-groups -D query-tenant=tenant_name -D query-domain=domain_name authc_mgmt -u Administrator -p 'NetWorker_Admin_Pass' -e query-ldap-groups-for-user -D query-tenant=tenant_name -D query-domain=domain_name -D user-name=ad/ldap_username
nve:~ # authc_mgmt -u Administrator -p '!Password1' -e query-ldap-users -D query-tenant=default -D query-domain=networker.lan The query returns 40 records. User Name Full Dn Name ... ... bkupadmin CN=Backup Administrator,OU=Support_Services,OU=DELL,dc=networker,dc=lan nve:~ # authc_mgmt -u Administrator -p '!Password1' -e query-ldap-groups -D query-tenant=default -D query-domain=networker.lan The query returns 71 records. Group Name Full Dn Name ... ... NetWorker_Admins CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan nve:~ # authc_mgmt -u Administrator -p '!Password1' -e query-ldap-groups-for-user -D query-tenant=default -D query-domain=networker.lan -D user-name=bkupadmin The query returns 1 records. Group Name Full Dn Name NetWorker_Admins CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan
authc Los comandos pueden fallar con un error de "contraseña incorrecta", incluso cuando se proporciona la contraseña correcta. Esto se debe a que la contraseña se especifica como texto visible con el signo "-p" opción. Si encuentra esto, elimine "-p password" de los comandos. Se le solicitará que ingrese la contraseña oculta después de ejecutar el comando.
Configuración de NMC para aceptar la autenticación externa:
Configuración de los permisos de usuario externo de NetWorker Server:
nsraddadmin para lograr esto para los usuarios/grupos externos que deben tener derechos de administrador completos de NetWorker:
nsraddadmin -e "USER/GROUP_DN"Ejemplo:
nve:~ # nsraddadmin -e "CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan" 134749:nsraddadmin: 'CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan' added to the 'external roles' list of 'Security Administrators' user group. 134749:nsraddadmin: 'CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan' added to the 'external roles' list of 'Application Administrators' user group.
(Opcional) Configurar FULL_CONTROL Permisos para usuarios y grupos administradores externos
FULL_CONTROL Permisos para usuarios y grupos administradores externos- Administración de usuarios y grupos del servidor de autenticación de NetWorker.
- Administre el recurso de autoridad externa configurado en NetWorker.
Sin estos permisos, observará Access is Denied Errores al intentar acceder a estos ajustes como usuario externo.
De manera predeterminada, solo la cuenta predeterminada de administrador de NetWorker puede acceder a estos ajustes.
Para configurar FULL_CONTROL permisos, realice lo siguiente:
- Abra un símbolo del sistema de administración/raíz.
- Mediante el DN de grupo de AD al que desea conceder FULL_CONTROL permiso para ejecutar:
authc_config -u Administrator -p 'NetWorker_Admin_Pass' -e add-permission -D permission-name=FULL_CONTROL -D permission-group-dn="AD/LDAP_group_dn"
nve:~ # authc_config -u Administrator -p '!Password1' -e add-permission -D permission-name=FULL_CONTROL -D permission-group-dn="CN=NetWorker_Admins,OU=DELL,dc=networker,dc=lan" Permission FULL_CONTROL is created successfully. nve:~ # nve:~ # authc_config -u Administrator -p '!Password1' -e find-all-permissions The query returns 2 records. Permission Id Permission Name Group DN Pattern Group DN 1 FULL_CONTROL ^cn=Administrators,cn=Groups.*$ 2 FULL_CONTROL CN=NetWorker_Admins,OU=DELL,dc=networ...
Acceder a NMC o NWUI mediante cuentas de usuario externas
Additional Information
Para obtener información adicional, consulte la Guía de configuración de seguridad de NetWorker, disponible en: https://www.dell.com/support/home/product-support/product/networker/docs
Valores de configuración:
| Tipo de servidor | Seleccione LDAP si el servidor de autenticación es un servidor LDAP de Linux/UNIX, Active Directory si utiliza un servidor de Microsoft Active Directory. |
| Authority Name | Proporcione un nombre para esta autoridad de autenticación externa. Este nombre puede ser lo que quieras que sea, es solo para diferenciar entre otras autoridades cuando se configuran varias. |
| Nombre del servidor del proveedor | Este campo debe contener el nombre de dominio completo (FQDN) de su servidor AD o LDAP. |
| Grupo de usuarios | Los grupos de usuarios se pueden utilizar en entornos donde se puede usar más de un método de autenticación o cuando se deben configurar varias autoridades. De manera predeterminada, se selecciona el grupo de usuarios "predeterminado". El uso de grupos de usuarios altera el método de inicio de sesión. Inicie sesión en NMC con "domain\user" para el grupo de usuarios predeterminado o "tenant\domain\user" para otros grupos de usuarios. |
| Dominio | Especifique su nombre de dominio completo (sin incluir un nombre de host). Por lo general, este es el DN base, que consta de los valores de los componentes de dominio (DC) de su dominio. |
| Número de puerto | Para la integración de LDAP y AD, utilice el puerto 389. Para LDAP mediante SSL, utilice el puerto 636.
Estos puertos son puertos predeterminados que no son de NetWorker en el servidor AD/LDAP. |
| User DN | Especifique el nombre distintivo (DN) de una cuenta de usuario que tenga acceso de lectura completo en el directorio de LDAP o AD.
Especifique el DN relativo de la cuenta de usuario o el DN completo si reemplaza el valor establecido en el campo Dominio. |
| Contraseña de DN de usuario | Especifique la contraseña de la cuenta de usuario especificada. |
| Clase de objeto de grupo | La clase de objeto que identifica a los grupos en la jerarquía de LDAP o AD.
|
| Ruta de búsqueda de grupo | Este campo se puede dejar en blanco, en cuyo caso authc es capaz de consultar el dominio completo. Se deben otorgar permisos para el acceso al servidor de NMC/NetWorker antes de que estos usuarios/grupos puedan iniciar sesión en NMC y administrar el servidor de NetWorker. Especifique la ruta relativa al dominio en lugar del DN completo. |
| Atributo de nombre de grupo | El atributo que identifica el nombre del grupo. Por ejemplo, cn |
| Atributo de miembro del grupo | La membresía grupal del usuario dentro de un grupo
|
| Clase de objeto de usuario | La clase de objeto que identifica a los usuarios en la jerarquía de LDAP o AD.
Por ejemplo, inetOrgPerson o user |
| User Search Path | Al igual que la ruta de búsqueda de grupo, este campo se puede dejar en blanco, en cuyo caso AUTHC es capaz de consultar el dominio completo. Especifique la ruta relativa al dominio en lugar del DN completo. |
| User ID Attribute | El ID de usuario que está asociado con el objeto de usuario en la jerarquía de LDAP o AD.
|
Otros artículos relevantes:
- NetWorker: Cómo importar o reemplazar certificados firmados por una autoridad de certificación para "AUTHC" y "NWUI" (Linux)
- NetWorker: Cómo importar o reemplazar certificados firmados por una autoridad de certificación para "AUTHC" y "NWUI" (Windows)
- NetWorker: Cómo importar o reemplazar certificados firmados por una autoridad de certificación para NMC
- NetWorker: integración y configuración de AD y LDAP (guía de solución de problemas)