Linux (rc.firewall)
Firewall com IPTables
Categoria: Segurança
Software: Linux
[ Hits: 7.855 ]
Por: José Wiltomar Duarte
Esse é um script de firewall com uso de iptables e mascaramento de conexão.
#!/bin/sh # Script de Firewall # Wiltomar Duarte # # ALTERACOES: # # DATA RESPONSAVEL MOTIVO # 03/07/03 Wiltomar Habilitacao de transparent proxy para as # portas 20, 21 e 80 # 03/07/03 Wiltomar Mascarading da porta 1024 para a maquina # interna 192.168.1.100 VERSAO="v. 2.02" ULTALT="Julho 2003" echo "Carregando Firewall $VERSAO - Ultima Atualizacao $ULTALT" # Localizacao do utilitario iptables IPTABLES=/sbin/iptables # Definicao de interfaces, redes e enderecos # Rede EXTERNA EXTIF="eth0" EXTIP="200.xxx.xxx.xxx" EXTNET="200.xxx.xxx.xxx" # Rede INTERNA INTIF="eth1" INTIP="192.168.1.1" INTNET="192.168.1.0" # Carga dos Modulos rmmod ipchains modprobe ip_tables modprobe iptable_filter modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc modprobe iptable_nat modprobe ip_nat_ftp # Habilitando IP forwarding echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Reiniciando cadeias (zerando as politicas) $IPTABLES -P INPUT ACCEPT $IPTABLES -F INPUT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F # Definicao do mascaramento $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $IPTABLES -A FORWARD -j LOG $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE # Redirecionando porta Advanced Protheus $IPTABLES -t nat -A PREROUTING -t nat -p tcp -d $EXTIP --dport 3000 -j DNAT --to 192.168.1.100:1024 $IPTABLES -t nat -A PREROUTING -t nat -p tcp -d $EXTIP --dport 3000 -j LOG # Transparent proxy $IPTABLES -t nat -A PREROUTING -p tcp -s $INTNET/24 -d 0.0.0.0/0 --dport 80 -j REDIRECT --to-ports 3128 #$IPTABLES -t nat -A PREROUTING -p tcp -s $INTNET/24 -d 0.0.0.0/0 --dport 80 -j REDIRECT --to-ports 3128 #$IPTABLES -t nat -A PREROUTING -p tcp -s $INTNET/16 -d 0.0.0.0/0 --dport 21 -j REDIRECT --to-ports 3128 #$IPTABLES -t nat -A PREROUTING -p tcp -s $INTNET/16 -d 0.0.0.0/0 --dport 20 -j REDIRECT --to-ports 3128 # Firewall de fato # Protecao contra TCP syncookies echo "1" > /proc/sys/net/ipv4/tcp_syncookies # Verificacao do source address for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > $f done # Desabilitando a passagem de pacotes ICMP REDIRECT for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo "0" > $f done # Desabilitando pacotes source routed for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo "0" > $f done # Regra contra pacotres danificados ou suspeitos $IPTABLES -A FORWARD -m unclean -j DROP # Regra contra PING $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -j DROP # Regra contra Ping of Death $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Regra contra ataques Syn-flood $IPTABLES -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT # Regra contra Scanners Avancados ( NMAP ) $IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j ACCEPT $IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN -m limit --limit 1/s -j LOG # Regra para padroes nao roteaveis $IPTABLES -A INPUT -i $EXTIF -s 255.255.255.255/32 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 127.0.0.0/8 -j DROP # Regra para enderecos privados (RFC1918) $IPTABLES -A INPUT -i $EXTIF -s 10.0.0.0/8 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 172.16.0.0/16 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 192.168.0.0/24 -j DROP # Regra para enderecos reservados (multicast) $IPTABLES -A INPUT -i $EXTIF -s 240.0.0.0/5 -j DROP # Regra para proteger a rede interna de IP spoofing $IPTABLES -A INPUT -i $EXTIF -s 192.168.0.0/16 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 192.168.0.0/16 -j LOG # bloquear conexoes telnet externas #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 23 -j DROP #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 23 -j LOG # Bloquear conexoes SSH externas (temporariamente desativado, vide abaixo) $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 22 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 22 -j LOG # Bloquear conexoes FTP externas $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 21 -j DROP # Bloquear conexoes internas e externas NetBIOS do Windows NT 4.0 $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 138:139 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 138:139 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 138:139 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 138:139 -j DROP # Bloquear conexoes internas ao FTP (a passagem deve ser feita atraves do proxy) #$IPTABLES -A INPUT -i $INTIF -s $INTNET/24 -d 0.0.0.0/0 -p tcp --dport 20:21 -j DROP #$IPTABLES -A OUTPUT -o $EXTIF -s $INTNET/24 -d 0.0.0.0/0 -p tcp --dport 20:21 -j DROP #$IPTABLES -A INPUT -i $INTIF -s $INTNET/24 -d 0.0.0.0/0 -p udp --dport 20:21 -j DROP #$IPTABLES -A OUTPUT -o $EXTIF -s $INTNET/24 -d 0.0.0.0/0 -p udp --dport 20:21 -j DROP # Bloquear conexoes internas e externas ao NetBIOS do Windows 2000 $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 445 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 445 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 445 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 445 -j DROP # Bloquear conexoes internas e externas de rlogon $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 512:514 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 512:514 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 512:514 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 512:514 -j DROP # Bloquear conexoes para portmap/rpcbind $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 111 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 111 -j DROP # Bloquear conexoes ao NFS (porta default) $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 2049 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 2049 -j DROP # Bloquear conexoes ao lockd $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 4045 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 4045 -j DROP # Bloquear conexoes ao X $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET/16 -p tcp --dport 6000:6255 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s $INTNET/16 -d 0.0.0.0/0 -p tcp --dport 6000:6255 -j DROP #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET2/16 -p tcp --dport 6000:6255 -j DROP #$IPTABLES -A OUTPUT -o $EXTIF -s $INTNET2/16 -d 0.0.0.0/0 -p tcp --dport 6000:6255 -j DROP # Bloquear DNS queries para qualquer um, com excessao do servidor DNS remoto # (Firewall) $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d ! $EXTIP/32 -p udp --dport 53 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s ! $EXTIP/32 -d 0.0.0.0/0 -p udp --dport 53 -j DROP # Permitir DNS queries de saida do firewall $IPTABLES -A OUTPUT -o $EXTIF -s $INTIP/32 -d 0.0.0.0/0 -p udp --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTIP/32 -p udp --sport 53 -j ACCEPT #$IPTABLES -A OUTPUT -o $EXTIF -s $INTIP2/32 -d 0.0.0.0/0 -p udp --dport 53 -j ACCEPT #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTIP2/32 -p udp --sport 53 -j ACCEPT # Bloquear acesso ao LDAP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET/16 -p tcp --dport 389 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET/16 -p udp --dport 389 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s $INTNET/16 -d 0.0.0.0/0 -p tcp --dport 389 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s $INTNET/16 -d 0.0.0.0/0 -p udp --dport 389 -j DROP #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET2/16 -p tcp --dport 389 -j DROP #$IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d $INTNET2/16 -p udp --dport 389 -j DROP #$IPTABLES -A OUTPUT -o $EXTIF -s $INTNET2/16 -d 0.0.0.0/0 -p tcp --dport 389 -j DROP #$IPTABLES -A OUTPUT -o $EXTIF -s $INTNET2/16 -d 0.0.0.0/0 -p udp --dport 389 -j DROP # Bloquear trafego POP3 e IMAP4 para todas as maquinas com excecao do NATI #$IPTABLES -A INPUT -i $EXTIF -s ! $NATI/32 -d 0.0.0.0/0 -p tcp --dport 109:110 -j DROP #$IPTABLES -A INPUT -i $EXTIF -s ! $NATI/32 -d 0.0.0.0/0 -p tcp --dport 143 -j DROP # Bloquear servicos menores internos e externos $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 0:19 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 0:19 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 0:19 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 0:19 -j DROP # Bloquear acessos internos e externos ao TFTP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 69 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 69 -j DROP # Bloquear requisitos de finger internos e externos $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 79 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 79 -j DROP # Bloquear requisitos externos de NNTP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 119 -j DROP # Bloquear requisitos internos e externos ao NTP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 123 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 123 -j DROP # Bloquear requisitos internos e externos ao LPD $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 515 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 515 -j DROP # Bloquear acesso ao syslog de dentro e de fora $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 514 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 514 -j DROP # Bloquear requisitos de pooling SNMP internos e externos $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 161:162 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 161:162 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 161:162 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 161:162 -j DROP # Bloquear mensagens de BGP route internas e externas $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 179 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 179 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 179 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 179 -j DROP # Bloquear conexoes SOCKS internas e externas $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 1080 -j DROP $IPTABLES -A INPUT -i $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 1080 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 1080 -j DROP $IPTABLES -A OUTPUT -o $EXTIF -s 0.0.0.0/0 -d 0.0.0.0/0 -p udp --dport 1080 -j DROP
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta