PSSonicWall: Consultas a SonicWall desde PowerShell

Una de las tecnologías con las que acostumbro a trabajar en mi día a día son firewalls SonicWall. Hace un tiempo busqué en la PowerShell Gallery algún módulo para trabajar nativamente con SonicWall desde PowerShell y mi sorpresa fue que no encontré ninguno.

En las últimas semanas he estado trabajando en un módulo con el que realizar consultas a firewalls SonicWall desde PowerShell y hoy os traigo la primera versión de PSSonicWall.

Acerca de PSSonicWall

PSSonicWall es un módulo hecho 100% con PowerShell del que podéis encontrar el código fuente en su repositorio de GitHub. Se sirve de la SonicOS API, la REST API del sistema operativo de SonicWall introducida en la versión 6.5.1.

Con PSSonicWall podremos, en su primera versión, realizar consultas a cualquier firewall SonicWall desde PowerShell gracias a que todos los appliances utilizan el mismo sistema operativo. Podremos sacar la configuración de las interfaces, las zonas, objetos y muchas cosas más.

PSSonicWall en PowerShell Gallery

Cómo habilitar la SonicOS API

Por defecto en todos los firewalls SonicWall la SonicOS API viene desactivada, por lo que antes de nada deberemos habilitarla:

  • Nos logeamos a nuestro firewall con una cuenta de administrador.
  • Entramos en la pestaña Manage.
  • Appliance > Base Settings.
  • Buscamos la sección SonicOS API.
  • Marcamos:
    • Enable SonicOS API.
    • Enable RFC-2617 HTTP Basic Access authentication.

SonicWall desde PowerShell

Si no disponemos de estas opciones lo más probable es que nuestro firewall tenga una versión inferior a 6.5.1, por lo que si queremos utilizar PSSonicWall antes deberemos actualizarlo.

Instalando PSSonicWall

PSSonicWall es el primer módulo que subo a la PowerShell Gallery (más acerca de esto en futuros post), lo que hace que instalarlo en cualquier sistema sea de lo más sencillo:

# Para el usuario actual:
Install-Module -Name PSSonicWall -Scope CurrentUser

# Para todos los usuarios de la máquina:
Install-Module -Name PSSonicWall

Una vez acabado el proceso ya tendremos todo lo necesario para interactuar con nuestro appliance SonicWall desde PowerShell. Como siempre podemos consultar todas las funciones disponibles con Get-Command:

Funciones de PSonicWall

Conectar y desconectar a SonicWall desde PowerShell

El primer paso para interactuar con SonicWall desde PowerShell es autenticarse contra el firewall en cuestión. Para ello nos valdremos de Connect-SWAppliance, al que podremos pasarle un objeto PSCredential o, de no hacerlo, nos solicitará unas credenciales.

Connect-SWAppliance -Server 192.168.168.168

Una vez finalice la ejecución ya podremos empezar a interactuar con nuestro appliance.

Es recomendable que cuando acabemos de ejecutar los comandos pertinentes sobre nuestro SonicWall desconectemos la sesión. Para ello simplemente debemos ejecutar Disconnect-SWAppliance:

Disconnect-SWAppliance

Ejecutando comandos sobre SonicWall desde PowerShell

En esta primera versión de PSSonicWall, como habréis podido comprobar en la captura superior, únicamente se incluyen funciones con el verbo Get, por lo que por el momento únicamente podremos listar información. En futuras releases se irán incorporando nuevas funciones con las que podremos automatizar la creación de NATs y ACLs de SonicWall desde PowerShell.

Las funciones actualmente disponibles son las siguientes:

  • Get-SWAccessRule: Lista las Access Rules.
  • Get-SWAddressGroup: Lista los Address Groups.
  • Get-SWAddressObject: Lista los Address Objects.
  • Get-SWDns: Lista los DNS.
  • Get-SWInterface: Lista las Interfaces.
  • Get-SWNatPolicy: Lista los NAT.
  • Get-SWRoutePolicy: Lista las reglas de Routing.
  • Get-SWSchedule: Lista las programaciones.
  • Get-SWServiceGroup: Lista los service Group.
  • Get-SWZone: Lista las Zonas.

Si, por ejemplo, quisieramos listar un objeto llamado ‘Sobrebits test’ podríamos hacerlo de la siguiente manera:

Listar Address Objects de SonicWall desde PowerShell

Hay que tener en cuenta que todo lo que devuelven estas funciones son objetos, por lo que nos podremos valer de cmdlets típicos de manipulación de objetos para hacer lo que queramos con el resultado:

# Podemos filtrar un resultado con Where-Object
Get-SWAddressObject | Where Name -eq 'Sobrebits Test'

# Podemos seleccionar campos con Select-Object
Get-SWAddressObject | Select Name,Zone

# O incluso podemos exportar el resultado a csv con Export-Csv
Get-SWAddressObject | Export-Csv -Path 'C:\Sobrebits\export.csv'

Obteniendo ayuda en PSSonicWall

Como en todo módulo que se precie, todas las funciones incluidas en PSSonicWall traen su propia ayuda. Podemos utilizar Get-Help para consultar la funcionalidad detallada de cada una de las funciones así como ejemplos de uso:

Ayuda en PSSonicWallConclusión

De momento esto es todo lo que os quería contar sobre PSSonicWall, en futuras entradas veremos casos de uso más concretos del módulo e iré informando sobre nuevas funciones añadidas. ¡Nos vemos en próximas entradas!

Deja un comentario