Como posso parar o SipVicious ('friendly-scanner') de inundar o meu servidor SIP?

6

Eu executo um servidor SIP que escuta na porta UDP 5060 e precisa aceitar solicitações autenticadas da Internet pública.

O problema é que, ocasionalmente, ele é capturado por pessoas que fazem a varredura de servidores SIP para serem explorados, que ficam ali o dia todo tentando forçar o servidor brutalmente. Eu uso credenciais que são longas o suficiente para que esse ataque nunca funcione, mas é chato porque usa muita largura de banda.

Eu tentei configurar o fail2ban para ler o log do Asterisk e banir os IPs que fazem isso com o iptables, que impede o Asterisk de ver as tentativas de entrada do SIP REGISTER após 10 tentativas fracassadas (o que acontece em menos de um segundo na taxa de ataques Estou vendo). No entanto, os scripts derivados do SipVicious não param imediatamente de enviar depois de obter um Host de Destino ICMP Inacessível - eles continuam martelando a conexão com os pacotes. O tempo até que eles parem é configurável, mas infelizmente parece que os atacantes que fazem esses tipos de ataques de força bruta geralmente definem o tempo limite como muito alto (os ataques continuam em alta taxa por horas depois que o fail2ban os impede de receber qualquer resposta SIP de volta depois de terem visto a confirmação inicial de um servidor SIP).

Existe uma maneira de deixar de enviar pacotes na minha conexão?

    
por a1kmm 28.10.2013 / 13:41

7 respostas

11

O script SipVicious disponível publicamente que muitos desses invasores usam interrompe o ataque instantaneamente se ele receber uma resposta SIP inválida sem linha From :. Você pode identificar o SipVicious porque ele define seu User-Agent nas solicitações do SIP para um scanner amigável.

Usando essa técnica contra um invasor do mundo real, pude parar imediatamente o fluxo de pacotes. Você pode enviar um pacote com um script simples. Por exemplo:

cat >UnfriendlyScannerStopper.scala <<END
import java.net._

object UnfriendlyScannerStopper {
  def main(args : Array[String]) : Unit = {
    if (args.length < 2) {
      System.out.println("Usage: FriendlyScannerStopper ipAddr port")
      return
    }

    val udpSocket : DatagramSocket = new DatagramSocket();
    val packetContents : String = "SIP/2.0 400 Go Away!!!\r\n\r\n"
    udpSocket.send(new DatagramPacket(packetContents.getBytes("utf-8"), packetContents.size,
      InetAddress.getByName(args(0)), Integer.parseInt(args(1))))
  }
}
END
scala UnfriendlyScannerStopper.scala 188.138.107.179 5102

Você precisará substituir 188.138.107.179 e 5102 pelo endereço e porta no cabeçalho Via dos pacotes SIP que você está enviando no ataque.

    
por 28.10.2013 / 13:41
4

Converse com seu provedor de upstream. O meu tem uma lista negra com uma API REST para a qual posso alimentar endereços IP. Eu configurei o fail2ban para chamar este serviço da web e os pacotes são parados em algum ponto da rede do meu provedor antes que eles atinjam meus firewalls.

    
por 28.10.2013 / 15:37
4

Ninguém respondeu diretamente à sua pergunta, então: NÃO

Você não pode impedir que alguém envie pacotes para o seu gateway de perímetro. O melhor que você pode fazer é detê-los a montante (como longneck mencionado acima), ou pará-los no seu firewall.

O Fail2ban será acionado com base em uma contagem de ataques com falha (como você já observou acima), portanto, uma alternativa (ou combinação) é bloquear com base na localização geográfica do ip de origem. Produtos como SECAst ou alguns firewalls de hardware podem bloquear com base em Localização geográfica que reduzirá ainda mais o número de pacotes que chegam ao seu servidor.

Voltar à sua pergunta original: NÃO

    
por 30.06.2014 / 06:37
1

estas regras do iptables funcionam bem para mim. Eles mantêm a carga da CPU abaixo de 2% durante esses ataques.

link

    
por 28.10.2013 / 23:02
1

Você já tentou configurar um proxy SIP?

Se você não tiver, você pode fazê-lo configurando o Kamaillio ou OpenSIPS na frente do seu "servidor sip". Esses pacotes são roteadores de mensagens SIP que podem ser configurados como um proxy SIP.

No OpenSIPS ou no Kamaillio, você pode adicionar uma linha ao seu script de roteamento tão simples quanto a seguinte para resolver esse problema:

if ($ ua = ~ "friendly-scanner") { solta(); }

Agora percebo que isso não impede as tentativas de entrada, mas garante que as tentativas nunca chegarão a lugar algum e que o "servidor sip" nunca as verá. Mesmo 500 REGISTROS por segundo não é nada para se preocupar com o OpenSIPS ou o Kamaillio, mesmo em hardware muito MUITO modesto.

Proteger a infra-estrutura de VoIP é uma grande parte do que o OpenSIPS e o Kamaillio são projetados para fazer - eles fazem isso fazendo proxy das solicitações SIP recebidas, normalizando-as, eliminando solicitações malformadas (e aquelas de agentes que não têm negócios conversando com você rede) e autenticação por proxy (REGISTER).

Eles também escondem a topologia por trás deles da Internet, adicionando assim um nível ainda mais alto de segurança ao seu servidor de mídia (talvez essa seja a função que seu "servidor sip" está realmente fazendo por você)

Se você estiver executando o asterisco, a integração do OpenSIPS / Kamaillio / SER é uma prática comum em implantações de ITSP da operadora.

E, quanto à sua declaração sobre largura de banda: ficaria um pouco surpreso ao saber que esses ataques estão usando muita largura de banda; Eu suponho que "muito" é um termo relativo ... Mas exatamente quanto tráfego você está vendo disso?

Espero que isso seja útil. Se você precisar de ajuda, sou um consultor e posso ajudá-lo a configurar isso para o seu ambiente específico.

Jeremy D. Ward, CWNE

PS: Para me encontrar, o Google o seguinte: jeremy ward sem fio. Meu perfil no LinkedIn é o primeiro resultado.

    
por 16.08.2014 / 12:34
0

Como alternativa, veja os firewalls relacionados ao SIP aqui: Firewalls VoIP

    
por 11.12.2014 / 03:43
0

O Pfsense e provavelmente outros permitem que você faça ou compre um appliance de firewall. O software é gratuito. Então você pode carregar suricata de graça, que é uma espécie de gatekeeper que instantaneamente solta uma grande quantidade de IPs associados a coisas como Sipvicious. Basicamente, quando eles escaneiam seu IP, seus pacotes são imediatamente descartados. Se as coisas correrem bem, eles nem perceberão que há um servidor sip naquele endereço. O mesmo firewall também tem um pacote para instalar um proxy sip, então você pode fazer as duas coisas.

    
por 20.10.2017 / 01:14

Tags