terça-feira, 22 de setembro de 2015

Protocolos TCP e UDP



 TCP (Transmission control protocol) e UDP (User Datagram Protocol, são os principais protocolos da camada de Transporte do modelo OSI (Open Systems Interconection), são responsáveis pela segmentação de pacotes pela rede.
O protocolo TCP é orientado a conexão, possui controle de erros, com três fases distintas:
1 - Inicialização de sessão
2 - Manutenção de sessão
3 - Finalização de sessão


O protocolo UDP, não orientado a conexão, não possui controle de erros. É menos confiável, porém sua entrega de dados é mais rápida.


 Na prática, na estrutura do netfilter (a camada de transporte em geral), são usadas portas para cada tipo de serviço. Existem 65535 portas, tanto TCP e UDP que podem ser usadas na segmentação de pacotes numa rede Ethernet.
Uma forma simples de saber qual porta está vinculada a qual tipo de serviço, é consultar o arquivo “/etc/services”, em qualquer distribuição Linux:
#cat /etc/services | grep telnet
#cat /etc/services | grep tftp
#cat /etc/services | grep http


Quando criamos uma regra no iptables, para compreender a sintaxe de uma regra específica, temos basicamente:
#iptables -t filter -A INPUT -i eth0 -p tcp -s 0/0 -d 192.168.1.100 --sport 1024:65535 --dport 3389 -j ACCEPT


-Adicionando na cadeia INPUT, entrando pela interface eth0 ,qualquer endereço de origem, com destino ao ip 192.168.1.100, com porta TCP de origem dentro do range de 1024 à 65535 com destino a porta TCP 3389 (Terminal Services) é aceito.


Entendendo a utilização de portas TCP quando se inicializa uma conexão.

Acesso há um Web Site por exemplo:
 Sua porta TCP de origem sempre será alta (de 1024 à 65535) aleatório, dentro desse range, não dá para especificar exatamente qual, a porta de destino será a TCP 80 (pedido de SYN)
 Quando o Servidor Web te retorna uma resposta (ACK), ele utiliza a porta TCP 80 de origem e alguma porta alta TCP, aleatória dentro do range de 1024 à 65535 para o destino. Por isso, se utilizarmos alguma regra na cadeia FORWARD (ByPass) temos que criar uma regra simétrica, na ida e na volta, exemplo:
#iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 172.16.1.0/24 -d 0/0 --sport 1024:65535 --dport 80 -j ACCEPT
#iptables -A FORWARD -i eth0 -o eth1 -p tcp -s 0/0 -d 172.16.1.0/24 --sport 80 --dport 1024:65535 -j ACCEPT



Nenhum comentário:

Postar um comentário