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.
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.