Como bloquear clientes por endereço IP de acessar determinadas URLs no meu servidor web?

9

Como posso bloquear permanentemente qualquer ipaddress que acesse páginas vulneráveis conhecidas, como /phpMyadmin/ ? Eu estou executando um servidor Debian e muitas vezes vejo bots ou hackers verificando meu servidor tentando encontrar vulnerabilidades.

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

Eu já segui esta questão do stackoverflow: Como proteger o phpMyAdmin .

Estou tentando começar a impedir que os bots ocupem largura de banda.

    
por Whitecat 16.10.2017 / 17:02

3 respostas

18

Isso pode ser mais pesado do que você está procurando, mas você pode considerar o uso do fail2ban ( link ). Essa é uma ferramenta que pode monitorar seus arquivos de log e banir automaticamente os endereços que geram logs que correspondem a um conjunto de padrões personalizáveis.

    
por 16.10.2017 / 17:32
7

Não. Na melhor das hipóteses, você não conseguirá nada a não ser tornar seus logs menos confusos; na pior das hipóteses, você acabará bloqueando visitantes legítimos que receberam (via DHCP) um endereço IP que pertencia a alguém cujo PC estava infectado como um nó de botnets.

O problema real aqui é a desorganização do log, e isso pode ser resolvido apenas configurando o seu logging para descartar as solicitações que são conhecidas. Vuln-scanning para vulnerabilidades que o seu site não tem, e não terá, porque você não está usando as estruturas vulneráveis que estão procurando. Se você está preocupado com a perda completa do logging (talvez eles forneçam evidências sugerindo quem foi responsável por um ataque diferente, ou quando um ataque começou, etc.), basta limitar várias entradas de log para URLs indesejados de um determinado IP em um curto período de tempo. deve funcionar melhor.

    
por 16.10.2017 / 18:57
4

localize o phpMyAdmin.conf em um dos diretórios httpd config e adicione deny 73.199.136.112 na seção allow / deny do arquivo de configuração e solicite um IP na seção 2.4. Eu coloquei um exemplo do arquivo de configuração completo abaixo, onde eu tenho as entradas em ordem inversa, eu bloqueio tudo, mas os segmentos IP permitidos para acessar a ferramenta.

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>
    
por 16.10.2017 / 17:17