É possível servir páginas específicas com base no endereço IP?

8

Eu fui alvo de um ataque de força bruta em dois sites WordPress que possuo. O invasor está usando o bom e velho XML-RPC para amplificar o ataque de senha de força bruta. Felizmente temos senhas extremamente bem geradas, por isso duvido que ele chegue a algum lugar.

Acabei de usar o iptables para bloquear seus pedidos sempre que ele aparece novamente (sempre do mesmo provedor de nuvem virtual), mas prefiro modificar o servidor para que sempre que seu endereço IP solicitar qualquer página, ele recebe uma resposta dizendo-lhe para obter uma vida. A maioria dos pedidos são POSTs, então eu gostaria apenas de modificar o cabeçalho da resposta para incluir algo como "Melhor sorte da próxima vez!" ou algo igualmente satisfatório.

Isso é possível? Estou longe de ser um especialista com o Apache, então não tenho certeza de como isso seria difícil de implementar. Mas mesmo que leve horas, a satisfação será inestimável.

Para referência, estou executando o Ubuntu 16.04.2 LTS, com o Apache 2.4.18 hospedando o Wordpress 4.7.3.

    
por Aurelius 27.03.2017 / 20:16

4 respostas

25

Basta instalar o fail2ban com a cadeia apropriada e acabar com isso. Não se preocupe em dar uma resposta personalizada, pois é mais provável que nunca seja visto.

    
por 27.03.2017 / 20:30
5

Existe uma possibilidade, e nós fizemos bastante para reverter possíveis ataques. Use o iptables para redirecionar o provedor da nuvem (intervalo de endereços) para uma porta diferente - e lá atende uma resposta ao invasor, mesmo em cabeçalhos simples.

No Apache, você pode modificar os cabeçalhos pelo exemplo:

Header set GetOut "Better luck next time!"
    
por 27.03.2017 / 21:25
3

Eu usaria o fail2ban e descartaria solicitações de locais de abuso conhecidos. E se você achar que o provedor de serviços do invasor não é responsável, informe os ataques ao endereço de e-mail de abuso.

Se você quer perder tempo fazendo algo que atrapalha o atacante, tente fazer um tarpit . Primeiro, você deve, é claro, saber de onde vêm os ataques. Então você poderia usar o apache para redirecionar a solicitação do ip (intervalo?) Para um script específico. Isso pode fazer o truque, embora Eu não tentei isso sozinho. Em seguida, basta implementar um script que, por exemplo, imprima um ponto (ou algo de / dev / null) a cada 15 segundos para manter a conexão do invasor aberta indefinidamente.

Como é mais provável que o invasor use scripts para atacar seu site, pode levar algum tempo para perceber que os ataques estão paralisados, pois as conexões aparentemente estão ativas, não haverá tempo limite e a solicitação não será negada no site. local.

O problema é que você dedica seu tempo e recursos a algo que provavelmente não será tão útil quanto a preocupação mais importante: proteger seu login. É difícil atacar quando você não sabe onde atacar. Considere alguns dos seguintes itens:

  • restringir o acesso à página de login (somente sua intranet? intervalo ip? vpn? outro?)
  • adicione reCaptcha ou outra pergunta de verificação para efetuar login.
  • use Autenticação multifator .
  • ocultar sua página de login. Se possível, não vincule a ela da sua página principal e não use / login ou outro local óbvio.
por 28.03.2017 / 08:12
3

Isso é muito fácil com o ModSecurity, que é um módulo WAF de terceiros para o Apache. Embora envolva aprender a sintaxe da linguagem de regras.

Você também pode usar o ModSecurity para soltar a conexão em vez de responder.

Dizendo isso, instalando o ModSecurity apenas para isso, quando, como outros sugeriram, é provável que as respostas sejam ignoradas pode muito bem ser um exagero.

    
por 27.03.2017 / 22:17