Iptables (firewall-up.sh)
Configuração para redes corporativas - firewall iptables com NAT. Este conf está muito bem documentado, foram 6 meses de estudos para chegar ao nível que está.
Este firewall serve para conectar uma rede local com servidor Linux na Internet, basta configurar as variáveis e executar o script. É necessário um bom conhecimento antes de sair usando este script, pois o mesmo foi elaborado pensando exatamente em segurança. Nenhuma porta foi liberada, aqui só se aceita INPUT na porta 22 (SSH), o resto é descartado, então cuidado ao usar.
Bom, acredito que para fins de estudo este script esteja excelente.
Este firewall serve para conectar uma rede local com servidor Linux na Internet, basta configurar as variáveis e executar o script. É necessário um bom conhecimento antes de sair usando este script, pois o mesmo foi elaborado pensando exatamente em segurança. Nenhuma porta foi liberada, aqui só se aceita INPUT na porta 22 (SSH), o resto é descartado, então cuidado ao usar.
Bom, acredito que para fins de estudo este script esteja excelente.
#!/bin/bash #======================= *** ======================== # Autor: Fabricio Beltram # Data de Criacao: 16/11/2006 # #==================================================== # Script: Firewall - iptables # #==================================================== # Descricao: Este script ira limpar todas as regras #de firewall e subir as novas regras de acordo com #as regras do script - este script possui a funcao #de flush que e' a limpeza das regras e faz um full #NAT como e' conhecido por ai. O script esta bem #comentado para facilitar eventuais consultas e al- #teracoes #==================================================== # Este script esta sobre licenca GPL pode ser alterado #e distribuido livremente. #==================================================== # Versao: 1.0 #==================================================== #Alteracoes Realizadas: #Altor: # ##################################################### #MODPROBE # Carrega os modulos de iptables + NAT no Kernel # Estas linhas nao sao necessarias se vc ja tem os # modulos do kernel compilado. # modprobe ip_nat_ftp modprobe iptable_nat # ============================ # === Declaracao das variaveis # ============================ # Definir a variavel INTRA com a interface que esta ligada com a rede interna/local # Ex # INTRA=eth0 INTRA=eth1 # Definir a variavel INTER com a interface que esta ligada com a rede externa (INTERNET) # Ex # INTER=eth1 # INTER=ppp0 INTER=eth0 # Definir a variavel LAN com o range de IP utilizado por sua rede local, nao esquecer mascara da rede # Ex # LAN=192.168.1.0/24 LAN=10.0.0.0/24 # ======================= *** ======================== # Inicia as regras # Verifica se o parametro = flush # Se igual, entao, limpa todas as regras e seta as politicas padroes para ACCEPT # e tambem deixa a rede como full nat. "Sem Bloqueios" if [ "$1" = "flush" ]; then echo "Limpando as regras, setando as Politicas padroes..." # Seta as politicas padroes para accept iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -t nat -F iptables -X iptables -Z # Faz o masquaramento completo da rede iptables -t nat -A POSTROUTING -o $INTER -j MASQUERADE echo "Firewall - Desativado... Mascaramento completo." # ELSE - Se o parametro != flush else echo "Firewall iptables starting..." # Seta as politicas padroes para DROP Bloqueia tudo que nao for OUTPUT iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -F iptables -t nat -F iptables -X iptables -Z # ========================= *** ====================== # Inicio das regras que ja defino como padrao # Liberacao do loopback iptables -A INPUT -i lo -j ACCEPT # ======== *** ========= # INTERNET ---> FIREWALL # Setaremos as portas q seram acessiveis via internet # SSH - Para mim impressindivel Obs: comente esta linha para nao aceitar ssh iptables -A INPUT -p tcp --dport 22 -j ACCEPT # PING - Se nao quiser ser alvo de ping comente as 2 linhas abaixo # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT # iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # HTTP/HTTPS - Apache e outros webservers # iptables -A INPUT -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Por padrao eu so aceito conecxoes na porta 22 que e' SSH # obs. nao deixe ssh direto como root. para isso altere o arquivo sshd_conf # set a linha PermitRootLogin no # ======== *** ========= # LAN ---> FIREWALL # Setaremos as portas que poderemos acessar via rede local no servidor # SQUID - Utilizo servidor proxy squid na porta 3128 iptables -A INPUT -p tcp -s $LAN --dport 3128 -j ACCEPT # NETBIOS - Estas 3 portas sao usadas pelo protocolo de compartilhamento # de arquivos em redes Microsoft. Cada uma das portas tem uma funcao especial # (nome, datagrama e sessao) mas e' necessario que as 3 estejam abertas no # firewall para que a visualizacoes dos compartilhamentos e acesso aos # arquivos funcione corretamente iptables -A INPUT -p tcp -s $LAN --dport 137:139 -j ACCEPT iptables -A INPUT -p udp -s $LAN --dport 137:139 -j ACCEPT # DNS - Libera a resolucao de nomes iptables -A INPUT -p tcp -s $LAN --dport 53 -j ACCEPT iptables -A INPUT -p udp -s $LAN --dport 53 -j ACCEPT #======== *** ========= # LAN ---> INTERNET # Setaremos as portas comuns que devem ser acessadas da rede local para a internet # Portas comuns que devem ser acessadas na Internet # FTP-DATA FTP SSH iptables -A FORWARD -i $INTRA -p tcp --dport 20:22 -j ACCEPT # SMTP iptables -A FORWARD -i $INTRA -p tcp --dport 25 -j ACCEPT # POP3 iptables -A FORWARD -i $INTRA -p tcp --dport 110 -j ACCEPT # DNS tcp/udp iptables -A FORWARD -i $INTRA -p udp --dport 53 -j ACCEPT iptables -A FORWARD -i $INTRA -p tcp --dport 53 -j ACCEPT # HTTP/HTTPS iptables -A FORWARD -i $INTRA -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i $INTRA -p tcp --dport 443 -j ACCEPT # ========= *** ======= # Faz o mascaramento da rede local iptables -t nat -A POSTROUTING -o $INTER -j MASQUERADE # Statefull inspection iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # FIM - Ate aqui nos temos um firewall seguro estavel e confiavel #================================= *** ===================================== # # Apartir desta linha chamo meus scripts de excecoes. # Ex: Proxy Transparent, Regra acesso ao TED, Regra acesso ao CONECTIVIDADE SOCIAL, etc... # # obs. Aqui em regras especiais voce pode configurar algum tipo de DNAT ou FORWARD que # sua empresa ira precisar. E' so' criar os scripts e chamalos abaixo # que ele starta junto com o firewall. echo "Carregando as regras especiais utilizadas por Empresa 1." # Coloque aqui as suas regras especiais # Start fw-squid.sh #/root/bin/fw-squid.sh # Start fw-infib.sh #/root/bin/fw-infib.sh echo "Firewall - running - OK !!" # Fim do Script e do IF fi
Parabens.