Linux (rc.firewall)
Firewall com IPTables
Categoria: Segurança
Software: Linux
[ Hits: 7.858 ]
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
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
xubuntu sem sons de eventos (3)
Erro ao iniciar serviço samba4 como novo dc em um ambiente com ad (9)
Dificuldade para renderizar vídeo no kdenlive (5)