Tengo un servidor de correo y tengo la mala costumbre de que los usuarios hagan clic en el botón enviar/recibir simultáneamente en un segundo, lo que provoca que el registro se inunde con información innecesaria.
Estoy tratando de limitar cada dirección IP en mi red (dirección IP interna) para poder establecer una conexión con el servidor de correo una vez cada 30 segundos, pero no debe aplicarse a direcciones IP externas, el servidor de correo en algún momento recibirá un reenvío de correos. otro servidor de correo permitido.
Leí la página de manual de iptables y encontré --connlimit-above N
que solo limita la conexión y no por unidad de tiempo.
¿Alguien puede mostrarme cómo se puede hacer usando iptables o ufw?
Respuesta1
Este es un caso estándar de limitación de velocidad:
iptables -I INPUT -p tcp --dport 25 -i eth0 -s 192.168.0.0/24 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 25 -i eth0 -s 192.168.0.0/24 -m state --state NEW -m recent --update --seconds 30 --hitcount 2 -j DROP
Aquí asumí que su LAN es192.168.0.0/24y tu interfaz eseth0, si no, cámbielo en consecuencia.
La primera regla detecta todosNUEVOpaquetes que vieneneth0desde su LAN, y destinado al puerto TCP 25, y agrega la dirección IP alrecientelista; el segundo comando, al recibir unNUEVOpaquete en el mismo puerto, comprueba elrecientelista (--actualizar) y, si la dirección se ingresó en la lista menos de--segundos 30hace, descarta el paquete si el número dado de--cuentas de visitas 2Ha sido alcanzado.
Tenga en cuenta que esto se aplica sólo aNUEVOpaquetes: si tiene una conversación legítima, no desea interferir con ella, simplemente bloquear el establecimiento de otra. En esto, mi respuesta difiere completamente de la de Angelo.
Respuesta2
Ok, NO he probado esto, así que me disculpo de antemano si no funciona (pero espero que esto te ayude a resolverlo):
iptables -A INPUT -s 192.168.0.0/24 -p tcp -m state --state ESTABLISHED --tcp-flags FIN,ACK FIN,ACK --dport 25 -m recent --name smtplimit --set
iptables -A INPUT -s 192.168.0.0/24 -p tcp -m state --state ESTABLISHED --tcp-flags RST RST --dport 25 -m recent --name smtplimit --set
iptables -A INPUT -s 192.168.0.0/24 -m recent --name smtplimit --rcheck --seconds 30 --hitcount 1 -m limit --limit 1/minute -j LOG --log-prefix 'SMTP limit:'
iptables -A INPUT -s 192.168.0.0/24 -m recent --name smtplimit --rcheck --seconds 30 --hitcount 1 -j DROP