Diferença entre o Netstat e o log de acesso

2

Quando estava verificando as estatísticas no terminal SSH do meu VPS, notei que netstat e log de acesso fornecem resultados diferentes.

Quando usei:

netstat -anp

Eu vi que um invasor tinha 32 conexões simultâneas à porta 80 com endereço IP 123.217.100.19 .

Enquanto isso, no log de acesso ( /var/www/vhosts/domain.com/statistics/logs/access_log ), havia entradas de log para apenas 123.217.100.199 (há um endereço IP adicional 9 no final). Nenhum endereço IP 123.217.100.19 específico estava disponível no log de acesso.

Qual é o motivo de tal tipo de diferença de ip entre netstat e log de acesso?

    
por NecNecco 01.09.2014 / 22:37

2 respostas

3

Fácil. netstat é uma ferramenta de linha de comando para mostrar a você o tráfego real / real da rede acontecendo em tempo real. Mas quando você diz access_log e aponta para o caminho completo assim:

/var/www/vhosts/domain.com/statistics/logs/access_log

Esse log é gerado pelo serviço da Web no servidor. Meu melhor palpite é que seria o Apache gerando esses logs. E o motivo pelo qual você está vendo um log com menos dados em access_log versus o Apache vem diretamente da capacidade do Apache de lidar com essas conexões.

No Apache, há uma opção para manter uma conexão ativa se ela estiver vindo do mesmo navegador no mesmo endereço IP em que acredito. Então, se você está configurando 32 itens conectando-se à porta 80, pode ser que a lógica de “keep alive” esteja ativa.

Ou - mais provavelmente - o ataque é um ataque DDoS clássico em que uma enxurrada de solicitações de conexão é feita, mas elas são descartadas antes que a conexão aconteça. Isso funciona em um sentido DDoS, já que o Apache precisa ser capaz de responder a essas solicitações, mas se os invasores de conexões "desligarem" antes das conexões serem feitas ... Então, nenhuma conexão será registrada.

Então - usando seus dados de exemplo como exemplo - 9 conexões estão sendo feitas para o Apache. Mas os 23 pedidos restantes estão apenas caindo antes que o Apache possa fazer qualquer coisa.

    
por 01.09.2014 / 23:06
2

Sim, há uma diferença crucial.

No netstat, você vê os dados de conexão raw . Não importa se o handshake do protocolo superior é realizado ou não, se um pacote SYN vier, o netstat irá registrá-lo.

Por outro lado, o access_log só registra conexões que terminam o handshake HTTP. Se alguém estabelecer uma conexão mas não enviar nenhum dado, o access_log nunca a verá.

Execute um tail -f access_log e telnet para o seu servidor na porta 80. Após a conexão ser estabelecida, execute um netstat e feche a conexão telnet sem enviar nada. Você verá seu IP aparecendo no netstat, mas não no access_log.

    
por 01.09.2014 / 22:45