Iptables com nat, prioridade de pacotes e bloqueio de portas
Publicado por tiago cesar de lima (última atualização em 08/07/2010)
[ Hits: 13.108 ]
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
Criador de pacotes para o Slackware
Meu script em shell entendo chamadas ao sistema do mesmo
Script para visualizar logs do squid
Calcular tamanho ideal da memória SWAP
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Alguém já usou o framework Avalonia para desenvolver interfaces de usu... (4)
Ajuda Pra Melhoria do NFTABLES. (8)
Sinto uma leve lentidão ao arrastar, miniminizar e restauras as janela... (2)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (7)