Log de Portas de Origem em Servidores Web

De Wiki BPF
Revisão de 20h55min de 16 de dezembro de 2018 por Fernando.frediani (discussão | contribs)
Ir para: navegação, pesquisa

Introdução

Logs em Servidores Web são necessários não apenas para estatísticas e trobleshooting mas também para identificação do usuário. Por muito tempo o registro do IP de Origem foi suficiente para identificar um usuário que tenha acessado determinado site hospedado no servidor, porém com a escassez dos endereços IPv4 e o aumento da utilização de CGNAT por Provedores de Acesso torna-se necessário que Provedores de Aplicações, Hospedagem, Cloud, etc registrem também em seus logs além do endereço de origem a porta de origem da conexão.

Em especial no Brasil por disposição da Lei Nº 12.965, de 23 de Abril de 2014, o Marco Civil da Internet dispõe em seu Art. 15 que os Provedores de Aplicações deve "manter os respectivos registros de acesso a aplicações de internet, sob sigilo, em ambiente controlado e de segurança, pelo prazo de 6 (seis) meses".

Independente de qualquer disposição legal na eventualidade de um incidente de segurança é sempre necessário possuir todas as informações que auxiliem na identificação do usuário e além das opções configuradas por padrão na maioria dos servidores Web é necessário ajustar o formato do Log para incluir também a porta de origem, condição obrigatória para identificação de usuários atrás de CGNAT.

Mesmo para Provedores de Acesso que possuem poucos servidores hospedados em sua infraestrutura voltados ao apoio de atividades administrativas ou operacionais que não são acessadas pelo público em geral é também necessário que esses ajustes sejam feitos para resguardar a empresa de qualquer demanda legal ou ainda servir de apoio à uma investigação em um incidente de segurança. Considerando que hoje em dia é crescente o número de funcionários que trabalham em regime de home-office o registro de portas de origem torna-se algo ainda mais importante.

Servidores Web

Os servidores Web em geral não vem configurados por padrão para logar a porta de origem e é portanto necessário ajustar o formato do log para que isso ocorra. Este ajuste é bastante simples e não demanda recursos extras significativos tao pouco independe mudanças na aplicação web hospedada por aquele servidor. A mudança apenas acrescenta um campo extra após o IP de origem no log.

Note que na eventualidade da utilização de aplicações de análise e estatística de logs (ex: AWStats, Splunk, Graylog, ELK (Elasticsearch, Logstach and Kibana), Solarwinds Event & Log Manager, ManageEngine EventLog Analyser, e outros) pode ser necessário ajustar o formato de recebimento dos dados para incluir este campo extra. Este assunto é tratado na mais abaixo na seção sobre analisadores de log.

Apache

Apache-logo.png

O servidor web Apache por padrão vem com diferentes formatos de log prontos para serem utilizados nas diferentes configurações de Vitual Hosts. O mais comum utilizado é o combined. Ele é definido no arquivo /etc/apache2/apache2.conf. Para ajustá-lo siga o procedimento abaixo:

  • Edite o arquivo /etc/apache2/apache2.conf
  • Busque pelo termo combined
  • A linha encontrada deverá conter: LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined"
  • Adicione o parâmetro %{remote}p após o parâmetro %h
  • A configuração deverá então conter: LogFormat "%h %{remote}p %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined"
  • Salve o arquivo, verifique se a configuração do Apache não contém erros (apachectl configtest). O resultado deverá ser: Syntax OK
  • Aplique um Reload no Apache (systemctl reload apache2)

Resultado - (Exemplo do output no log):

203.0.113.10 50181 - bpf [16/Dez/2018:08:30:44 -0300] "GET /index.html HTTP/1.1" 201 1126 "-" ""Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"

NGINX

Nginx-logo.png

No NGINX o formato do log predefinido encontra-se no arquivo /etc/nginx/nginx.conf e é chamado de mycombined. O procedimento abaixo exemplifica como ajustá-lo:

  • Edite o arquivo /etc/nginx/nginx.conf
  • Busque pelo termo mycombined
  • A linha encontrada deverá conter: log_format mycombined '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
  • Adicione o parâmetro $remote_port após o parâmetro $remote_addr
  • A configuração deverá então conter: log_format mycombined '$remote_addr $remote_port - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

Uso - Para utilizar este formato de log o parâmetro de configuração do vhost deverá conter:

access_log /var/log/nginx/access.log mycombined;

Analisadores de Log

Os principais analisadores de log (ex: AWStats, Splunk, Graylog, ELK (Elasticsearch, Logstach and Kibana), Solarwinds Event & Log Manager, ManageEngine EventLog Analyser, e outros) normalmente levam em conta o formato padrão de log utilizado pelos principais servidores web. Quando existe qualquer mudança deste padrão é necessário ajustar a configuração do analisador de log para que não ocorra erro na leitura dos dados do arquivo de log. Neste caso em questão apenas informar o analisador que existe um parâmetro a mais além do endereço IP de origem para ser levado em conta. No caso do AWStats ele irá saber que deve ignorar aquele parâmetro após o endereço de origem pois ele não faz parte das estatísticas geradas.

AWStats

A configuração de um virtual host de AWStats para Apache combined logs normalmente contém os parâmetros: LogType=W e LogFormat=1. O formato padrão do LogFormat (que é equivalente à opção =1) é: "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"

O procedimento para ajustar a configuração para levar em conta o parâmetro extra adicionado para registrar a porta de origem é o seguinte:

  • Edite o arquivo de configuração do awstats (normalmente no diretório /etc/awstats): ex: /etc/awstats/awstats.fqdn.exemplo.com.conf
  • Busque pela parâmetro LogFormat=1 e comente a linha insderindo um # no início dela
  • Adicione um formato customizado para este parâmetro logo abaixo forme o exemplo abaixo:
    • LogFormat = "%host %other %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
  • Salve o arquivo. Na próxima execução agenda o AWStats levará em conta o novo formato de log para gerar as estatísticas.

Para NGINX como o ouput fo log é equivalente ao do Apache portanto a mesma configuração para AWStats se aplica.

Autor: Fernando Frediani