Como bloquear um ataque ao Wordpress usando o UFW no servidor Ubuntu?

5

Na caixa ny do Ubuntu 14 eu tenho uma atividade estranha parecendo um ataque na página do Wordpress. O log do Apache mostra muito disso:

191.96.249.54 - - [25/May/2016:00:46:57 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:46:58 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.54 - - [25/May/2016:00:46:59 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
191.96.249.53 - - [25/May/2016:00:47:00 +0200] "POST /xmlrpc.php HTTP/1.0" 500 585 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Parece exatamente a situação descrita aqui: link

A primeira coisa que me veio à mente foi bloquear aqueles caras com iptables, então eu coloquei:

iptables -A INPUT -s 191.96.249.54 -j DROP
iptables -A INPUT -s 191.96.249.53 -j DROP

Mas continuou.

Como uso o UFW, adicionei regras do UFW:

ufw deny from 191.96.249.54 to any
ufw deny from 191.96.249.53 to any

Mas nada melhorou. Então eu desabilitei o UFW e ele parou!

As regras do Mu UFW são (status ufw):

Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
143                        ALLOW       Anywhere
993                        ALLOW       Anywhere
25/tcp                     ALLOW       Anywhere
465/tcp                    ALLOW       Anywhere
Anywhere                   DENY        191.96.249.54
Anywhere                   DENY        191.96.249.53
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
143 (v6)                   ALLOW       Anywhere (v6)
993 (v6)                   ALLOW       Anywhere (v6)
25/tcp (v6)                ALLOW       Anywhere (v6)
465/tcp (v6)               ALLOW       Anywhere (v6)

Então eu percebi que a primeira regra é permitir http ... Então eu deletei e adicionei novamente, então agora está no final da cadeia. Ajudou. Aparentemente eu devo inserir a regra de bloqueio assim:

ufw insert [position] [theRule]

Estou certo? Bem, aparentemente funcionou, mas é uma boa prática ou devo fazer de outra maneira?

    
por Kornel 25.05.2016 / 01:13

1 resposta

4

Sugiro aprender sobre ipset .

E, de forma semelhante à situação do UFW, iptables -A acrescenta uma nova regra no final da cadeia do netfilter. O que significa que, se houvesse uma regra de correspondência antes das regras que você adicionou, suas regras não serão acionadas.

Então, no seu caso, você deveria ter entrado

iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP

que, por padrão, insere a regra na primeira posição da cadeia.

Verifique a cadeia completa usando o comando iptables-save .

Agora, alterar a cadeia de regras do iptables toda vez que você receber um ataque será muito problemático e repleto de perigos, especialmente porque você está usando um 'DROP de manta'. Além disso, a necessidade de ter que excluir as regras.

Então, use ipset . Aqui está um bom guia com ótimos exemplos e algumas análises sobre o impacto no desempenho:

link

A principal coisa a fazer é inserir esses dois comandos:

ipset create blacklist hash:ip hashsize 4096
iptables -I INPUT -m set --match-set blacklist src -p TCP \
    --destination-port 80 -j DROP

Agora, você pode simplesmente adicionar endereços IP suspeitos ao conjunto blacklist e nunca mais precisar lidar com a ordem de processamento de regras novamente.

    
por 25.05.2016 / 04:10

Tags