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.940 ]
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
Acesse seus hosts pelo VNCViewer
Colorindo o Shell - Código Puro
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Pegar a ultima ocorrencia viva (1)
Pq me aparece isso quando fui atualizar o Ubuntu 24.10 no terminal? (1)
como coloco para instalar com esse erro. (13)
Alguém sabe de documentos de texto e /ou vídeo aulas de certificações ... (1)