Instalação e Configuração Iptables ( Firewall) Pág - 1
Instalação e Configuração Iptables - Firewall Desde o primeiro tutorial da sequencia dos passo a passo, aprendemos a configurar duas placas de rede, uma para receber o link de internet e a outra para conectarmos a nossa rede local, agora vamos aprender a como fazer este compartilhamento. Você pode fazer de duas formas, a primeira é digitando no terminal cada comando que irei mostrar a seguir, porém ao reiniciar o micro a configuração será perdida (e não é isso que queremos, não é verdade?). A outra é criar um arquivo texto e colocar todos os comandos nele, gerando assim um pequeno script, onde esta é a opção aconselhável. Mas agora vamos por a mão na massa. Passo Nº 1 Inicialmente precisaremos entender alguns parametros do formato do filtro: iptables [ -t tabela ] <comando> <chains> [ opção<parâmetro> ] <destino> Iptables O iptables é uma ferramenta que pode ser usada para controlar o Netfilter das mais diversas distribuições Linux. O Netfilter é um firewall embutido no kernel do Linux e o iptables é uma ferramenta que permite estabelecer regras para este firewall. Tabelas são os locais usados para armazenar os chains e conjunto de regras com uma determinada característica em comum. As tabelas podem ser referenciadas com a opção -t tabela e existem 3 tabelas disponíveis no iptables: filter - Esta é a tabela padrão, contém 3 chains padrões: INPUT (entrada), OUTPUT (saída) FORWARD (redespacho), nat - Usada para dados que gera outra conexão (masquerading, source nat, destination nat, port forwarding, proxy transparente são alguns exemplos). mangle - Utilizada para alterações especiais de pacotes (como modificar o tipo de serviço (TOS). Pág - 2
Comandos Opções -P Mudar politica de uma chain. -A Adicionar regra no final das regras criadas. -I Insere uma regra no inicio de todas as regras. -D Apaga uma regra. -F Apaga todas as regras de um chain. -L Lista os estado do iptables. -h Exibe uma mensagem de ajuda. -s Especifica o endereço de origem -d Especifica o endereço de destino -p Especifica o protocolo ( TCP, UDP, ICMP, ALL ) -i Especifica a interface de entrada dos pacotes -o Especifica a interface de saída dos pacotes --tcp-flags A mascara indica quais as flags a vigiar e o resultado esperado. As flags podem ser: SYN,ACK,FIN,RST,URG,PSH,ALL,NONE. --syn Examina a flag TCP SYN. --sport Indica a porta TCP da origem --dport Indica a porta TCP de destino Destino Toda regra tem um destino, que é o que ocorrerá com o pacote cajo haja um match com a regra. Os target s possíveis são: Opções ( -j ) ACCEPT O pacote será aceito. DROP O pacote será destruído. REJECT O pacote será rejeitado e uma mensagem icmp será enviada à origem. LOG Cria um log referente a regra. SNAT Utiliza-se com a chain POSTROUTING para fazer ações de mascaramento da origem. DNAT Utiliza-se com a chain PREROUTING e OUTPUT para fazer ações de redirecionamentos de portas e servidores, balanceamento de carga. --to Define o endereço IP e a porta de destino, após um DNAT, ou de origem, após um SNAT. MAQUERADE Faz mascaramento de saída de dados. REDIRECT Redireciona uma requisição para uma porta local do firewall. --to-port Define uma porta de destino após um REDIRECT. RETURN Executa uma regra até que haja uma falha em alguma delas. Pág - 3
Passo Nº 2 Criar um arquivo texto e editá-lo conforme o exemplo. # nano /etc/init.d/firewall #! /bin/bash #Compartilhando a Internet entre eth0 e eth1 # eth0 = placa de rede externa 192.168.1.120 # eth = placa de rede interna 192.168.5.120 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo compartilhamento criado com sucesso #Proxy Transparente iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 echo Proxy Transparente ok # Criando um Firewall (iptables) # Liberando SMTP iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 25 -j ACCEPT # Proxy 3128 iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3128 -j ACCEPT # Liberando DNS iptables -A INPUT -p udp -s 0/0 -d 0/0 --sport 53 -j ACCEPT iptables -A INPUT -p tcp -s 0/0 -d 0/0 --sport 53 -j ACCEPT # Liberando HTTPD iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 80 -j ACCEPT # Liberando POP3 iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 110 -j ACCEPT # Liberando WEB MAIL iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 143 -j ACCEPT # Bloqueando SUNRPC iptables -A INPUT -p tcp -s 0/0 -d 0/0 --dport 111 -j REJECT # Bloqueando NMAP iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP Pág - 4
Passo Nº 3 Save e saia do modo de edição e de permissões de execução ao arquivo: # cd /etc/init.d/ #chmod 755 firewall Pág - 5
Passo Nº 4 Para facilitar vamos instalar uma ferramenta para configurarmos que inicie automaticamente ao ligar o servidor # apt-get install rcconf Passo Nº 5 execute o rcconf # rcconf Pág - 6
Passo Nº 6 Selecione o firewall e clique em ok, e reiniciarmos também o serviço do firewall # /etc/init.d/firewall restart Passo Nº 7 Uma vez a rede interna compartilhada, criado o proxy transparente e regras, vamos reconfigurar um parâmetro do squid para que trabalhe em proxy transparente. Acesse a pasta e edite o arquivo squid.com conforme segue: # cd /etc/squid3/ # nano squid3.conf Pág - 7
Passo Nº 8 Descomente a linha que deixamos anteriormente já preparada para o squid transparente http_port 3128 transparent e apage a linha http_port 3128 conforme segue: Passo Nº 9 Restart o squid : # /etc/init.d/squid3 restart Passo Nº 10 Exclua toda as configurações de proxy realizadas nos navegadores de internet anteriormente, conforme já orientado. Pág - 8