Mostrando las entradas con la etiqueta Windows Server. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Windows Server. Mostrar todas las entradas

lunes, 14 de abril de 2025

DHCP Windows Server - Dashboard Grafana

 hace unos días, un cliente me pidió tener dashboards en grafana de su servidor DHCP para conocer y medir el servicio, por lo que me puse a investigar como podiamos obtener los datos del servidor DHCP y poder armar los tableros en grafana, por lo que en esta entrada les comento lo que hice:

Para este propósito usamos un script en PowerShell + Telegraf + Influxdb y Grafana.

1.- En el servidor DHCP arme un script en powershell y guardarlo con el nombre GetDHCPStats.ps1 en la siguiente ruta C:\Scripts el cual ejecuta los siguientes comandos:

Get-DhcpServerv4Scope: Devuelve la configuración del ámbito IPv4 de los ámbitos especificados

 Get-DhcpServerv4ScopeStatistics: Obtener las estadísticas de alcance IPv4 correspondientes a los ID de alcance IPv4.

 Get-DhcpServerv4ExclusionRange: Devuelve los rangos de direcciones IPv4 excluidos de los ID de alcance especificados.

 Get-Service -Name DHCPServer: Otener el estado del servicio DHCP.

Aqui coloco el código desarrollado:

 

  
    
 $scopes = Get-DhcpServerv4Scope

foreach ($scope in $scopes) {
    $stats = Get-DhcpServerv4ScopeStatistics -ScopeId $scope.ScopeId
    $exclusionRanges = Get-DhcpServerv4ExclusionRange -ScopeId $scope.ScopeId
    $totalExcluidas = 0

    foreach ($rango in $exclusionRanges) {
        $startBytes = [System.Net.IPAddress]::Parse($rango.StartRange).GetAddressBytes()
        $endBytes = [System.Net.IPAddress]::Parse($rango.EndRange).GetAddressBytes()
        $startInt = ($startBytes[0] -shl 24) -bor ($startBytes[1] -shl 16) -bor ($startBytes[2] -shl 8) -bor $startBytes[3]
        $endInt = ($endBytes[0] -shl 24) -bor ($endBytes[1] -shl 16) -bor ($endBytes[2] -shl 8) -bor $endBytes[3]
        $totalExcluidas += $endInt - $startInt + 1
    }

    # Construcción correcta de campos (sin espacios)
    $fields = @(
        "start_range=`"$($scope.StartRange)`"",
        "end_range=`"$($scope.EndRange)`"",
        "addresses_free=$($stats.AddressesFree)",
        "addresses_used=$($stats.AddressesInUse)",
        "addresses_reserved=$($stats.Reserved)",
        "addresses_excluded=$totalExcluidas",
        "percentage_used=$($stats.PercentageInUse)"
    ) -join ','

    # Línea única con formato válido
    $line = "dhcp_scope,host=$env:COMPUTERNAME,scope_id=$($scope.ScopeId),subnetMask=$($scope.SubnetMask),name=$($scope.Name.Replace(' ','\ ')),state=$($scope.State),lease=$($scope.LeaseDuration) $fields"
    
    Write-Output $line
}

# Estado del servicio
$service = Get-Service -Name DHCPServer
Write-Output "dhcp_service,host=$env:COMPUTERNAME status=`"$($service.Status)`""  
 
2.- Configurar Telegraf para enviar los datos a servidor Influxdb
  
 
[[inputs.exec]]
 commands = ["powershell -ExecutionPolicy Bypass -File C:\\Scripts\\GetDHCPStats.ps1"]
 timeout = "10s"
 data_format = "influx"  
   
 
  
  
[[outputs.influxdb]]
  urls = ["http://IP_InfluxDB:8086"]  # Ej: http://192.168.1.100:8086
  database = "dhcp_metrics"           # Nombre de la base de datos
  username = "usuario"                # Opcional
  password = "contraseña"             # Opcional
     
 

Finalmente obtendremos este dashboard en nuestro grafana: 

Dashboard DHCP

 Nos vemos en la próxima!!!.

martes, 31 de octubre de 2023

Instalación de Wazuh : Monitorear Agentes

Hace unos días intente probar el SIEM open sources, y me llamo mucho la atención WAZUH, como sabrán me puse manos a la obra y me dedique a instalarlo, pues la instalación no es muy compleja, me decidí integrarlo con Elastic Stack, siguiendo este enlace:


Lo interesante posterior a la instalación, es que Wazuh Agent es un potente EDR (detección y respuesta de endpoints) complementandolo con dos servicios adicionales, de forma predeterminada, el agente Wazuh recopila registros de Windows y del sistema, pero no proporciona información suficiente sobre nuestra actividad en los end points. Una solución EDR debe recopilar conexiones de red, generar procesos, ejecutar comandos, etc, para que podamos detectar con precisión cualquier actividad maliciosa.

Instalación de Sysmon
Instalemos Sysmon en nuestros end points de Windows. Sysmon es nuestro registro de Windows con potenciado y es muy recomendado aplicarlo en Windows, proporciona su propio archivo Sysmon Config, pero en esta demostración usaré olafhartong GitRepo: Sysmon Modular

¡Vea el script de PowerShell a continuación para instalar Sysmon fácilmente en sus propios puntos finales!


Sysmon ahora escribe eventos lo podemos revisar en el visor de eventos, Registro de Aplicaciones y Servicios / Microsoft / Windows / Sysmon/Operational:



Solos nos resta agregar el bloque de configuración <localfile> al grupo de nuestro Agente Wazuh le indicamos al Agente Wazuh que recopile nuestros eventos Sysmon.

<localfile>
<location>Microsoft-Windows-Sysmon/Operational</location>
<log_format>eventchannel</log_format>
</localfile>

Packetbeat Install

Usaremos Packetbeat para analizar el tráfico de la red en tiempo real, la implementación de Packetbeat en nuestros end points Linux (Sysmon para Windows ya recopila el tráfico de red) nos permite analizar el tráfico de red que viaja hacia y desde nuestros terminales.

Este script bash a continuación para instalar Packetbeat rápidamente


Ahora Packetbeat está escribiendo sus registros en

/tmp/packetbeat/packetbeat.

Finalmente Agregamos el bloque de configuración <localfile> al grupo de nuestro Agente Wazuh para que recopile nuestros eventos Packetbeat.

<localfile>
<log_format>json</log_format>
<location>/tmp/packetbeat/packetbeat</location>
</localfile>

Ok con esto ya nuestros end points usando Wazuh Agent con Sysmon y Packetbeat brinda una visión completa de los puntos finales. Espero que les haya gustado esta integración nos vemos en la proxima y espero que los pueda defender de los malos.


Referencias:


martes, 30 de mayo de 2017

Windows 2008 R2 DNS Service No incia Crashea

El dia de ayer me tope con que el DNS no iniciaba, me lanzaba el siguiete mensaje en log de eventos:

Source: Application
Event ID: 1000

Error Message:


Faulting application name: dns.exe, version: 6.1.7601.23764, time stamp: 0x58e7aa3d
Faulting module name: dns.exe, version: 6.1.7601.23764, time stamp: 0x58e7aa3d
Exception code: 0xc0000005
Fault offset: 0x0000000000061393
Faulting process id: 0x190
Faulting application start time: 0x01d2ccf9c7f882d2
Faulting application path: C:\Windows\system32\dns.exe
Faulting module path: C:\Windows\system32\dns.exe
Report Id: 06a191ee-38ed-11e7-a418-00155dc9fb02


Consultando varias paginas no encontraba con el problema, en un sitio encontre que el problema de presentaba despues de instalar la siguiente KB3145126, pero lo raro es que esa actualizacion no la tenia instalada en mi servidor DNS.

Segui averiguado y llegue con otro sitio en la que hablaba de otra KB4019264, resulta que esa si la tenia instalada por lo que procedi a desintalarla usando el siguiente comando:

wusa /uninstall /kb:4019264 /quiet

Se reinicio el servidor y despues de logearme el serivicio arranco normalmente.

Para concluir sigue siendo imperativo probar las actualizaciones antes de aplicarlas en produccion, el problema radica cuando tienes Servidores con diferentes versiones y una infraestructura considerable, y mas aun cuando hay actualizaciones que corrigen ciertas vulnerabilidades en las que tienes que jugartela si las instalas directo sin pasar por las pruebas necesarias ya que ese tiempo de pruebas, puede que sea aprovechado y tu infraestructura se vea comprometida. 

Nos vemos en al proxima, saludos