Registre com o iptables qual usuário está entregando e-mail para a porta 25

4

Como ficamos na lista negra do CBL, configurei as seguintes regras de firewall com o iptables:

#!/bin/bash
iptables -A OUTPUT -d 127.0.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --gid-owner mail -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 25 -m owner --uid-owner Debian-exim -j ACCEPT
iptables -A OUTPUT -p tcp -m limit --limit 15/minute -m tcp --dport 25 -j LOG --log-prefix "LOCAL_DROPPED_SPAM"
iptables -A OUTPUT -p tcp -m tcp --dport 25 -j REJECT --reject-with icmp-port-unreachable

Não consigo me conectar à porta 25 do host local com outro usuário que não seja root ou um membro do grupo de e-mail - > Então parece funcionar.

Ainda restam algumas dúvidas:

  • Quão eficaz você classifica esse conjunto de regras para evitar spam vindo de scripts incorretos hospedados no servidor?
  • Existe uma maneira de bloquear as portas 25 e 587 dentro da mesma declaração?
  • O uso de /usr/sbin/sendmail também é limitado ou bloqueado por este conjunto de regras?
  • Existe uma maneira de registrar o nome de usuário de todas as outras tentativas que tentam entregar o material para a porta 25?
por Maus 11.11.2012 / 13:31

1 resposta

6

Provavelmente seria melhor ter a política para a tabela OUTPUT definida como DROP e, em seguida, abrir explicitamente as portas relevantes, etc., mas isso será bastante específico para seu ambiente, portanto, é um exercício para o OP.

Você pode usar -m multiport para corresponder a até 15 portas, por exemplo

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m owner --gid-owner mail -j ACCEPT

para permitir que o e-mail do grupo seja enviado em ambas as portas ou

Você pode registrar novas conexões de saída como esta

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -m state --state NEW -j LOG --log-uid --log-prefix  "LOCAL_DROPPED_SPAM "

e você recebe uma mensagem como esta

Nov 11 12:52:26 hostname kernel: LOCAL_DROPPED_SPAM IN= OUT=eth0 SRC=192.168.254.181 DST=192.168.254.187 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=53476 DF PROTO=TCP SPT=49893 DPT=25 WINDOW=14600 RES=0x00 SYN URGP=0 UID=1000 GID=1000

iptables -A OUTPUT -p tcp -m multiport --dports 25,587 -j DROP

para finalmente descartar todas as conexões de saída nas duas portas.

Lembre-se de que as ações do iptables são regras na ordem em que estão na tabela e a primeira partida vence, então

  • Coloque suas regras de ALLOW primeiro
  • Siga isto com as regras de LOG
  • Em seguida, DROP
por 11.11.2012 / 13:58