Como especifico vários arquivos de log para uma cadeia no fail2ban?

2

Heyo,

Estou usando o Ubuntu 15.10 e o fail2ban 0.9.3. O Apache é configurado com vários hosts virtuais do Apache.

Eu tenho meus arquivos de log do Apache2 localizados em subdiretórios, um por localhost, por exemplo. '/var/log/apache2/vwww_example_vhost_com/ e arquivos de log sob isso como error.log ou access.log (ou ssl_error.log e ssl_access.log ).

Os principais arquivos de log do apache2 (para localhost e padrão) estão em /var/log/apache2 .

Idealmente, gostaria de poder curingar o subdiretório e ter o fail2ban lido em qualquer arquivo de log sob esse subdiretório.

A página de manual jail.local indica que, para especificar vários arquivos de log, você deve colocar uma nova linha e um espaço em branco entre cada arquivo de log. Isso não parece funcionar com diretórios com curingas.

Aqui está a configuração padrão para uma das prisões:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
enabled  = true

Atualmente, tentei:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
           /var/log/apache2/*/*error.log
enabled  = true

Com o caminho do arquivo de log secundário em uma nova linha com espaços em branco iniciais. Esses erros e service fail2ban restart falham com uma mensagem de erro enigmática (e inútil).

Isso falha:

[apache-auth]
port     = http,https
logpath  = /var/log/apache2/*/*error.log
enabled  = true

A tentativa de substituir a variável %(apache_error_log)s em /etc/fail2ban/paths-overrides.local também falha:

[DEFAULT]
apache_error_log = /var/log/apache2/*error.log
               /var/log/apache2/*/*error.log

apache_access_log = /var/log/apache2/*access.log
               /var/log/apache2/*/*access.log

Especificar as máscaras do arquivo de registro com um espaço me dá um erro 'head or tail' em /var/log/fail2ban.log , mas o serviço será iniciado. No entanto, ele não está usando os arquivos de log. Separar as máscaras do arquivo de log com um ponto-e-vírgula impede que o fail2ban seja reiniciado.

Minha conclusão é que terei que definir manualmente os nomes de diretório para os virtualhosts em jail.local , mas não encontrei nada que diga especificamente que você não pode usar um subdiretório curinga.

Alguém tem informações sobre isso ou uma solução alternativa?

Editar: Acabei de tentar especificar vários diretórios de arquivo de log (com o nome do diretório soletrado) e com as mesmas máscaras de nome de arquivo com caracteres curinga em paths-overrides.local e isso também está causando fail2ban para não iniciar.

    
por R.A. 13.01.2016 / 18:00

1 resposta

0

Parece que o diretório glob não tem nenhum efeito.

A única solução que encontrei foi criar uma entrada separada para cada subdiretório.

Cada um dos meus hosts virtuais tem seus respectivos logs de erro / acesso em um subdiretório de / var / log / httpd.

Para obter a lista de logs de erros (por exemplo), usei:

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*error.log"}') | \
while read line; do \
    sed -i "/apache_error_log/a \\t$line" /etc/fail2ban/paths-overrides.local ;
done

E, é claro, repetimos o mesmo comando, mudando 'error' para 'access'.

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*access.log"}') | \
while read line; do \
    sed -i "/apache_access_log/a \\t$line" /etc/fail2ban/paths-overrides.local ;
done

Fazendo check-in no fail2ban, as listas de arquivos são exibidas conforme o esperado

# fail2ban-client status apache-auth
Status for the jail: apache-auth
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  '- File list:    /var/log/httpd/error_log /var/log/httpd/myvhost/error_log
'- Actions
   |- Currently banned: 0
   |- Total banned: 0
   '- Banned IP list:   

Não exatamente o que você procurava, talvez, mas espero que ajude.

~ Kraylo Adaraan

    
por 05.09.2016 / 11:32