¿Pueden los robots que escanean mi servidor cambiar su IP de origen? ¿Por qué sigo recibiendo ataques incluso después de bloquear la IP?

¿Pueden los robots que escanean mi servidor cambiar su IP de origen? ¿Por qué sigo recibiendo ataques incluso después de bloquear la IP?

Tengo un PBX (servidor VOIP) donde se conectan los teléfonos para realizar llamadas telefónicas. El pbx que estoy usando esAsterisco. Ese servidor no está en uso y su único propósito es analizar ataques.

El servicio PBX no es importante si tuviera un servicio diferente, como mongodb. Estoy seguro de que los robots en Internet buscarán vulnerabilidades para atacar esa base de datos.

De todos modos estoy analizando todos los paquetes que llegan a mi servidor en el puerto UDP 5060 (que es donde escucha Asterisk) y los paquetes que llegan se ven así:

IP (tos 0x0, ttl 113, id 654, offset 0, flags [none], proto UDP (17), length 521)
    43.249.129.89.58255 > 171.21.78.225.5060: SIP, length: 493
        REGISTER sip:54.84.215.2:5060 SIP/2.0
        To: <sip:[email protected]>
        From: <sip:[email protected]>;tag=824e5f4a7221279e4f7a
        Via: SIP/2.0/UDP 10.4.1.117:58255;branch=z9hG4bK183d5a24-59ec-4f05-8325-747389112824;rport
        Call-ID: e5f4a722128024e4f7a824
        CSeq: 1 REGISTER
        Contact: <sip:[email protected]:58255>
        Expires: 3600
        Max-Forwards: 70
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
        User-Agent: PolycomSoundPointIP SPIP_550 UA 3.3.2.0413
        Content-Length: 0

Ese paquete es de un bot porque NO envío ningún paquete a mi servidor.

Tenga en cuenta que el único propósito de ese servidor es comprender cómo funcionan los bots y ver cómo atacan mi servidor. No estoy usando ese PBX; por lo tanto, cualquier solicitud que llegue a ese servidor debe provenir de un bot malicioso. Cada vez que recibo un paquete UDP enviado al puerto 5060, bloqueo esa dirección IP.

Ahora mi pregunta es:

He estado ejecutando ese servidor durante un mes y aproximadamente cada minuto sigo recibiendo ataques. ¡He bloqueado más de 15.000 IP! ¿Cuántos bots hay en Internet? ¿Están cambiando su dirección IP de origen y esa es la razón por la que siguen llegando a mi servidor? Si pueden cambiar su IP de origen, ¿es porque estoy usando el protocolo UDP? ¿Debo usar TCP en lugar de UDP para resolver esto?

También es curioso cómo los ataques de diferentes ips son tan similares. Por ejemplo, utilizan el mismo agente de usuario que el teléfono y el ataque proviene de diferentes ips. Es como si todos los bots tuvieran el mismo código.

Una vez que resuelva este problema y comprenda cómo funcionan los bots, me gustaría implementar esa solución en mi servidor real. No estoy usando el servidor real para esto porque será difícil filtrar los paquetes buenos de los malos. Una solución sería usar una lista blanca de IP en mi firewall, pero no quiero que mis usuarios tengan que realizar alguna forma adicional de autenticación, especialmente si usan el servicio desde su teléfono móvil, donde su dirección IP puede cambiar mucho.

Respuesta1

Ahora entiendo por qué la gente intenta mantener cerrados tantos puertos como sea posible. En mi caso quería tener los puertos abiertos y bloquear a los atacantes. Descubrí que es una lucha sin fin.

Lo que hice para resolver el problema fue entender cómo funciona iptables. Mis reglas se ven así:

~# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source        destination
DROP       all  --  0.0.0.0/0     0.0.0.0/0       match-set MyBlackList src
ACCEPT     all  --  0.0.0.0/0     0.0.0.0/0       match-set MyWhiteList src
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0       tcp dpt:5060
DROP       udp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535
DROP       tcp  --  0.0.0.0/0     0.0.0.0/0       multiport dports 1:65535

Chain FORWARD (policy ACCEPT)
target     prot opt source        destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source        destination

Con estas reglas, inicialmente solo permito conexiones al puerto 5060 a través de TCP únicamente.

Si un teléfono intenta conectarse incorrectamente a ese puerto, la IP se agregará a MyBlackList. Si ese es el caso, el atacante no podrá realizar más solicitudes.

Si un teléfono se conecta correctamente, se agregará a MyWhiteList. Si ese es el caso podrá acceder a otros puertos y realizar llamadas telefónicas. Si en el futuro realiza muchas solicitudes no válidas, aún se puede agregar a MyBlackList.

Después de utilizar este enfoque, rara vez recibo ataques. Ahora solo tengo 10 ips bloqueadas en lugar de miles.

información relacionada