Como parte de nuestra política de seguridad y para proteger nuestros dominios de posibles categorizaciones en listas negras es esencial el uso de políticas contra el spam saliente. Además de utilizar las políticas predefinidas en Exchange Online, podemos crear políticas personalizadas para mejorar este filtrado. Vamos a ver cómo las podemos hacer con Powershell en este Cybertruco.

powershell

Como decíamos Exchange Online Protection (EOP) ya viene de fábrica con algunas políticas de SPAM, pero es más que probable que se nos queden cortas si queremos controlar este problema de manera más estricta o granular. Estas políticas que creemos, tendrán precedencia sobre las estándar y también podremos especificar precedencia entre las mismas.

Gestión de políticas de SPAM saliente en Exchange Online con Powershell

Instalar el módulo en Powershell

Para gestionar esto debemos tener instalado el módulo de Exchange Online. Lo podemos instalar como vemos a continuación

Install-Module -Name ExchangeOnlineManagement

Y ahora lo importamos con

Import-Module -Name ExchangeOnlineManagement

Conectar a Exchange Online con Powershell

Ahora lanzaremos el siguiente comando para conectarnos

Connect-ExchangeOnline

Configurando variables de la política de SPAM saliente

En una política de spam saliente tenemos dos elementos que conviene identificar y entender desde el inicio. Por una parte tenemos las política de filtrado de spam saliente. Estas específican las conficiones, acciones a tomar y las notificaciones. Por otra parte tenemos las reglas de filtrado de spam saliente, las cuales especifican a quien y con qué prioridad aplican las políticas de filtrado de spam. En una misma política podemos tener diferentes reglas de filtrado. Cada política debe tener asociada al menos una regla y cada regla solo puede estar asociada a una política.

Antes de establecer en si la política tenemos que almacenar en diferentes variables las características de la misma. Primero definiremos el nombre de política y el nombre de regla.

$nombredepolitica="Mipoliticadespamsaliente"
$nombrederegla="Miregladespam"

Ahora definiremos nuestro filtro para bloquear el spam saliente, esto lo haremos con el cmdlet New-HostedOutboundSpamFilterPolicy. Aquí utilizaremos los nombres definidos antes y además definiremos las conficiones de nuestra política. Estos son:

  • Cantidad de emails que una dirección puede enviar por hora a destinatarios internos. Parámetro RecipientLimitInternalPerHour.
  • Cantidad de emails que una dirección puede enviar por hora a destinatarios externos. Parámetro RecipientLimitExternalPerHour.
  • Cantidad total de emails que una dirección puede enviar al día. Parámetro RecipientLimitPerDay.
  • Accion a tomar cuando se alcanzan los limites establecidos. Parámetro ActionWhenThresholdReached. Esta acción puede ser la predefinida de bloquear al usuario para lo que queda de día (BlockUserForToday),la de bloquear al usuario indefinidamente (BlockUser) o la de únicamente alertarnos (Alert).

Por lo general tendríamos reglas en parejas, primero una que nos alertará con unos límites relativamente bajos y luego otra de bloqueo cuando se alcanzarán realmente los mismos. Por experiencia en los casos realmente de SPAM, el tiempo de actuación entre una y otra será muy corto pero la alerta nos servirá para detectar y corregir malas prácticas del staff en cuanto al envío de emails.

En el ejemplo siguiente, bloquearemos a un usuario si envía por hora más de 100 emails a destinatarios externos o más de 300 a internos o más de 500 en total al dia. El comando quedaría así

New-HostedOutboundSpamFilterPolicy -Name $nombredepolitica -AdminDisplayName "Política de SPAM saliente personalizada" -RecipientLimitExternalPerHour 100 -RecipientLimitInternalPerHour 300 -RecipientLimitPerDay 500 -ActionWhenThresholdReached BlockUser

Listar las políticas de SPAM saliente

Para ver el listado de políticas salientes en nuestro tenant, lanzaremos el siguiente cmdlet

Get-HostedOutboundSpamFilterPolicy

Está lista contendrá la política por defecto y cualquier otra que hayamos creado nosotros. También lo podríamos lanzar seleccionando únicamente los parámetros que hemos definido antes para simplificar el resultado con un selecto como vemos a continuación:

Get-HostedOutboundSpamFilterPolicy | Select-Object Name, RecipientLimitExternalPerHour, RecipientLimitInternalPerHour, ActionWhenThresholdReached

Editar una política de spam saliente

Para modificar alguno de los parámetros definidos de una política utilizaremos el cmdlet Set-HostedOutboundSpamFilterPolicy, indicando el nombre de la política y el parámetro a modificar. En este caso vamos a cambiar la acción a tomar del bloqueo que hemos puesto antes a simplemente una alerta.

Set-HostedOutboundSpamFilterPolicy -Identity $nombredepolitica -ActionWhenThresholdReached Alert

Crear una regla de filtrado de SPAM saliente

Cada política debe tener asociada al menos una regla y cada regla solo puede estar asociada a una política.

New-HostedOutboundSpamFilterRule -Name $nombrederegla -HostedOutboundSpamFilterPolicy $nombredepolitica -from "[email protected]"

Editar una regla de filtrado de SPAM saliente

En este caso y como es habitual utilizaremos la variante Set del cmdlet, Set-HostedOutboundSpamFilterRule. Vamos a ver cómo la anterior regla de filtrado que hemos asignado a un solo usuario ahora la asignamos a un grupo entero, en este caso llamado "grupotest". Para ello utilizamos el parámetro FromMemberOf y también sobreescribimos el parámetro From con un $null para borrar lo que contenía previamente.

Set-HostedOutboundSpamFilterRule -Identity $nombrederegla -FromMemberOf "grupotest" -From $null

De la misma manera que podemos definir a quien afecta la regla, también podemos definir la prioridad de la misma en relación a otras. Esto lo hacemos con el mismo cmdlet con el parámetro Priority. Siendo el valor 0 el de máxima prioridad. En el siguiente ejemplo asignamos está prioridad a la regla que hemos creado anteriormente

Set-HostedOutboundSpamFilterRule -Identity $nombrederegla -Priority 0

Listar reglas de filtrado de spam saliente

Para no perder la pista de las reglas que vamos creando las podemos listar con el siguiente cmdlet.

Get-HostedOutboundSpamFilterRule

Deshabilitar/Habilitar una regla de filtrado de spam saliente

Podemos deshabilitar reglas (que no eliminar) y volver a habilitarlas en cualquier momento. A continuación ambos ejemplos

Disable-HostedOutboundSpamFilterRule -Identity $nombrederegla

Enable-HostedOutboundSpamFilterRule -Identity $nombrederegla

Eliminar políticas y reglas de filtrado de spam saliente

Ya sabemos que una política puede contener N reglas las cuales no dejan de ser entidades independientes. Por tanto se comportarán de la misma manera a la hora de ser eliminadas. Es decir si eliminamos una política con una regla dentro, está seguirá existiendo habiendo perdido, eso si, la relación con esa política ya eliminada. Por lo que hemos de borrarlas por separado.

Para eliminar una política de filtrado de spam saliente utilizaremos el siguiente cmdlet únicamente indicando el nombre de la misma.

Remove-HostedOutboundSpamFilterPolicy -Identity $nombredepolitica

Para eliminar una regla de filtrado de spam saliente, como vemos a continuación de nuevo únicamente indicando su nombre.

Remove-HostedOutboundSpamFilterRule -Identity $nombrederegla

Espero que os sea de utilidad, saludos.