Como lidar com solicitações HTTP agressivas do mesmo IP?

2

Meu servidor sofreu recentemente inundações temporárias de solicitações de HTTP em busca de PHPMyAdmin. Eles vêm de vários IPs e vêm em série. Isto é, por alguns segundos estou recebendo um monte de solicitações do mesmo IP para um intervalo de URLs. A intensidade aumenta até 10 solicitações por segundo. Veja um exemplo de uma lista de URLs:

/mysql/web/
/mysql/pMA/
/sql/phpmanager/
/sql/php-myadmin/
/sql/phpmy-admin/
/sql/sql/
/sql/myadmin/
/sql/webadmin/
/sql/sqlweb/
/sql/websql/
/sql/webdb/
/sql/sqladmin/
/sql/sql-admin/
/sql/phpmyadmin2/
/sql/phpMyAdmin2/
/sql/phpMyAdmin/
/db/myadmin/
/db/webadmin/
/db/dbweb/
/db/websql/
/db/webdb/
/db/dbadmin/
/db/db-admin/
/db/phpmyadmin3/
/db/phpMyAdmin3/
/db/phpMyAdmin-3/
/administrator/phpmyadmin/
/administrator/phpMyAdmin/
/administrator/db/
/administrator/web/
/administrator/pma/
/administrator/PMA/
/administrator/admin/
/phpMyAdmin2/
/phpMyAdmin3/
/phpMyAdmin4/
/phpMyAdmin-3/
/php-my-admin/
/PMA2011/
/PMA2012/
/PMA2013/
/PMA2014/
/PMA2015/
/PMA2016/
/PMA2017/
/PMA2018/
/pma2011/
/pma2012/
/pma2013/
/pma2014/
/pma2015/
/pma2016/
/pma2017/
/pma2018/
/phpmyadmin2011/
/phpmyadmin2012/
/phpmyadmin2013/
/phpmyadmin2014/
/phpmyadmin2015/
/phpmyadmin2016/
/phpmyadmin2017/
/phpmyadmin2018/
/phpmanager/

Esta lista pode variar de IP para IP. A questão é como efetivamente sufocar esse tipo de ataque até, digamos, 1 solicitação por segundo. E, se possível, bloqueie o IP por 1 minuto após 3 URLs inválidos. Eu não uso o PHPMyAdmin, nem tenho outras interfaces de banco de dados baseadas em HTTP. Mas eu preferiria manter esse portão aberto ou facilmente aberto no futuro.

Quanto a uma solução, tenho pensado em bloquear pedidos ao nível do Apache 2, o que parece ser tarde demais, talvez erradamente. Ou abaixo do Apache, no nível do Netfilter. Estou usando o UFW e gostaria de ficar com ele e não manipular o IPTables diretamente. O UFW, então, precisaria saber de alguma forma quais solicitações estão ok ou não. Então uma ponte para o Apache é necessária, eu entendo?

Em geral, esta questão está aberta para quaisquer respostas que abordem o problema de farejar solicitações HTTP no contexto do Linux + Apache.

    
por Tomasz 02.07.2017 / 11:38

0 respostas