Você está na página 1de 6

O que o PING

O PING um programa que envia uma srie de pacotes para uma rede ou para a Internet procurando uma mquina especfica com o propsito de gerar uma resposta da mquina visada. O computador alvo deve responder com um acknowledgment (confirmao de recebimento) para cada pacote recebido. Este programa foi criado para verificar se um computador especfico existe e est conectado a uma rede. Corre a histria de que o nome ping foi inspirado no som emitido por sonares de submarino; outros afirmam que o emissor lana um ping e que o alvo responde com um pong, lembrando o jogo de pinguepongue e ainda tem quem jura que vem de Packet Internet Groper. Fbulas da turma da rede? O PING usa pacotes ICMP (Internet Control Message Protocol). O pacote do computador de origem chamado de ICMP_echo_request - solicitao de eco ICMP - e a resposta do computador alvo chamada de ICMP_echo_reply - resposta de eco ICMP. Por padro, cada pacote contm 32 ou 64 bits de dados e 8 bytes de informao de leitura de protocolo. Acontece que o PING pode ser configurado para usar pacotes de tamanhos diferentes... e a que est um dos perigos!

Como usar o PING


Na linha de comando, digite ping seguido de um C]:

endereo IP qualquer.

Para parar o ping, digite [Crtl +

# ping 189.19.3.112 PING 189.19.3.112 (189.19.3.112) 56(84) bytes 64 bytes from 189.19.3.112: icmp_seq=1 ttl=48 64 bytes from 189.19.3.112: icmp_seq=2 ttl=48 64 bytes from 189.19.3.112: icmp_seq=3 ttl=48 64 bytes from 189.19.3.112: icmp_seq=4 ttl=48 64 bytes from 189.19.3.112: icmp_seq=5 ttl=48 64 bytes from 189.19.3.112: icmp_seq=6 ttl=48 64 bytes from 189.19.3.112: icmp_seq=7 ttl=48

of data. time=32.9 time=33.9 time=72.6 time=34.0 time=41.7 time=52.2 time=34.6

ms ms ms ms ms ms ms

--- 189.19.3.112 ping statistics --7 packets transmitted, 7 received, 0% packet loss, time 6060ms rtt min/avg/max/mdev = 32.937/43.161/72.650/13.629 ms Observe que o PING vai mostrando cada pacote recebido de volta indicando a sequncia de recebimento (no exemplo as respostas foram recebidas na sequncia certa, de icmp_seq=1 at icmp_seq=7), o ttl (time to live = tempo de vida do pacote) e o tempo que levou para a resposta chegar. No final, vem a estatstica que mostra que 7 pacotes foram transmitidos, 7 foram recebidos, houve 0% de perda de pacotes e o tempo total foi de 6060 milisegundos. Mostra tambm a resposta mais rpida (32.937 ms), a mdia (43.161 ms), a resposta mais demorada (72.650 ms) e o desvio padro (13.629 ms). Uma poro de informaes sobre o comportamento da mquina alvo e sobre as rotas que os pacotes percorreram - algumas melhores e outras no to boas.

Os perigos do PING
Imagine que voc aponte o ping para um servidor e deixa o barco correr. Enquanto voc no interromper o programa, sua mquina pode gerar milhares (e at milhes) de pacotes que vo ficar bombardeando o alvo.

Vamos piorar um pouco o cenrio brincando com o tamanho dos pacotes enviados. Deliberadamente vamos criar pacotes com mais de 65.536 bytes, o tamanho limite antes do pacote ser fragmentado. Para cada pacote deste tipo, o alvo vai receber no mnimo dois fragmentos do pacote, ter que recompor o pacote original e tentar dar a confirmao de recebimento. Este o chamado Ping da morte (ping of death). At o final de 1997, o ping da morte pegava os sistemas operacionais de calas curtas. A mquina no sabia o que fazer com estes pacotes enormes e acabava pendurando, caindo ou rebootando. Este ataque DoS (Denial of Service - Negao de Servio) ficou famoso pelo enorme estrago que causou antes que os sistemas operacionais pudessem ser melhorados para enfrentar este tipo de ameaa. Hoje em dia este ataque, tambm conhecido como long ICMP, uma raridade (se que ainda funciona). Ento, por que se preocupar? Por dois motivos: porque no tem sentido deixar uma mquina minha responder para qualquer outra pessoa a no ser eu e porque as criaturas das trevas podem descobrir mais alguma brecha de segurana e a coisa ficar preta novamente Para mim, isto basta. por este motivo que todos os meus servidores NO respondem a um PING. S "ligo" o PING quando estou testando uma mquina; depois de pronta, "desligo" rapidinho. Veja como fcil fazer isto.

Bloqueando/Desbloqueando o PING
Usando o sysctl
Existe um arquivo chamado sysctl.conf que geralmente est no diretrio /etc (/etc/sysctl.conf). Para bloquear o PING, adicione neste arquivo estas duas linhas: net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_echo_ignore_all = 1 Para ativar a nova configurao, chame o sysctl com a opo -p: # sysctl -p ... net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_echo_ignore_all = 1 Confira se realmente o PING est bloqueado. Aqui vou dar uma dica esquisita: vamos dar um ping no localhost! Parece bobeira, mas no . Como qualquer outra mquina da rede, se o PING estiver ativo, o localhost responde para ele mesmo; se no, ele no responde. # ping -c 5 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. --- 127.0.0.1 ping statistics --5 packets transmitted, 0 received, 100% packet loss, time 4017ms -c 5 diz ao ping para enviar apenas 5 pacotes. Se a mquina for reinicializada, estas informaes no so perdidas.

Para desbloquear o PING, basta trocar o valor de net.ipv4.icmp_echo_ignore_broadcasts e de net.ipv4.icmp_echo_ignore_al de 1 para 0 e ativar a nova configurao com um sysctl -p. No gosto de simplesmente eliminar as linhas porque mais tarde, quando quiser bloquear novamente o PING, no vou conseguir lembrar das diretivas... coisas de v esquecida

Usando o iptables
Outra forma de bloquear pacotes do PING colocando regras no iptables especficas para este protocolo. Podemos bloquear qualquer pacote ICMP para todas as requisies, bloquear pacotes especficos para todas as requisies ou at abrir o PING para determinadas mquinas e fechar para todas as outras. Exemplo 1: bloquear totalmente o ICMP. # iptables -A INPUT -p icmp -j DROP Neste caso, nenhum pacote ICMP aceito pelo computador chamado. Nem o ping 127.0.0.1 ser respondido, pois o localhost tambm entra nesta regra do iptables. Exemplo 2: bloquear apenas os pacotes ICMP do tipo echo-request. # iptables -A INPUT -p icmp --icmp-type echo-request -j DROP Exemplo 3: liberar para uma mquina e bloquear para todas as outras. # iptables -A INPUT -s 10.20.30.40 -p icmp -j ACCEPT # iptables -A INPUT -p icmp -j DROP A permisso para a mquina cujo endereo IP 10.20.30.40 precisa vir antes da regra que bloqueia todas as outras solicitaes via ICMP.

linux-br)Iptables bloqueando PING!


WebMaster - Jet Sites renato em jetsites.com.br Quarta Julho 16 16:16:45 BRT 2003 Mensagem anterior: (linux-br)Iptables bloqueando PING! Prxima mensagem: (linux-br)Iptables bloqueando PING! Mensagens classificadas por: [ date ] [ thread ] [ subject ] [ author ]
Eu se fosse voc no bloquearia PING, faria uma coisa mais inteligente (na minha opiniao): Colocaria um limite de requisies e respostas ping por segundos, assim evitaria ataques do tipo ping of death e DoS simples. Se for fazer isso, as regras so: iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j RETURN Falow

-Renato Quinhoneiro Todorov Administrao Linux / Programao renato at jetsites.com.br http://www.jetsites.com.br

Ricardo Castanho de Oliveira Freitas wrote: >Ol Pessoal! > >Sculos atrs....algum postou uma regra para bloquear PING em iptables que >por minha falha eu perdi E no encontrei no histrico! > >Alis, s encontrei os ltimos trs meses.... > >Algum pode ajudar me lembrando qual era esta regra? >Era to simples que no anotei.... ;-( > >Depois da atualizao...... sumiu! > >[]s Ricardo Castanho > >

Pessoall, Meu firewall que configurei em um cliente estava funcionando legal porm percebi que ele no deixava pingar pra fora da rede e depois comeou a bloquear a prpria navegao.
amigos

para verificar a qualidade dele.

Vejam que a ltima linha (#iptables -A INPUT -j DROP) est comentada pois fiz de tudo mas se nao comentar ele bloqueia tudo porm eu gostaria de bloquear tudo que entra nada rede, exceto o que o iptables liberar.
Cdigo:

echo "Iniciando Firewall" echo "Zerando regras" iptables iptables iptables iptables -F -Z -X -t nat -F

echo "Compartilhando Conexo" /sbin/modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -o eth0 -j

MASQUERADE echo "Liberando portas necessarias" echo "SSH" iptables -A INPUT -p tcp -m tcp --dport 4980 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 4980 -j ACCEPT Acesso a DNS da Print" iptables iptables iptables iptables -A -A -A -A OUTPUT -d 200.220.214.254 -j ACCEPT OUTPUT -d 200.220.214.250 -j ACCEPT INPUT -s 200.220.214.254 -j ACCEPT INPUT -s 200.220.214.250 -j ACCEPT

echo "Navegacao" iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 80 - j ACCEPT echo "WebMin" iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --sport 10000 -j ACCEPT echo "FTP" iptables -A iptables -A iptables -A iptables -A

INPUT -p tcp --dport 21 -j ACCEPT INPUT -p tcp --dport 20 -j ACCEPT OUTPUT -p tcp --sport 21 -j ACCEPT OUTPUT -p tcp --sport 20 -j ACCEPT

Servidor Apache" iptables -A INPUT -p tcp --dport 60000 -j ACCEPT echo "FireBird SQL Server" iptables -A INPUT -p tcp --dport 3050 -j ACCEPT echo "Protegendo contra Ataques" iptables -A INPUT -m state --state INVALID -j DROP echo "Limitando resposta do PING por segundos"

iptables -A INPUT -p -m limit --limit 1/s iptables -A INPUT -p limit --limit 1/s -j

icmp --icmp-type echo-request -j ACCEPT icmp --icmp-type echo-reply -m RETURN

echo "Fechando portas conhecidas" iptables -A INPUT -p tcp -i eth0 -m multiport --destination-port 23,25,53,80,110,111,113,137,139,6667,3306 -j DROP echo "Protegendo contra IP spoofing" echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter echo "Protegendo para somente pacotes vidos ESTABLISHED e RELATED" iptables -A INPUT -i eth0 -m state --state ! ESTABLISHED,RELATED -j DROP echo "Aceitando pacotes da rede interna" iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT echo "Bloqueando acesso externo ao NFS" iptables -A INPUT -p tcp -s ! 192.168.0.0/24 --dport 111 -j DROP iptables -A INPUT -p tcp -s ! 192.168.0.0/24 --dport 2049 -j DROP echo "Configurando Log para outra conexo" iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT " iptables -A INPUT -p tcp --dport 3050 -j LOG --logprefix "FIREBIRD: INPUT" #iptables -A INPUT -j DROP

Você também pode gostar