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