Você está na página 1de 22

UNIVIOSA

Configurando IPTables

Allan Guerreiro Carneiro

Introduo
- A funo do Firewall tomar conta das portas, verificar quem as est acessando e conforme a as regras do usurio deixar ou no o acesso dos programas atravs das referidas portas. - Para usurios Linux temos o iptables. Dentre as vantagens do iptables podemos citar a estabilidade, rapidez e eficincia. Sua configurao feita atravs de scripts. Um detalhe muito importante, o iptables acompanha o kernel 2.4.x do Linux. Em um kernel anterior (2.2.x) havia o ipchains.

Introduo
- O Ubuntu tem seu kernel compilado com suporte ao iptables, isso , ao instalar o Ubuntu, o iptables estar ativo. Na maioria das distribuies Linux ele (iptables) j vem nativamente. - Existe um programa grfico sob a licena GPL para manipular o iptables (suas regras) chamado Firestarter. - As regras do iptables so compostas de uma Tabela, Opo, Chain, Dados e Ao. Atravs destes elementos podemos especificar o que fazer com os pacotes. Estrutura de uma regra: iptables [-t tabela] [opo] [chain] [dados] -j [ao]

Composio das regras do iptables: tabelas, opes e chains.

Tabelas:
- So os locais usados para armazenar os chains. As tabelas so referenciadas em uma regra iptables com a opo "-t tabela". Existem 3 tabelas disponveis: * filter - tabela padro, usada no trfego de dados comum com ocorrncia de NAT (gerao de outra conexo); * nat - usada quando h ocorrncia de NAT (gerao de outra conexo); * mangle - raramente usada, utilizada para alteraes especiais de pacotes. Se voc deixar em branco [-t tabela], a tabela usada ser a filter.

Opes:
Representada por uma letra sempre escrita em maiscula. * -P = define uma regra padro; * -A = acrescenta uma nova regra s existentes; * -D = apaga uma regra; * -L = lista as regras existentes; * -F = apaga todas as regras; * -I = insere uma nova regra; * -h = mostra a ajuda; * -R = substitui uma regra; * -C = chega as regras existentes; * -Z = zera uma regra especifica; * -N = cria uma nova regra com um nome; * -X = exclui uma regra especfica pelo seu nome.

Chains:
- Com eles podemos especificar a situao do tratamento
dos pacotes, seja qual tabela for, exemplo: para tabelas filter temos as seguintes tipos de chains: * INPUT - consultado para dados que chegam ao computador; * OUTPUT - consultado para dados que saem do computador; * FORWARD - consultado para dados que so redirecionados para outra interface de rede ou outra mquina.

Chains:
- J para as tabelas nat os chains possveis so:
* PREROUTING - consultado para os dados que precisam ser modificados logo que chegam (DNAT e redirecionamento de portas); * POSTROUTING - consultado para dados que precisam ser modificados aps o tratamento de roteamento (SNAT e IP Masquerading); * OUTPUT - consultado quando os dados gerados localmente precisam ser modificados antes de serem roteados (IPs locais). - Para as tabelas mangle usamos os seguintes chains: INPUT, FORWARD, PREROUTING, POSTROUTING, OUTPUT.

Composio das regras do iptables: dados e aes.

Dados:
- As opes de dados possveis de insero em uma regra
iptables so: -s - Especifica a origem do pacote. Origem que pode ser informada como: * endereo IP completo (-s 192.168.1.1); * hostname (-s ubuntu); * endereo fqdn (-s www.ubuntu.com); * par rede/mscara (-s 200.200.200.0/255.255.255.0 ou -s 200.200.200.0/24). -d - Especifica um destino para o pacote, com a mesma sintaxe descrita acima por -s.

Dados:
-i - Identifica a interface de entrada do pacote, podendo ser placa de rede, modem ou interface de conexo: * -i eth0 * -i eth1 * -i ppp0 -o Identifica a interface de sada do pacote, com a mesma sintaxe descrita acima em -i. - OBS: A interface de entrada (-i) nunca poder ser especificada em um chain OUTPUT e a interface de sada (-o) nunca poder ser especificada em um chain INPUT.

Dados:
-p - Especifica o protocolo usado na regra, podendo ser: * -p tcp * -p udp * -p icmp -sport ou --source-port - Especifica uma porta ou faixa de portas de origem. Deve sempre ser acompanhado por -p tcp e -p udp. -dport ou --destination-port - Especifica uma porta ou faixa de portas de destino. Deve sempre ser acompanhado por -p tcp e -p udp. ! - Exclui determinado argumento (exceo).

Aes:
- Sempre vem aps o parmetro -j e os mais usados so:
* ACCEPT - O pacote ACEITO e o processamento das regras daquele chains concludo; * DROP - Rejeita o pacote sem nenhum aviso; * REJECT - Rejeita o pacote, mas envia um aviso; * LOG - Este mdulo envia uma mensagem ao syslog (/var/log/messages) tanto com o pacote aceito ou rejeitado.

Manipulando regras:
- Aps conhecermos toda a estrutura de uma regra para o iptables, devemos saber como salvar nossas regras. Ns podemos usar duas maneiras. A primeira usando o comando: # iptables-save > /diretrio/[d um nome para o arquivo] Para restaur-la, usamos outro comando: # iptables-restore > /diretrio/[nome do arquivo]
A segunda maneira criando um script com as regras: #!/bin/bash # descrio da regra iptables [regra]

Manipulando regras:
A segunda maneira criando um script com as regras:
#!/bin/bash # descrio da regra iptables [regra]

Salve o arquivo [nome do arquivo], d permisso de execuo: $ sudo chmod +x [nome do arquivo] Toda vez que quiser que ele seja habilitado s execut-lo (sempre como root): $ sudo [nome do arquivo]

Manipulando regras:
- Para no ter que ficar ativando o script [nome do arquivo]
toda vez que inicializar o sistema, voc pode fazer com que ele seja ativado na inicializao. Para isso preciso editar o arquivo /etc/rc.d/rc.local e incluir em seu final: [nome do arquivo]. $ sudo gedit /etc/rc.d/rc.local

Criando Scripts.

Permitindo o Estabelecimento de Sesses:

Comandos Bsicos:
- Digitando: $ sudo iptables -L - Lista suas atuais regras no iptables. Se voc acabou de configurar seu servidor, voc no ter regras, e voc ver:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

- Ns podemos permitir o estabelecimento de sesses para receber o trfego:


$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

- Voc poderia comear por bloquear o trfego, mas talvez voc esteja trabalhando por SSH, onde voc precisa permiti-lo antes de bloquear todo o resto. - Para permitir o trfego de entrada (incoming) padro para porta SSH (22), voc pode dizer ao iptables permitir que todo trfego TCP nesta porta esteja autorizado.
$ sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

--dport As Portas de destino precisam desta regra.

- Sobre o comando anterior uma regra que significa, a permisso de todos os pacotes TCP vindos da porta padro SSH. - Fazendo uma nova checagem as regras do Iptables vemos:
$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source ACCEPT all -- anywhere ACCEPT tcp -- anywhere

destination anywhere anywhere

state RELATED,ESTABLISHED tcp dpt:ssh

- Agora, vamos permitir todo trfego de entrada na Web.


$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

- Checando as regras ns temos:


$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source ACCEPT all -- anywhere ACCEPT tcp -- anywhere ACCEPT tcp -- anywhere

destination anywhere anywhere anywhere

state RELATED,ESTABLISHED tcp dpt:ssh tcp dpt:www

Outras Regras:
- Um exemplo que cria uma regra que nega todos os pacotes ICMP vindos do servidor, em que se encontra o firewall.
#iptables -A INPUT -P icmp -j DROP

- Isso apaga a regra setada acima.


#iptables -D INPUT -p icmp -j DROP

- A regra citada faz com que todos os pacotes vindos de qualquer endereo da classe de ip 200.204.120.0
#iptables -A INPUT -s 200.204.120.0/24 -j DROP

- Esta regra s permitir pacotes icmp para mquinas que estejam em qualquer endereo ip, menos no citado abaixo.
#iptables -A OUTPUT -p icmp -d ! 200.201.120.0/24 -j ACCEPT

Você também pode gostar