Quantidades extremas de porta de saída 80

Quantidades extremas de porta de saída 80

Estou tendo um grande problema com meu servidor gastando quantidades excessivas de largura de banda de saída por nada. O sistema operacional do servidor é CentOS 6.4 x64 com o kernel 2.6.32-431, se isso for importante.

Aqui está um arquivo de log tcpdump rápido:

20:10:17.448636 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 463681, win 65520, options [nop,nop,sack 1 {460801:462241}], length 0
20:10:17.448698 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 468001:469441, ack 0, win 123, length 1440
20:10:17.454074 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 469441:470881, ack 0, win 123, length 1440
20:10:17.637167 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 465121, win 65520, options [nop,nop,sack 1 {466561:468001}], length 0
20:10:17.637221 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 470881:472321, ack 0, win 123, length 1440
20:10:17.637230 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 472321:475201, ack 0, win 123, length 2880
20:10:17.638062 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 468001, win 65520, length 0
20:10:17.638078 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 475201:478081, ack 0, win 123, length 2880
20:10:17.642977 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 470881, win 65520, length 0
20:10:17.642988 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [P.], seq 478081:480961, ack 0, win 123, length 2880

Existem milhares de entradas a mais e ele está consumindo 100 GB ou mais por dia. Eu tentei várias regras de firewall diferentes. Minhas regras do iptables são:

-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j fail2ban-HTTP
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 198.101.197.171/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m limit --limit 2/sec --limit-burst 2 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A fail2ban-HTTP -j RETURN
-A fail2ban-SSH -j RETURN

Sou um administrador de sistema amador, por isso não tenho certeza sobre todos os detalhes da prevenção desse tipo de ataque.

iftop mostra IPs arbitrários que mudam conforme os receptores dos dados, nethogs mostra /usr/bin/httpd como o processo que consome a largura de banda. iotop não mostra nenhuma atividade, embora me diga que nenhum arquivo real está sendo lido.

Pensamentos?

Responder1

OK, você tem:

  • muito tráfego sendo enviado da sua porta HTTP
  • nethogs mostra que seu daemon httpd está enviando
  • o IP de destino são vários computadores na internet
  • iotop não está mostrando nada (tudo isso significa que está armazenado em cache na memória)

Meu diagnóstico: você está executando um servidor web.

Verifique os registros de acesso do seu servidor web para ver o que as pessoas estão acessando. É trânsito normal? Considere usar um CDN para reduzir a largura de banda de saída.


Ah, nada nos registros?

  • Tem certeza de que o httpd está registrando onde você acha que está registrando?
  • Tente matar o httpd, capturar o tráfego e reiniciar o httpd para que você possa capturar ocomeçardo pedido.
  • Se eles estiverem baixando arquivos enormes, os logs podem? não aparecerá até que o download seja concluído.
  • Usando apache? Tente ativar o server-statusmódulo para perguntar ao httpd o que ele está fazendo.

informação relacionada