terça-feira, julho 21, 2009

iMasters - Derrubando conexões estabelecidas - Linux

Segunda-feira, 29/06/2009 - 09:00 - Por Júlio Henrique Conceição
Seções relacionadas:
Derrubando conexões estabelecidas

Os Administradores de Redes costumam, muitas vezes, receber reclamações de lentidão no acesso à Internet. Utilizando as ferramentas apropriadas, podemos descobrir se existe alguém que esteja consumindo banda em atividades não relacionadas ao trabalho. Mas como interromper a conexão e liberar a banda para o restante dos usuários da rede?

Introdução

Depois de visualizar a dica sobre o sqstat e implementá-lo, fiquei pensando, será que é possível interromper uma conexão que está consumindo banda, como um download ou uma exibição de vídeo, por exemplo?

Depois de pesquisar, cheguei ao tcpkill, que faz parte do pacote dsniff.

Instalação

Para instalar o pacote dsniff e utilizar o comando tcpkill em uma máquina Red Hat, Fedora ou CentOS, podemos recorrer ao yum.

# yum install dsniff

Uma vez instalado, o comando tcpkill estará disponível em /usr/sbin/tcpkill.

Utilização

A sintaxe do comando tcpkill é bem parecida com a do comando tcpdump, bastante conhecida pelos administradores Linux.

# tcpkill -i  { expressão }

Supondo que seu firewall é uma máquina Linux com o pacote dsniff instalado, e que você visualizou, através do sqstat ou do iptraf, que o endereço IP 192.168.0.123 está realizando um download via http de uma imagem de cdrom (iso) com 700Mb, através do IP 200.200.200.1, e que a interface LAN do firewall é eth0.

O exemplo abaixo interromperia todas as conexões desta máquina:

# tcpkill -i eth0 host 192.168.0.123

Já o comando a seguir interromperia nesta máquina as conexões com destino à porta 80:

# tcpkill -i eth0 host 192.168.0.123 and port 80

O próximo comando interromperia as conexões entre os IPs 192.168.0.123 e 200.200.200.1:

# tcpkill -i eth0 host 192.168.0.123 and host 200.200.200.1

E o comando abaixo interromperia todas as conexões à porta 80:

# tcpkill -i eth0 port 80

Considerações

Muita atenção com o comando abaixo:

# tcpkill -i eth0

Pois ele irá interromper todas as conexões vindas da interface eth0, inclusive a sua, caso esteja fazendo acesso remoto ao servidor.

Para que isso não aconteça, a sintaxe deve ser:

# tcpkill -i eth0 not host 192.168.0.200

Onde 192.168.0.200 é o IP da sua máquina

  • É importante atentar ao fato que o comando tcpkill permanecerá em execução até que seja interrompido com um CTRL + C. Isso significa que, enquanto o comando estiver em execução, qualquer nova tentativa de conexão será rejeitada.

Avançando

Em princípio, pensei que o comando tcpkill funcionasse, somente, se fosse executado através da máquina firewall da rede (aquela pela qual a conexão obrigatoriamente "passa").

Porém, fiz testes em uma máquina diferente do firewall, conectada a uma porta do switch que espelhava (port mirroring) a porta do firewall; neste cenário, o comando tcpkill também conseguiu interromper as conexões.

Isso é realmente interessante, uma vez que, mesmo em ambientes nos quais não há um firewall Linux, é possível aproveitar o poder desta plataforma para monitorar a atividade da rede (usando o ntop, por exemplo) e atuar, caso necessário, utilizando o comando tcpkill.

Conclusão

Neste artigo, vimos uma introdução ao comando tcpkill, mais uma importante ferramenta no dia-a-dia de um Administrador de Redes. Para mais informações, consulte a página de manual.

# man tcpkill

Até a próxima!


iMasters - Derrubando conexões estabelecidas - Linux

 



 

Technorati Marcas: : , , , ,

 

 

BlogBlogs Marcas: : , , , ,

 

Nenhum comentário:

Postar um comentário

Aúncio