iptables (rc.firewall)
firewall completo
Categoria: Segurança
Software: iptables
[ Hits: 13.400 ]
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
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
instalar versões linux em um tablet (5)
Não compila (ou roda) os exemplos [RESOLVIDO] (7)
Meus HDs não aparecem mais no boot da placa mãe (2)
Abrir arquivos em lotes no terminal usando o LibreOffice (0)