Protegiendo nuestro gateway SIP

Desde hace tiempo, en los gateways SIP, proxys o centralitas que tengo publicados en internet, he visto un aumento importante de los ataques y escaneos…. no me quita el sueño, pero siempre me queda la “intranquilidad” de .. ¿y si un día acaban entrando ?.

Capturando paquetes con ngrep, veo la siguiente traza …

#
U +113.591586 46.251.228.241:5065 -> 192.168.10.17:5060
OPTIONS sip:100@192.168.2.17:5060 SIP/2.0
Via: SIP/2.0/UDP 46.251.228.241:5065;branch=z9hG4bK-3879111841;rport
Content-Length: 0
From: "sipvicious"<sip:100@1.1.1.1>;tag=3664343530613930313363340131333838313931323031
Accept: application/sdp
User-Agent: friendly-scanner
To: "sipvicious"<sip:100@1.1.1.1>
Contact: sip:100@46.251.228.241:5065
CSeq: 1 OPTIONS
Call-ID: 1162121562622760871341331
Max-Forwards: 70

46.251.228.241 = es uno de los amigos que me intenta atacar
192.168.10.17 = La ip interna de un asterisk
From: “sipvicious” = El identificador del software que hace el ataque
User-Agent: friendly-scanner = Cadena que identifica el software, que el caso de los teléfonos, por ejemplo un snom 320 es : User-Agent: snom320/8.7.3.7

Investigando el iptables y googleando veo ésto, así que manos a la obra y hago este script:

iptables -N SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sundayddr" --algo bm --to 65535 -m comment --comment "deny sundayddr" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sipsak" --algo bm --to 65535 -m comment --comment "deny sipsak" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sipvicious" --algo bm --to 65535 -m comment --comment "deny sipvicious" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "friendly-scanner" --algo bm --to 65535 -m comment --comment "deny friendly-scanner" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "iWar" --algo bm --to 65535 -m comment --comment "deny iWar" -j SIPDDOS
iptables -A INPUT -i eth0 -p udp -m udp --dport 5060 -m string --string "sip-scan" --algo bm --to 65535 -m comment --comment "deny sip-scan" -j SIPDDOS
iptables -A SIPDDOS -j LOG --log-prefix "firewall-sipddos: " --log-level 6
iptables -A SIPDDOS -j DROP

Para ver si es efectivo, esperamos un rato y de mientras miramos en /var/log/syslog ……. y encontramos ya un intento 🙂

..
poseidon kernel: [1710588.138605] firewall-sipddos: IN=eth0 OUT= MAC=00:0c:29:2d:1e:1f:00:0e:38:d5:26:0f:08:00 SRC=183.87.140.226 DST=192.168.2.17 LEN=438 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=5069 DPT=5060 LEN=418

Nuestro IPTABLES, ya se ha encargado de filtrar este intruso… ahora a seguir con ngrep….

Recordamos el comando :

ngrep -d any -P ' ' -W byline -T port 5060

Y enjoy your rules 😉