Bruno Tinoco | IT Professional

----| BT Info | Bussiness Technology |----------| Microsoft | Linux |-----




Bom, a estrutura dos comandos do iptables é mais ou menos assim:

iptables [-t tabela] [comando] [chain] [opções] [alvo]

Exemplo de regra:

# iptables -t filter -A FORWARD -d 127.0.0.1 -j DROP

Explicando:

* "-t filter" - Aqui vão as tabelas... filter, nat e mangle.
* "-A" - Aqui vão os comandos, vou listá-los abaixo. É de fácil entendimento:
-L - Lista as regras de uma chain;
-D - Deleta uma regra de uma chain;
-A - Adiciona uma regra no fim da chain;
-I - Adiciona uma regra em lugar específico da chain;
-R - Troca uma regra por outra;
-P - Define a regra padrão para se o pacote não bater com todas as outras regras;
-F - É o apocalipse das regras. Limpa TUDO da chain;
-N - Cria uma chain;
-E - Muda o nome de uma chain;
-X - Deleta uma chain;

* "FORWARD" - Aqui vão as chains... as chains são case-sensitive, ou seja, se o nome for MAIÚSCULO, tem de ser MAIÚSCULO. Ou seja, tem diferença entre input e INPUT.
* "-d 127.0.0.1" - Bom, aqui podem vir uma série de opções. Essa é a parte responsável pelo filtro do iptables efetivamente, é aqui onde se afunila a boca no túnel. Lista de opções abaixo, vou listar as mais conhecidinhas, senão é muita informação:

-p - Especifica o protocolo, que nem tcp ou udp. Pode-se usar um número para uma referência ao arquivo /etc/protocol;
-i - Especifica a interface de entrada. Pode ser, por exemplo, a(s) placa(s) de rede do computador;
-o - A mesma coisa que a de cima, mas é a saída;
-s - Endereço, em forma de ip ou nome de rede, de origem (source) do pacote, tal como 192.168.1.1 ou google.com.br;
-d - A mesma coisa que a de cima, mas é o destino;
-j - Especifica o alvo do pacote;
--dport - Especifica uma porta de destino;
--sport - Especifica uma porta de origem;
! - Usado na sintaxe do comando para dizer diferente. Ou seja, -d ! 192.168.1.1, quer dizer, tudo que for diferente de 192.168.1.1;
--to - Usado pelo comando DNAT e SNAT para especificar endereços de alvos dos pacotes. Não esquentem a cabeça, veremos mais a frente;

* "DROP" - Aqui é o alvo, ou a ação que sera tomada em relação ao pacote identificado pela regra. Ou seja, o pacote bateu com a descrição da regra? É aqui que se define o que fazer com ele. Mais ou menos que nem a polícia, que se pega um cara com cara de suspeito na rua, decide se leva em cana ou libera ele.


Os alvos podem ser:

* ACCEPT - Aceita o pacote e passa para próxima etapa;
* DROP - Derruba o pacote, sem dar resposta ao servidor que o originou;
* LOG - Loga o pacote que bater com a regra. MUITO útil para administração de servidores;
* REJECT - A mesma coisa que o drop, mas ele retorna uma mensagem avisando que o pacote foi derrubado;
* SNAT - Altera o endereço de origem do pacote;
* MASQUERADE - Tipo especial de SNAT, feito para ser utilizado para redirecionar tráfego interno para a internet, quando se tem, por exemplo, um ip dinâmico. É uma facilitação para roteamento de internet em relação ao SNAT;
* DNAT - Altera o endereço de destino do pacote;
* RETURN - Retorna ao processamento da chain anterior;
* REDIRECT - Redireciona algo para outra porta. Extremamente útil;
* QUEUE - Faz um programa ser responsável por tratar o fluxo que chegar nele;
* TOS - Prioriza a entrada ou saída de pacotes. As opções do TOS são:

a) 16 ou 0x10 - MAIOR PRIORIDADE
b) 8 ou 0x08 - MAIOR PROCESSAMENTO
c) 4 ou 0x04 - MAIOR CONFIANÇA
d) 2 ou 0x02 - MENOR CUSTO
e) 0 ou 0x00 - NORMAL


Além disso, ainda existem certos módulos que são utilizados, também, para filtrar ou identificar certos pacotes:

* state - Estado da conexão NEW, ESTABLISHED, RELATED etc;
* limit - Especifica um certo limit para certa ação;
* mac - Identificar o mac da conexão;
* multiport - Até 15 portas no comando --dport e --sport. Útil, mas nem tanto;
* string - Olha DENTRO do pacote afim de identificar o seu conteúdo;
* owner - Verifica quem criou o pacote.


Exemplos de comando:

# iptables -A INPUT -s 200.200.200.1 -i eth0 -j REJECT

Rejeita pacotes que entram no computador local e que não são roteados, vindos do endereço 200.200.200.1, vindo da interface eth0, devolvendo uma mensagem a origem.

# iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to 192.168.1.2

Modifica o endereço de destino para o que vier de 200.200.217.40, vindo da interface eth0, mudando para o endereço 192.168.1.2.

# iptables -t mangle -A OUTPUT -o eth0 -p tcp --dport 80 -j TOS --set-tos 16

Prioriza o tráfego que sai do computador local pela porta 80.

Espero que possa ter ajudado...

Abraço a Todos!!

0 comentários:

Postar um comentário