Iptables com nat, prioridade de pacotes e bloqueio de portas
Publicado por tiago cesar de lima (última atualização em 08/07/2010)
[ Hits: 12.938 ]
Boas pessoal. Esse é meu primeiro firewall e gostaria da opinião de vocês.
Meu cenário é uma empresa com até 25 funcionários. A intenção do iptables é fazer nat, prioridade de pacotes e bloqueio de portas. Os bloqueios a sites vou deixar com o Squid mais pra frente.
Abraços!
#!/bin/sh #Script Firewall. #Desenvolvido por Tiago Cesar de Lima com ajuda de vários artigos do VOL echo "Bom dia Sentinela. E hora de Acordar" sleep 1 echo "Limpa todas as regras" sleep 1 iptables -t filter -F iptables -t nat -F iptables -t mangle -F echo "Exclui chains criadas" sleep 1 iptables -t filter -X iptables -t nat -X iptables -t mangle -X echo "Zera contador" sleep 1 iptables -t filter -Z iptables -t nat -Z iptables -t mangle -Z echo "Ativando trafego loopback" sleep 1 iptables -A INPUT -i lo -j ACCEPT echo "Ativando módulo NAT" sleep 1 /sbin/modprobe iptable_nat echo "Realizando NAT" echo "Todo pacote transmitido pela rede eth0 sairá com um mesmo IP" sleep 1 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo "Ativando IP Forward (Redirecionamento)" echo 1 > /proc/sys/net/ipv4/ip_forward sleep 1 echo "Prevencao a ataques diversos" echo "Ligando proteção para SYN flood. Deve ser feita em todos os servidores" sleep 1 echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo "Prevencaoo a Ping da Morte" sleep 1 iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT echo "Desabilitando resposta de Ping pela internet" sleep 1 iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j DROP iptables -A FORWARD -i eth0 -p icmp --icmp-type echo-request -j DROP echo "Descartando pacotes suspeitos ou danificados" sleep 1 #iptables -A FORWARD -m unclean -j DROP #iptables -A INPUT -m unclean -j DROP #Essa fica para os especialistas me ajudarem!! echo "Scanners Ocultos (Shealt Scan)" sleep 1 iptables -A INPUT -p tcp --tcp-flags SYN, ACK -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p tcp --tcp-flags SYN, ACK -j DROP echo "Toda requisição que vier da rede interna sera aceita" sleep 1 iptables -A INPUT -i eth1 -p tcp --syn -s 192.168.0.0/24 -j ACCEPT echo "Toda requisição que vier da rede wireless será aceita" sleep 1 iptables -A INPUT -i eth2 -p tcp --syn -s 192.168.1.0/24 -j ACCEPT echo "Não-roteamento de pacotes da interface eth2 (Wireless) para eth1 (Rede Interna)" sleep 1 # Rede 192.168.0.0 --> Rede Fisica (Cabeada) # Rede 192.168.1.0 --> Rede Wireless iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j REJECT iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j REJECT echo 'OK, você conseguiu fazer o NAT, mas ainda precisa' echo "liberar algumas coisinhas certo? " sleep 1 echo "Liberando portas de acesso:" sleep 1 echo "Porta SSH (39800) e gravando logs" sleep 1 # Roteador de Casa iptables -A INPUT -p tcp --dport 39800 -m-mac --mac-source xx:xx:xx:xx:xx:xx -j LOG --log-level 6 --log-prefix "ssh_h" iptables -A INPUT -p tcp --dport 39800 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT echo "Placa de rede eth0" sleep 1 iptables -A INPUT -p tcp --dport 39800 -m mac --mac-source xx:xx:xx:xx:xx:xx -j LOG --log-level 6 --log-prefix "ssh_e" iptables -A INPUT -p tcp --dport 39800 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT echo "Placa de Rede Wireless" sleep 1 iptables -A INPUT -p tcp --dport 39800 -m mac --mac-source xx:xx:xx:xx:xx:xx -j LOG --log-level 6 --log-prefix "ssh_w" iptables -A INPUT -p tcp --dport 39800 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT echo "Porta 80 (http) e 443 (https)" sleep 1 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT echo "NAT para Squid" sleep 1 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3128 echo "Porta 21 (ftp)" sleep 1 iptables -A INPUT -p tcp --dport 21 -j ACCEPT echo "Liberando Porta 25 (smtp) e fazendo NAT para provedor de e-mail (porta smtp padrão 26)" sleep 1 iptables -A INPUT -p tcp --dport 25 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 26 echo "Porta 110 (pop)" sleep 1 iptables -A INPUT -p tcp --dport 110 -j ACCEPT #Liberando Porta RDP (3989) e fazendo Redirecionamento do Protocolo para o Host #iptables -t nat -A PREROUTING -p tcp --dport 39897 -i eth0 -m mac --mac-source xx:xx:xx:xx:xx:xx -j DNAT --to-destination 192.168.0.302:3989 #iptables -t nat -A PREROUTING -p tcp --dport 39898 -i eth0 -m mac --mac-source xx:xx:xx:xx:xx:xx -j DNAT --to-destination 192.168.0.301:3989 #iptables -t nat -A PREROUTING -p tcp --dport 39899 -i eth0 -m mac --mac-source xx:xx:xx:xx:xx:xx -j DNAT --to-destination 192.168.0.300:3989 ####Prioridade de serviços #### echo "Muito bem, agora vamos dar prioridade aos servicos, afinal de" echo "contas, e muito mais importante falar com a mamae no telefone do" echo "que ficar baixando filminhos nao e ?" sleep 1 echo "Definindo Espera Mínima a pacotes VoiP --> preciso pegar as configurações" sleep 1 iptables -t mangle -A PREROUTING -d meuprovedorvoip.com.br -j ACCEPT iptables -t mangle -A FORWARD -d meuprovedorvoip.com.br -j ACCEPT iptables -t mangle -A PREROUTING -d meuprovedorvoip.com.br -j TOS --set-tos 16 iptables -t mangle -A FORWARD -d meuprovedorvoip.com.br -j TOS --set-tos 16 iptables -t mangle -A PREROUTING -p udp --dport xxxx -j ACCEPT iptables -t mangle -A FORWARD -p udp --dport xxxx -j ACCEPT iptables -t mangle -A PREROUTING -p udp --sport xxxx -j TOS --set-tos 16 iptables -t mangle -A FORWARD -p udp --sport xxxx -j TOS --set-tos 16 iptables -t mangle -A PREROUTING -p udp --sport xxxx -j ACCEPT iptables -t mangle -A FORWARD -p udp --sport xxxx -j ACCEPT iptables -t mangle -A PREROUTING -p udp --dport xxxx -j TOS --set-tos 16 iptables -t mangle -A FORWARD -p udp --dport xxxx -j TOS --set-tos 16 echo "Definindo Maximo Processamento a pacotes http e https" sleep 1 iptables -t mangle -A PREROUTING -p tcp --sport 80 -j TOS --set-tos 8 iptables -t mangle -A FORWARD -p tcp --sport 80 -j TOS --set-tos 8 iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TOS --set-tos 8 iptables -t mangle -A FORWARD -p tcp --dport 80 -j TOS --set-tos 8 iptables -t mangle -A PREROUTING -p tcp --sport 443 -j TOS --set-tos 8 iptables -t mangle -A FORWARD -p tcp --sport 443 -j TOS --set-tos 8 iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TOS --set-tos 8 iptables -t mangle -A FORWARD -p tcp --dport 443 -j TOS --set-tos 8 echo "Definindo Maxima Confiança a e-mails (SMTP e POP3)" sleep 1 iptables -t mangle -A PREROUTING -p tcp --dport 110 -j TOS --set-tos 4 iptables -t mangle -A FORWARD -p tcp --dport 110 -j TOS --set-tos 4 iptables -t mangle -A PREROUTING -p tcp --sport 110 -j TOS --set-tos 4 iptables -t mangle -A FORWARD -p tcp --sport 110 -j TOS --set-tos 4 iptables -t mangle -A PREROUTING -p tcp --sport 26 -j TOS --set-tos 4 iptables -t mangle -A FORWARD -p tcp --sport 26 -j TOS --set-tos 4 iptables -t mangle -A PREROUTING -p tcp --dport 26 -j TOS --set-tos 4 iptables -t mangle -A FORWARD -p tcp --dport 26 -j TOS --set-tos 4 echo "Definindo Custo Minimo a downloads" sleep 1 iptables -t mangle -A PREROUTING -p tcp --sport 21 -j TOS --set-tos 2 iptables -t mangle -A FORWARD -p tcp --sport 21 -j TOS --set-tos 2 iptables -t mangle -A PREROUTING -p tcp --dport 21 -j TOS --set-tos 2 iptables -t mangle -A FORWARD -p tcp --dport 21 -j TOS --set-tos 2 echo "Bloqueando tudo" iptables -A INPUT -j DROP iptables -A FORWARD -j DROP echo "-------->> Sentinela Ativo: Iptables On <<--------" sleep 2
Atualizar status do Twitter pelo terminal
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta