Ask me anything
Ithy Logo
Sign in to save

Correo Seguro con SSL en PowerShell para Sysmon y Accesos Remotos

Guía Integral para Enviar Alertas de Seguridad con PowerShell

secure email server setup

Principales Ideas Destacadas

  • Configuración SMTP y SSL: Es fundamental tener un servidor SMTP compatible con SSL para asegurar la transmisión de correos.
  • Integración con Sysmon y Accesos Remotos: Se debe capturar y filtrar eventos de Sysmon, RDP y AnyDesk para disparar las notificaciones.
  • Automatización y Seguridad de Credenciales: Utilizar tareas programadas y métodos seguros para manejar credenciales en PowerShell.

Configuración Básica para Enviar Correos con SSL

Para enviar correos electrónicos con seguridad en PowerShell, es necesario utilizar el cmdlet Send-MailMessage. Este cmdlet ofrece el parámetro -UseSsl que habilita la conexión segura mediante SSL/TLS. Normalmente, debes proporcionar la dirección del servidor SMTP, puerto, credenciales y los detalles del mensaje.

Ejemplo Básico de Script

Configuración del Correo

A continuación se muestra un ejemplo de cómo configurar y enviar un correo electrónico seguro:

# Datos del correo
$EmailFrom = "sender@example.com"
$EmailTo   = "recipient@example.com"
$Subject   = "Alerta de seguridad detectada"
$Body      = "Se ha registrado un evento de seguridad a través de Sysmon o acceso remoto."

# Configuración del servidor SMTP
$SMTPServer = "smtp.example.com"  # Cambia por tu servidor SMTP
$SMTPPort   = 587                # Puerto común para SSL/TLS (puede ser 465 según el servidor)
$Username   = "your_username"
$Password   = "your_password"

# Creación de credenciales seguras
$secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
$mycreds   = New-Object System.Management.Automation.PSCredential ($Username, $secpasswd)

# Envío del correo
Send-MailMessage -From $EmailFrom `
                 -To $EmailTo `
                 -Subject $Subject `
                 -Body $Body `
                 -SmtpServer $SMTPServer `
                 -Port $SMTPPort `
                 -Credential $mycreds `
                 -UseSsl $true
  

En este script se especifica la dirección del servidor SMTP, el número de puerto, y las credenciales necesarias de forma segura. Es importante que adaptes los datos a tu entorno.


Integración con Sysmon y Accesos Remotos (RDP, AnyDesk)

Sysmon es una herramienta de Sysinternals que registra eventos importantes en el sistema, como la creación de procesos o conexiones de red. Para enviar notificaciones de correo cuando se detecten ciertos eventos, se debe combinar la lectura de eventos con la acción de envío. Lo mismo es aplicable a eventos de accesos remotos como RDP o AnyDesk.

Monitoreo de Eventos en Sysmon

Filtrado y Procesamiento

Puedes utilizar Get-WinEvent para filtrar eventos específicos del registro de Sysmon. Por ejemplo, para monitorear el EventID 1 (usualmente relacionado con la creación de procesos):

# Filtrar eventos de Sysmon
$events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 1 | Where-Object { $_.Id -eq 1 }

foreach ($event in $events) {
    # Construir cuerpo del mensaje con detalles del evento
    $eventoDetalle = $event.Properties[1].Value
    $Body = "Se ha detectado un evento de Sysmon: Creación de proceso - $eventoDetalle"
    
    # Enviar alerta por correo electrónico
    Send-MailMessage -From $EmailFrom `
                     -To $EmailTo `
                     -Subject $Subject `
                     -Body $Body `
                     -SmtpServer $SMTPServer `
                     -Port $SMTPPort `
                     -Credential $mycreds `
                     -UseSsl $true
}
  

El script captura el evento, extrae información relevante y ejecuta el envío del correo de alerta. Esta integración permite monitorear en tiempo real eventos específicos generados por Sysmon.

Notificaciones para Acceso Remoto (RDP o AnyDesk)

Configuración

Similar al monitoreo de Sysmon, los accesos remotos se pueden capturar desde el registro de eventos de Windows. Configura el Servicio de Escritorio Remoto o AnyDesk para dejar rastros en el registro, y luego filtra dichos eventos.

# Ejemplo de monitoreo de eventos RDP
$rdpEvents = Get-WinEvent -FilterHashtable @{
    LogName = 'Security';
    ID = 4624  # ID de inicio de sesión (modificar según criterios)
}

foreach ($event in $rdpEvents) {
    $Body = "Se ha detectado un acceso remoto (RDP/AnyDesk): " + $event.Message
    Send-MailMessage -From $EmailFrom `
                     -To $EmailTo `
                     -Subject "Alerta de acceso remoto detectado" `
                     -Body $Body `
                     -SmtpServer $SMTPServer `
                     -Port $SMTPPort `
                     -Credential $mycreds `
                     -UseSsl $true
}
  

Adapta el ID o utiliza filtros avanzados mediante la propiedad FilterHashtable para capturar los eventos que desees monitorear. Puedes configurar tareas programadas que ejecuten estos scripts automáticamente al detectarse nuevos eventos.


Tabla Resumen de Parámetros y Configuraciones

Parámetro Descripción Ejemplo/Valor
SMTP Server Dirección del servidor SMTP que admite SSL/TLS. smtp.example.com
SMTP Port Puerto para conexiones seguras (usualmente 587 o 465). 587
UseSsl Habilita la conexión SSL/TLS. true
Credential Objeto de credenciales seguro para autenticación SMTP. New-Object PSCredential
LogName Nombre del registro de eventos a monitorear (ej. Sysmon). Microsoft-Windows-Sysmon/Operational
Event ID ID de eventos específicos (ej. creación de procesos, accesos). 1 o 4624

Automatización y Consideraciones de Seguridad

La integración de los scripts de correo y monitoreo de eventos en PowerShell se puede automatizar a través del Programador de Tareas de Windows. Esto permite ejecutar scripts en intervalos regulares o en respuesta directa a la ocurrencia de determinados eventos.

Automatización Mediante Tareas Programadas

Configuración de la Tarea Programada

Configura la tarea para que inicie el script en función de:

  • Eventos específicos en el registro (por ejemplo, la creación de un proceso en Sysmon o inicio de sesión RDP).
  • Intervalos de tiempo definidos para realizar revisiones periódicas.
  • Condiciones de error o notificaciones adicionales en caso de fallos en el envío del correo.

Manejo Seguro de Credenciales

Recomendaciones Adicionales

Es fundamental proteger las credenciales usadas para autenticarse en el servidor SMTP. Algunas recomendaciones para mejorar la seguridad incluyen:

  • Utilizar Get-Credential para solicitar la contraseña de forma interactiva.
  • Almacenar credenciales en un archivo seguro y encriptado, utilizando métodos como Export-Clixml y Import-Clixml.
  • Considerar la autenticación multifactor (MFA) en las cuentas de correo si el proveedor lo permite.

Referencias


Búsquedas Relacionadas Recomendadas


Last updated March 19, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI