raw_socket

Diferenças

Esta página mostra as diferenças entre as duas revisões da página.

Links para esta vista de comparação

Ambos os lados da revisão anterior Revisão anterior
raw_socket [2025/04/22 13:14] todtraw_socket [2025/04/22 13:14] (Atual) todt
Linha 5: Linha 5:
 Nesta disciplina, estamos interessados em criar o nosso próprio protocolo de rede, evitando abstrações ao máximo possível. Para tal, podemos utilizar //raw sockets//, que nos permitem interagir com a placa de rede quase que diretamente, lendo e escrevendo bytes na rede. Nesta disciplina, estamos interessados em criar o nosso próprio protocolo de rede, evitando abstrações ao máximo possível. Para tal, podemos utilizar //raw sockets//, que nos permitem interagir com a placa de rede quase que diretamente, lendo e escrevendo bytes na rede.
  
-Essa interação mais direta com a placa de rede traz riscos à segurança: qualquer programa pode escrever bytes arbitrários na placa de rede, passando por quaisquer filtros e //firewalls// presentes no sistema operacional. Além disso, é possível também ler todos os pacotes que estão passando pelo fio desta maneira, o que traz riscos para o usuário que usa aplicações que enviam pacotes descriptografados. Assim, o uso de //raw sockets// é limitado ao usuário root (ou com //capability// ''CAP_NET_RAW'') em sistemas Linux. Esse é o motivo, por exemplo, do programa ping rodar como root via setuid, pois utiliza //sockets// crus para mandar pacotes ICMP.+Essa interação mais direta com a placa de rede traz riscos à segurança: qualquer programa pode escrever bytes arbitrários na placa de rede, passando por quaisquer filtros e //firewalls// presentes no sistema operacional. Além disso, é possível também ler todos os pacotes que estão passando pelo fio desta maneira, o que traz riscos para o usuário que usa aplicações que enviam pacotes descriptografados. Assim, o uso de //raw sockets// é limitado ao usuário root (ou com //capability// ''CAP_NET_RAW'') em sistemas Linux. Esse é o motivo, por exemplo, do programa ping rodar como root via setuid, pois utiliza //raw sockets// para mandar pacotes ICMP.
  
 O resultado é que para rodar aplicações utilizando //raw sockets//, você vai precisar de um computador com acesso a root. Nos laboratórios do departamento, a maneira mais fácil de fazer isso é utilizando uma distribuição Linux em um pen drive. Qualquer uma pode ser utilizada, sendo uma opção a distribuição [[https://antixlinux.com/|antiX Linux]], que permite que o sistema operacional inteiro rode em memória, permitindo que o pen drive seja retirado depois da inicialização (o que permite utilizar o mesmo pen drive para fazer setup de dois ou mais computadores!). O resultado é que para rodar aplicações utilizando //raw sockets//, você vai precisar de um computador com acesso a root. Nos laboratórios do departamento, a maneira mais fácil de fazer isso é utilizando uma distribuição Linux em um pen drive. Qualquer uma pode ser utilizada, sendo uma opção a distribuição [[https://antixlinux.com/|antiX Linux]], que permite que o sistema operacional inteiro rode em memória, permitindo que o pen drive seja retirado depois da inicialização (o que permite utilizar o mesmo pen drive para fazer setup de dois ou mais computadores!).
  • raw_socket.txt
  • Última modificação em: 2025/04/22 13:14
  • por todt