iptables (rc.firewall)
firewall completo
Categoria: Segurança
Software: iptables
[ Hits: 13.357 ]
Por: paulo cabral da cunha
Este é meu script de firewall, estou tentando melhorá-lo..
#!/bin/sh echo "####################ATIVANDO IPTABLES#######################" ### Passo 1: Limpando as regras ### iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -F POSTROUTING -t nat iptables -F PREROUTING -t nat iptables -F -t nat echo "Limpando as regras ..................................[ OK ]" # Definindo a Politica Default das Cadeias iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT echo "Politica Default das Cadeias ........................[ OK ]" ### Passo 2: Desabilitar o trafego IP entre as placas de rede ### echo "0" > /proc/sys/net/ipv4/ip_forward echo "Desabilitar o trafego IP entre as placas ............[ OK ]" # Configurando a Protecao anti-spoofing echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter #for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do # echo "1" > $spoofing #done echo "Protecao anti-spoofing ..............................[ OK ]" ###########setando protecao contra ataques echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses for i in /proc/sys/net/ipv4/conf/*; do echo 0 >$i/accept_redirects echo 0 >$i/accept_source_route echo 1 >$i/log_martians echo 1 >$i/rp_filter; done echo "Protecao contra ataques .............................[ OK ]" # Impedimos que um atacante possa maliciosamente alterar alguma rota echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo "Impedimos alterar alguma rota .......................[ OK ]" # Utilizado em diversos ataques, isso possibilita que o atacante determine o "caminho" que seu # pacote vai percorrer (roteadores) ate seu destino. Junto com spoof, isso se torna muito perigoso. echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route echo "Impossibilita que o atacante determine o "caminho" ....[ OK ]" # Protecao contra responses bogus echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo "Protecao contra responses bogus .....................[ OK ]" # Protecao contra ataques de syn flood (inicio da conexao TCP). Tenta conter ataques de DoS. echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo "Protecao contra ataques de syn ......................[ OK ]" ### Passo 3: Carregando os modulos do iptables ### # Ativa modulos # ------------------------------------------------------- /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE #/sbin/modprobe ipt_GRE echo "Carregando os modulos ...............................[ OK ]" ### Passo 4: Agora, vamos definir o que pode passar e o que nao ### # Cadeia de Entrada ##ips que nao passam pelo proxy iptables -A FORWARD -p tcp -s 192.168.1.34 -j ACCEPT iptables -A INPUT -p tcp -s 192.168.1.90 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.90 -j ACCEPT iptables -A INPUT -p tcp -s 192.168.1.2 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.2 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.32 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.28 -j ACCEPT #iptables -A INPUT -p tcp --dport 110 -j ACCEPT #iptables -A INPUT -p tcp --dport 25 -j ACCEPT #iptables -A FORWARD -p tcp --dport 110 -j ACCEPT #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT #iptables -A FORWARD -p tcp --dport 465 -j ACCEPT #portas para msn #fulano iptables -A FORWARD -p tcp -s 192.168.1.90 --dport 1863 -j ACCEPT #beltrano iptables -A FORWARD -p tcp -s 192.168.1.35 --dport 1863 -j ACCEPT # porta para contabil #DCTF iptables -A FORWARD -p tcp --dport 3456 -j ACCEPT #DPI iptables -A FORWARD -p tcp --dport 24001 -j ACCEPT #ted # iptables -A INPUT -p tcp --dport 8017 -j ACCEPT iptables -A FORWARD -p tcp --dport 8017 -j ACCEPT echo "Regras comtabilidade.................................[ OK ]" #dp #sefip iptables -A FORWARD -p tcp --dport 2004 -j ACCEPT #iptables -A INPUT -p tcp --dport 2631 -j ACCEPT iptables -A FORWARD -p tcp --dport 2631 -j ACCEPT iptables -A FORWARD -p tcp --dport 1494 -j ACCEPT iptables -A FORWARD -p tcp --dport 5017 -j ACCEPT iptables -A FORWARD -p tcp -s 192.168.1.49 --dport 9090 -j ACCEPT ###conectividde social #iptables -t nat -A PREROUTING -i eth1 -p tcp -d ! 200.201.174.0/24 --dport 80 -j REDIRECT --to-port 8080 echo "Regras DP ...........................................[ OK ]" #cadastro iptables -A FORWARD -p tcp --dport 443 -j ACCEPT # datasiga iptables -A FORWARD -p tcp --dport 20650 -j ACCEPT iptables -A FORWARD -p tcp --dport 10650 -j ACCEPT echo "Regras Datasiga .....................................[ OK ]" # Porta para Cadastro iptables -A FORWARD -p tcp --dport 25777 -j ACCEPT iptables -A FORWARD -p tcp --dport 5432 -j ACCEPT #vnc iptables -A FORWARD -p tcp --dport 5700 -j ACCEPT iptables -A INPUT -p tcp --dport 5700 -j ACCEPT echo "Regras Cadastro .....................................[ OK ]" #remote iptables -A FORWARD -p tcp --dport 4599 -j ACCEPT iptables -A INPUT -p tcp --dport 4599 -j ACCEPT echo "Regras remote .......................................[ OK ]" #terminal server iptables -A INPUT -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT echo "Regras terminal serv ................................[ OK ]" ###### # Redireciona porta 80 para 3128 (squid) #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # PORTA 3128 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 3128 -j ACCEPT # PORTA 110 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -i eth0 -p udp --dport 110 -j ACCEPT # PORTA 25 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT # PORTA 443 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT # PORTA 21 - ACEITA PARA A REDE LOCAL #iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --dport 21 -j ACCEPT # PORTA 20 - ACEITA PARA A REDE LOCAL #iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A FORWARD -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --syn --dport 22 -m recent --name sshattack --set iptables -A INPUT -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: ' iptables -A INPUT -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset iptables -A FORWARD -p tcp --syn --dport 22 -m recent --name sshattack --set iptables -A FORWARD -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j LOG --log-prefix 'SSH REJECT: ' iptables -A FORWARD -p tcp --dport 22 --syn -m recent --name sshattack --rcheck --seconds 60 --hitcount 3 -j REJECT --reject-with tcp-reset ###### # PORTA 3128 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 3128 -j ACCEPT # Redireciona porta 80 para 3128 (squid) #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # PORTA 53 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -i eth0 -p udp --dport 53 -j ACCEPT # PORTA 110 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -i eth0 -p udp --dport 110 -j ACCEPT # PORTA 25 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT # PORTA 443 - ACEITA PARA A REDE LOCAL iptables -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT # identd iptables -A INPUT -p tcp --dport 113 -j ACCEPT iptables -A INPUT -p udp --dport 113 -j ACCEPT # https iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p udp --dport 443 -j ACCEPT # PORTA 21 - ACEITA PARA A REDE LOCAL #iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --dport 21 -j ACCEPT # PORTA 20 - ACEITA PARA A REDE LOCAL #iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A FORWARD -p tcp --dport 20 -j ACCEPT #bloqueia qualquer tentativa de nova conexao de fora para esta maquina iptables -A INPUT -i eth1 -m state --state ! ESTABLISHED,RELATED -j LOG --log-level 6 --log-prefix "FIREWALL entrada " iptables -A INPUT -i eth1 -m state --state ! ESTABLISHED,RELATED -j DROP #no iptables, temos de dizer quais sockets sao validos em uma conexao iptables -A INPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT echo "Cadeia de Entrada ...................................[ OK ]" ################################ # Cadeia de Reenvio (FORWARD). # Primeiro, ativar o mascaramento (nat). iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE echo "Ativando o mascaramento .............................[ OK ]" # Agora dizemos quem e o que podem acessar externamente # O controle do acesso a rede externa e feito na cadeia "FORWARD" iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT echo "Ativando o acesso ftp.. .............................[ OK ]" ################### ###BLOQUEANDO TODAS AS SAIDAS E PORTAS iptables -A INPUT -p all -j DROP iptables -A FORWARD -p all -j DROP echo "Rejeitando saida e entrada ..........................[ OK ]" ######################## # No iptables, temos de dizer quais sockets sao validos em uma conexao iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT echo "Quais sockets sao validos ...........................[ OK ]" ################################################# # Tabela FILTER ################################################# # Proteção contra tronjans # ------------------------------------------------------- iptables -A INPUT -p TCP -i eth1 --dport 666 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 4000 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 6000 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 6006 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 16660 -j DROP # Proteção contra trinoo # ------------------------------------------------------- iptables -A INPUT -p TCP -i eth1 --dport 27444 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 27665 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 31335 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 34555 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 35555 -j DROP echo "Proteção contra trinoo ............................. [ OK ]" # Protecao contra acesso externo squid # ------------------------------------------------------- iptables -A INPUT -p TCP -i eth1 --dport 3128 -j DROP iptables -A INPUT -p TCP -i eth1 --dport 8080 -j DROP echo "Proteção contra squid externo....................... [ OK ]" # Protecao contra telnet # ------------------------------------------------------- iptables -A INPUT -p TCP -i eth1 --dport telnet -j DROP echo "Proteção contra telnet ....................... [ OK ]" # Dropa pacotes TCP indesejáis # ------------------------------------------------------- iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP # Dropa pacotes mal formados # ------------------------------------------------------- #iptables -A INPUT -i eth1 -m unclean -j DROP # Proteç contra worms # ------------------------------------------------------- iptables -A FORWARD -p tcp --dport 135 -i eth1 -j REJECT # Proteç contra syn-flood # ------------------------------------------------------- iptables -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT # Proteç contra ping da morte # ------------------------------------------------------- iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT echo "Caregando tabela filter ............................ [ OK ]" #Allow ALL other forwarding going out iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT ################################################# # FIM DA Tabela FILTER ################################################# # Proteção contra port scanners # ------------------------------------------------------- #iptables -N SCANNER iptables -A SCANNER -m limit --limit 15/m -j LOG --log-prefix "FIREWALL: port scanner: " iptables -A SCANNER -j DROP iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags ALL NONE -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags ALL ALL -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags ALL FIN,SYN -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -i eth1 -j SCANNER iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -i eth1 -j SCANNER echo "Scaner de Portas ....................................[ OK ]" # Loga tentativa de acesso a determinadas portas # ------------------------------------------------------- iptables -A INPUT -p tcp --dport 22 -i eth1 -j LOG --log-prefix "FIREWALL: ssh: " iptables -A INPUT -p tcp --dport 21 -i eth1 -j LOG --log-prefix "FIREWALL: ftp: " iptables -A INPUT -p tcp --dport 23 -i eth1 -j LOG --log-prefix "FIREWALL: telnet: " iptables -A INPUT -p tcp --dport 25 -i eth1 -j LOG --log-prefix "FIREWALL: smtp: " iptables -A INPUT -p tcp --dport 80 -i eth1 -j LOG --log-prefix "FIREWALL: http: " iptables -A INPUT -p tcp --dport 110 -i eth1 -j LOG --log-prefix "FIREWALL: pop3: " iptables -A INPUT -p udp --dport 111 -i eth1 -j LOG --log-prefix "FIREWALL: rpc: " iptables -A INPUT -p tcp --dport 113 -i eth1 -j LOG --log-prefix "FIREWALL: identd: " iptables -A INPUT -p tcp --dport 137:139 -i eth1 -jLOG --log-prefix "FIREWALL: samba: " iptables -A INPUT -p udp --dport 137:139 -i eth1 -j LOG --log-prefix "FIREWALL: samba: " iptables -A INPUT -p tcp --dport 161:162 -i eth1 -j LOG --log-prefix "FIREWALL: snmp: " iptables -A INPUT -p tcp --dport 6667:6668 -i eth1 -j LOG --log-prefix "FIREWALL: irc: " iptables -A INPUT -p tcp --dport 3128 -i eth1 -j LOG --log-prefix "FIREWALL: squid: " echo "Negando portas indesejadas ..........................[ OK ]" # Libera acesso externo a determinadas portas ##Algumas portas devem ser negadas. iptables -A INPUT -p tcp --dport 1433 -j DROP iptables -A INPUT -p tcp --dport 6670 -j DROP iptables -A INPUT -p tcp --dport 6711 -j DROP iptables -A INPUT -p tcp --dport 6712 -j DROP iptables -A INPUT -p tcp --dport 6713 -j DROP iptables -A INPUT -p tcp --dport 12345 -j DROP iptables -A INPUT -p tcp --dport 12346 -j DROP iptables -A INPUT -p tcp --dport 20034 -j DROP iptables -A INPUT -p tcp --dport 31337 -j DROP iptables -A INPUT -p tcp --dport 6000 -j DROP echo "Negando portas invalidas ............................[ OK ]" #Traceroutes caindo iptables -A INPUT -p udp --dport 33434:33523 -j DROP iptables -A INPUT -p tcp --dport 113 -j REJECT iptables -A INPUT -p igmp -j REJECT iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -p tcp --dport 443 -j REJECT echo "Rejeitando lixo :....................................[ OK ]" # Finalmente: Habilitando o trafego IP, entre as Interfaces de rede echo "1" > /proc/sys/net/ipv4/ip_forward echo "Habilitar o trafego IP entre as placas: .............[ OK ]" echo "##################FIM DE REGRAS IPTABLES####################" exit 0 Lembro que peguei ele a uns 2 anos atraz não lembro da fonte mas agora depois de varias mudanças esta ai. o eth0 = rede interna eth1=internet
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Arch Linux - Guia para Iniciantes (2)
Problemas ao instalar o PHP (11)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)