De: Erik Costa Para: linux-br@bazar.conectiva.com.br Assunto: Re: (linux-br) Receita de bolo Data: 28 Jan 2003 10:25:15 -0200 -- Bom eu nao lembro onde eu peguei, mas vou colocar em um site temporario pra voce pegar www.hpcerta.hpg.com.br/linux/script-firewall.sh gui.gs@petrobras.com.br escreveu: Erik, Vi na lista você falando de uma receita de bolo com um script para ipchains e gostaria que você postasse o link onde você encontrou o script . renomeie este arquivo para scipt-firewall.sh e torne-o executavel. #apague todas as linhas cima #!/bin/sh # ------------------------------------------------------------------------------ VERSAO="1.02" ULTALT="Janeiro 2001" # IPCHAINS FIREWALL por Carlos Fernando Scheidecker Antunes # e-mail nando@antunes.eti.br # # Esse firewall possibilita conectividade das suas redes internas 1 e 2 para # a internet e vice versa com varias medidas de seguranca. # Alem disso, permite a conectividade entre as duas redes internas. # Esse script de Firewall e derivado do firewall que construi para rodar # na empresa usando um ip fixo via ADSL de 256kbps. Esse firewall foi # montado num servidor Linux usando IPCHAINS com 3 NICs, eth0 conectado # ao modem ADSL, eth1 conectado a rede interna 1 e eth2 conectado a rede # interna 2. # # Pode ser usado com IP variaveis (fornecidos por DHCP) no caso de # cable modem ou ip discado normal ao seu provedor.Tudo esta devidamente # documentado para facilitar de acordo com o seu tipo de acesso. # # Esse script e o resultado de pesquisas na internet e estudo de publicacoes # sobre o assunto. # # Condicoes de uso : # Nao me responsabilizo ou dou qualquer garantia com # relacao ao uso desse script.A responsabilidade de # uso do script e TOTAL do usuario sendo que nao irei # me responsabilizar por nenhum dano direto ou # indireto. Use-o sob sua responsabilidade. # Esse script e fornecido gratuitamente e nao me # obriga a fornecer qualquer tipo de assistencia ou # suporte.Fique a vontade para enviar seus comentarios # ou agradecimentos por e-mail. # # A configuracao abaixo e voltada para uso com DSL com caracteristicas : # # a) A interface externa, conectada ao DSL e a " eth0" # b) O endereco IP externo e fixo, IP da eth0 # c) A rede interna 1 e acessivel via "eth1" # d) A rede interna 2 e acessivel via "eth2" # e) Os enderecos das redes internas estao dentro dos limites # de rede privada segundo a RFC1918. # Rede interna 1 : 192.168.1.0/24 # Rede interna 2 : 192.168.2.0/24 # f) Por uma questao de protecao, estaremos usando # endereco da rede externa como sendo 192.168.0.0/26 (reservado) # Altere o endereco de acordo com os IPs validos fornecidos pelo # seu provedor. # Recomendacoes : # - Utilizar Kernel maior ou igual a 2.2.16. Versoes anterioes # possuem bugs de seguranca que podem comprometer seu sistema. # Para saber qual e a sua versao utilize o comando "uname -r". #----------------------------------------------------------------------- # Para utilizar ou modificar o script para adequar ao seu uso voce # precisa, basicamente, alterar as seguintes variaveis : # EXTIF = Interface externa, eth0 no meu caso mas pode ser ppp0 no seu. # EXTIP = IP da interface externa, caso seja fixo. Para ip variavel veja # comentarios abaixo. # EXTBROAD = Endereco de BroadCast da rede externa, pode ser obtido rodando # ifconfig. O endereco de BroadCast e o ultimo endereco IP de # uma subnet.Especificar esse endereco apenas se seu ip for # fixo. # EXTGW = Endereco do gateway da rede externa. Deve ser obtido com # seu provedor ou via script abaixo. # Rede Interna 1 # INTIF = Interface interna 1, eth1 no meu caso # INTIP = IP da interface interna 1 # INTLAN = Endereco da rede interna 1 com subnet mask # Rede Interna 2 # INTIF2 = Interface interna 2, eth2 no meu caso # INTIP2 = IP da interface interna 2 # INTLAN2 = Endereco da rede interna 2 com subnet mask #-------------------------------------------------------------------- #******************************************************************** # Inicializando #******************************************************************** echo -e "\n\nCarregando IPCHAINS Firewall $VERSAO de $ULTALT" echo "----------------------------------------------------------------------" #-------------------------------------------------------------------- # Declaracao de variaveis #-------------------------------------------------------------------- # Interface e enderco de loopback # LOOPBACKIF="lo" LOOPBACKIP="127.0.0.1" # Interface Externa. # # Para usuarios de PPP a interface externa deve ser algo como ppp0. # Para usuarios com mais de um modem, ou interface ppp veja codigo # abaixo. O firewall deve ser executado depois do script # /etc/ppp/ip-up. # #if [ "x$1" != "x" ]; then # EXTIF=$1 #else # EXTIF="ippp0" #fi # # Interface Externa EXTIF="eth0" # Verificar se a interface externa esta habilitada : if ! /sbin/ifconfig | grep $EXTIF > /dev/null; then echo -e "\n\nInterface Externa nao esta habilitada.Abortando." exit 1; fi echo Interface Externa: $EXTIF # IP da interface externa : # A maioria dos acessos discados ppp atribui enderecos dinamicos # ao modem. # Para usuarios de cable modem : # No caso de cable modems, alguns provedores utilizam DHCP e # alteram seu endereco de IP pelo menos uma vez ao dia. Nesse # caso, crie um script para parar e reinicializar o seu firewall # e programe-o atraves do crond. # No caso de IPs dinamicos e necessario colocar uma regra no firewall # para entender/obter o novo endereco IP toda vez que um novo IP for # fornecido pelo provedor. Especialmente util para usuarios de cable modem. # Utilize o DHCPd editando o arquivo ifup em /sbin. Veja man pages. # # Script para obter o endereco da interface externa em caso de ip dinamico : # # EXTIP=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $2) ; print $2 }'` # #if [ "$EXTIP" = '' ]; then # echo "Abortando.Nao foi possivel determinar o IP da $EXTIF .Problema de DHCP ou PPP?" # exit 1 #fi # Rede Externa EXTIP="192.168.0.13" echo IP Externo: $EXTIP # Funcao para obter o Endereco do broadcast da rede externa # "apenas para IPs dinamicos" # #EXTBROAD=`ifconfig $EXTIF | awk '/inet addr/ { gsub(".*:", "", $3) ; print $3 }'` # # Rede Externa EXTBROAD="192.168.0.63" echo BroadCast Externo: $EXTBROAD # Funcao para obter Gateway da rede Externa # #EXTGW=`/sbin/route -n | grep -A 4 UG | awk '{ print $2}'` # Rede Externa EXTGW="192.168.0.1" echo Default GW: $EXTGW echo " --- " # Interface Interna 1. INTIF="eth1" echo Interface Interna 1: $INTIF # IP da interface interna 1 INTIP="192.168.1.1" echo IP Interno 1: $INTIP # IP e subnet mask da rede interna 1 INTLAN="192.168.1.0/24" echo Rede Interna 1: $INTLAN echo " --- " # Interface Interna 2. INTIF2="eth2" echo Interface Interna 2: $INTIF2 # IP da interface interna 2 INTIP2="192.168.2.20" echo IP Interno 2: $INTIP2 # IP e subnet mask da rede interna 2 INTLAN2="192.168.2.0/24" echo Rede Interna 2: $INTLAN2 echo " --- " # IP e mascara para todos os enderecos internet UNIVERSE="0.0.0.0/0" # Mascara de IP para todas as transmissoes de broadcast BROADCAST="255.255.255.255" # Portas IP altas nao privilegiadas. UNPRIVPORTS="1024:65535" # Portas do sistema X Windows (TCP). XWINDOWS_PORTS="6000:6010" # Caso voce precise especificar uma lista de hosts externos # permitidos ou uma lista de subnets permitidas. # # Caso voce deseje permitir uma rede inteira, basta colocar # o ultimo octeto com .0 e a subnet mask. Por exemplo : # # HOSTSEG="200.204.0.0/26" # #HOSTSEG="200.204.0.40" #echo Host Seguro 1 IP: $HOSTSEG #HOSTSEG2="200.204.0.41" #echo Host Seguro 2 IP: $HOSTSEG2 #HOSTSEG3="200.204.0.42" #echo Host Seguro 3 IP: $HOSTSEG3 #HOSTSEG2="200.204.0.43" #echo Host Seguro 4 IP: $HOSTSEG4 # Enderecos IP para Port Forwarding # # Port forwarding, habilita trafico externo a conectar diretamente a sua # maquina mascarada interna, acessivel apenas na rede interna. # Uma aplicacao seria o acesso a um servidor FTP protegido atras de uma # mascara. Variaveis PORTFW, descomentar se for necessario. # #PORTFWIP1="192.168.1.20" #echo IP PortForward 1 : $PORTFWIP1 #PORTFWIP2="192.168.2.12" #echo IP PortForward 2 : $PORTFWIP2 #PORTFWIP3="192.168.1.21" #echo IP PortForward 3 : $PORTFWIP3 # TCP/IP addresses of INTENRAL hosts network allowed to directly # connect to the Linux server. All internal hosts are allowed # per default. # Enderecos da rede interna que terao acesso a esse firewall. O padrao e # todos os hosts da rede interna estao habilitados. # # Coloque o IP e crie variaveis com nomenclatura HOSTIP # #HOST11IP="192.168.1.10" #echo IP do Host Interno 1 da rede 1 : $HOST11IP #HOST21IP="192.168.2.10" #echo IP do Host Interno 1 da rede 2 : $HOST21IP # Log do sistema firewall. # # Descomenta a linha " " e comente a -"l" para desabilitar o log. # # O arquivo de log pode ser encontrado no arquivo /var/log/messages. # Caso voce so queria o log em algumas regras, simplesmente apague # "$LOGGING" nas regras que nao deseja logar. # # LOGGING=" " LOGGING="-l" echo " --- " echo "----------------------------------------------------------------------" #-------------------------------------------------------------------- # Seccao de Debug do Firewall #-------------------------------------------------------------------- # Se voce esta tendo problemas com seu firewall, descomente as linhas # abaixo e reinicialize seu script. # # O arquivo de debug encontra-se em /tmp/rc.firewall.dump #-------------------------------------------------------------------- # #echo " - Debugging." #echo IP de Loopback : $LOOPBACKIP > /tmp/rc.firewall.dump #echo Nome da interface de Loopback : $LOOPBACKIF >> /tmp/rc.firewall.dump #echo Nome da interface interna 1 : $INTIF >> /tmp/rc.firewall.dump #echo IP da interface interna 1 : $INTIP >> /tmp/rc.firewall.dump #echo Endereco da rede interna 1 : $INTLAN >> /tmp/rc.firewall.dump #echo Nome da interface interna 2 : $INTIF2 >> /tmp/rc.firewall.dump #echo IP da interface interna 2 : $INTIP2 >> /tmp/rc.firewall.dump #echo Endereco da rede interna 2 : $INTLAN2 >> /tmp/rc.firewall.dump #echo ----------------------------------------------------- >> /tmp/rc.firewall.dump #echo Nome da interface Externa : $EXTIF >> /tmp/rc.firewall.dump #echo IP da interface Externa : $EXTIP >> /tmp/rc.firewall.dump #echo IP de broadcast da interface Externa : $EXTBROAD >> /tmp/rc.firewall.dump #echo IP do default gateway da Interface Externa : $EXTGW >> /tmp/rc.firewall.dump #echo ----------------------------------------------------- >> /tmp/rc.firewall.dump # Liste os HOSTSEG, Hosts seguros #echo Host Externo segruo : $HOSTSEG >> /tmp/rc.firewall.dump #-------------------------------------------------------------------- # Geral #-------------------------------------------------------------------- # Efetua processamentos gerais como configurar a rota de multicast # e hackeamento de endereco DHCP. # # Multicast serve para transmitir dados para aplicacoes multimidia. # Opcao de Multicast e opcional. # #echo " - Adicionando rota de multicast." #/sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev $EXTIF # Desabilitando ataques de IP Spoofing. # # echo " - Desabilitando ataques de IP Spoofing." for file in /proc/sys/net/ipv4/conf/*/rp_filter do echo "2" > $file done # Descomente se estiver usando um endereco dinamico #* #echo " - Habilitando hackeamento de endereco TCP/IP dinamico." #echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Habilitando protecao a Cookie TCP SYN # echo " - Habilitando protecao a Cookie TCP SYN." echo "1" > /proc/sys/net/ipv4/tcp_syncookies # Certifique que as configuracoes de diversos ICMP sanity estao presentes. # echo " - Habilitando configuracoes de ICMP." # Desabilitando protecao a echo de broadcast ICMP. echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Habilitando protecao a mensagem de "bad error" echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Desabilitando redirecionamentos de ICMP for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo "0" > $file done # # Certifique que pacotes roteados na origem foram descartados # Se estiver rodando IPROUTE2, sera necessario desabilitar isso. # echo " - Certifique que pacotes roteados na origem foram descartados " for file in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo "0" > $file done # Logar pacotes spoofed, roteados na origem ou redirecionados. # echo " - Logar pacotes spoofed, roteados na origem ou redirecionados " for file in /proc/sys/net/ipv4/conf/*/log_martians; do echo "1" > $file done #-------------------------------------------------------------------- # Configuracoes de Tipo de Servico (TOS - Type of Service) #-------------------------------------------------------------------- # Voce pode dizer a internet como lidar com o seu trafico. # # -t 0x01 0x10 = Delay Minimo # -t 0x01 0x08 = Throughput Maximo # -t 0x01 0x04 = Confiabilidade Maxima # -t 0x01 0x02 = Custo Minimo # # Por exemplo : # # Configuracao para FTP, SSH e TELNET # /sbin/ipchains -A output -p tcp -d 0/0 21:23 -t 0x01 0x10 # # Configuracao para Web WWW # /sbin/ipchains -A output -p tcp -d 0/0 80 -t 0x01 0x10 #-------------------------------------------------------------------- # Timeouts de Masquerading #-------------------------------------------------------------------- # Determinar valores de timeout para a sessao de masquerading. # # Explicacao : 7200 = 7200 segundos (2 hrs) para sessoes TCP # 10 = 10 segundos para trafico TCP/IP apos recebimento # do pacote "FIN" # 60 = 60 segundos para timeout do trafico UDP # Para usuarios de ICQ aumente o valor para trafico UDP para 180 segundos # echo " - Alterando timeouts de IP masquerading." /sbin/ipchains -M -S 7200 10 60 #-------------------------------------------------------------------- # Modulos de Masquerading #-------------------------------------------------------------------- # A maioria de aplicativos TCP/IP funcionam bem atras de um servidor # IP masquerading Linux. Alguns aplicativos precisam de modulos # especiais para gerenciar o trafico de entrada e saida devidamente. # Apenas descomente os modulos que ira efetivamente utilizar. # O modulo FTP sera carregado. # # Verifique os modulos presentes no seu sistema no diretorio # /lib/modules//ipv4/ #-------------------------------------------------------------------- echo " - Carregando modulos de masquerading." #/sbin/modprobe ip_masq_cuseeme /sbin/modprobe ip_masq_ftp #/sbin/modprobe ip_masq_irc #/sbin/modprobe ip_masq_quake #/sbin/modprobe ip_masq_raudio #/sbin/modprobe ip_masq_vdolive #/sbin/modprobe ip_masq_icq #-------------------------------------------------------------------- # Politicas default #-------------------------------------------------------------------- # Configure todas as politicas default (padrao) para REJEITAR (REJECT) # e descarte todas as regras antigas. #-------------------------------------------------------------------- # Alterar politicas padrao para rejeitar REJECT # # Fazemos isso para, posteriormente, permitir qual o trafico que iremos # permitir para OUT (saida) e In (entrada). Qualquer outro tipo de trafico, # a nao ser que seja especificamente determinado, sera bloqueado. # echo " - Configurar politicas padrao para REJECT" /sbin/ipchains -P input REJECT /sbin/ipchains -P output REJECT /sbin/ipchains -P forward REJECT echo " - Descartar todas as regras antigas e configurar todas as " echo " politicas default para REJECT." # /sbin/ipchains -F input /sbin/ipchains -F output /sbin/ipchains -F forward #******************************************************************** # Regras de entrada (input) #******************************************************************** echo "----------------------------------------------------------------------" echo "Regras de Entrada (Input) : " #-------------------------------------------------------------------- # Trafico de entrada na rede Interna #-------------------------------------------------------------------- # Essa parte controla o fluxo do trafico de entrada (input) dentro # da rede interna. # Todo o trafico da rede local e valido. # Se voce precisar controlar qual trafico e permitido tera que configurar # linhas individuais com ACCEPT para cada endereco IP. # # Voce pode desejar permitir apenas trafico numa direcao mas nao na contraria. # Uma aplicacao seria permitir acesso a um servidor Web externo mas nao o # acesso proveniente desse servidor. O correto e usar a flag -y. #-------------------------------------------------------------------- echo " - Determinar filtros de trafico de entrada (INPUT) na rede interna." # Servidor DHCP # # Se voce configurou um servidor DHCP na sua maquina Linux para servir # enderecos IP a rede interna, voce tera que habilitar essa seccao. # # Esse e um exemplo de como permitir o fluxo do trafico de entrada na # rede interna. # # echo " Parametro Opcional : Servidor DHCPd" #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p udp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p udp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $UNIVERSE bootpc -d $BROADCAST/0 bootps #-------------------------------------------------------------------- # Acesso explicito a partir dos hosts da rede interna. #-------------------------------------------------------------------- # Esse e um exemplo de como permitir apenas que hosts especificos # na rede interna possam acessar os servicos de firewall. # # Exemplos de permissao para acesso de FTP, dados de FTP, SSH e TELNET. #-------------------------------------------------------------------- #echo " - Configurando flitros de input para hosts especificos na rede interna." # Host1 : Permita que o ip do host interno $HOST11IP conecte ao servidor linux # #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP telnet # mesma coisa para rede 2 dentro da rede 2 #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP telnet # Host2 : Permita que o ip do host interno $HOST12IP conecte ao servidor linux # #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP telnet # mesma coisa para rede 2 #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP telnet #-------------------------------------------------------------------- # Trafico proveniente da interface externa #-------------------------------------------------------------------- # Essa regra ira controlar o trafico especifico cuja entrada e permitida # proveniente da interface externa. # #-------------------------------------------------------------------- # echo " - Configurando filtro de entrada para trafico proveniente da interface externa." # Clientes de DHCP. # # Se seu provedor nao lhe designou um IP fixo, seu IP e dinamico. # Portanto, voce tera que habilitar as linhas abaixo. Geralmente para # usuarios de cable modem ou modems convencionais essa e a situacao. #* #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootps -d $BROADCAST/0 bootpc #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootps -d $BROADCAST/0 bootpc # FTP : Pemite usuarios externos (da internet) conectar ao seu servidor linux # para servicos FTP. # # echo " Parametro opcional : Servidor FTP" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ftp-data # IRC : Permite usuarios externos (na internet) conectar ao seu servidor Linux # para servicos IRC. # Verifique se o seu IRCd esta definido na tabela de servicos no arquivo # /etc/services # # echo " Parametro Opcional : servidor IRC" # /sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ircd # HTTP : Permite usuarios externos (na internet) conectar ao seu servidor Linux. # # echo " Parametro Opcional : servidor HTTP" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP http # HTTPS : Permite usuarios externos (na internet) conectar ao seu servidor Linux. # # echo " Parametro Opcional : servidor HTTPS" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP https # Advanced ICMP: Some users prefer that their UNIX box NOT ping, etc. # This is easy enough to do but be sure you know what you # are doing. # ICMP avancado : Alguns administradores preferem que seu servidor Linux # nao permita ping, etc. # # Consulte o paper sobre filtragem de ICMP para saber mais : # http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf # # Quando um firewall e configurado para rejeitar trafico de ICMP, # o trafico resultante de reply e automaticamente rejeitado. # Rode "/sbin/ipchains -h icmp" para verificar codigos de icmp suportados. # # Nao responda (reply) a ECHO REPLYs (tipo 0) vindos pela internet. # # echo " Parametro Opcional : Filtro de entrada de ICMP ECHO-REPLY" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type echo-reply $LOGGING # # Nao responder a requisicoes TCP/UDP TRACEROUTE da internet. # # echo " Parametro Opcional : Filtro de entrada TCP/UDP TRACEROUTE" # #/sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 33434 $LOGGING #/sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 33434 $LOGGING # # Nao responder a requisicoes TCP/UDP TRACEROUTE da Internet para clientes # MS que utilizam ICMP ECHO e nao TCP/UDP. # # echo " Parametro Opcional : Filtro de entrada ICMP TRACEROUTE (MS)" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type destination-unreachable $LOGGING # # Nao responder a DESTINATION-UNREACHABLE (tipo 3) da internet. # # echo " Parametro Opcional : filtro de entrada ICMP DESTINATION-UNREACHABLE" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type destination-unreachable $LOGGING # # Nao responder a SOURCEQUENCH (tipo 4) da internet. # # echo " Parametro Opcional : filtro de entrada ICMP SOURCEQUENCH" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type source-quench $LOGGING # # Nao responder a nenhuma forma de refirecionamento de pacotes (tipo 5) # echo " Parametro Opcional : filtro de entrada ICMP REDIRECT" /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type redirect $LOGGING # # Nao permitir requisicoes de PING (tipo 8) da internet. # # echo " Parematro Opcional : filtro de entrada ICMP ECHO" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type echo-request $LOGGING # # Nao responder a pacotes do tipo (Time to Live expirado) TTL-Expired. # # echo " Parametro Opcional : filtro de entrada ICMP TTL-EXPIRED" #/sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type time-exceeded $LOGGING # # Nao responder a pacotes do tipo ICMP PARAMETER-PROBLEM. # # echo " Parametro Opcional : filtro de entrada ICMP PARAMETER-PROBLEM" # /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type parameter-problem $LOGGING # # Nao responder a pacotes ICMP TIMESTAMP (tipos 13 e 14) # echo " Parametro Opcional : filtro de entrada ICMP TIMESTAMP" /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type timestamp-request $LOGGING /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type timestamp-reply $LOGGING # # Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18). # echo " Parametro Opcional : filtro de entrada ICMP ADDRESS-MASK" /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type address-mask-request $LOGGING /sbin/ipchains -A input -j REJECT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP --icmp-type address-mask-reply $LOGGING # ICMP Geral : Permite pacotes ICMP a partir de todos enderecos externos. # # Desabilitar pacotes ICMP por regras de firewall pode fazer muito mais # que apenas barrar usuarios pingando a sua maquina. Muitos aspectos # do TCP/IP e seus aplicativos relacionados baseiam-se em varias mensagens # ICMP. Sem ICMP, tanto seu servidor Linux quanto os hosts internos da sua # rede podem nao funcionar. # # Se desejar filtrar pacotes ICMP, faca-o descomentando o tipo de trafico # que deseja barrar nas linhas acima e nao na linha a seguir. # # Essa linha aceita pacotes ICMP originarios da Internet para o IP da # sua interface externa. # /sbin/ipchains -A input -j ACCEPT -i $EXTIF -p icmp -s $UNIVERSE -d $EXTIP # NNTP : Permite hosts externos conectarem o seu servidor Linux para # servicos de news NNTP. # # echo " Parametro Opcional : servidor NNTP" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP nntp # NTP : Permite hosts externos conectarem o seu servidor Linux para # servicos NTP.Alguns clientes de NTP utilizam trafico TCP # enquanto outros utilizam UDP. # # echo " Parametro Opcional : servidor NTP" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ntp #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP ntp # TELNET : Permite hosts externos conectarem seu servidor Linux para # acesso TELNET. # # echo " Parametro Opcional : servidor TELNET" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP telnet # Servidor SSH: Permite hosts externos conectarem seu servidor Linux para # acesso seguro secure shell SSH. # # echo " Parametro Opcional : servidor SSH" #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP ssh #-------------------------------------------------------------------- # Rejeicoes especificas de entrada pela interface externa #-------------------------------------------------------------------- # Essas regras rejeitam trafico especifico que voce nao deseja dentro # do seu sistema. #-------------------------------------------------------------------- echo " - Rejeitar entradas (inputs) especificos." # Recusar pacotes via interface externa com endereco de loopback #* /sbin/ipchains -A input -j DENY -i $EXTIF -s $LOOPBACKIP # Interface remota alegando ser maquina local.Caso de IP spoofing. /sbin/ipchains -A input -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING # De acordo com RFC1918 e IANA # Filtro de enderecos reservados # # Filtrar todo o trafico externo originario do espaco reservado de enderecos. # Rode "whois IANA*@arin.net" e "whois RESERVED*@arin.net" para obter # maiores informacoes. # # Reservado-1 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 0.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-9 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 1.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-10 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 10.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-23 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 23.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-31 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 31.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-7 (65.0.0.0 - 95.255.255.255) # # 65.0.0.0 - 65.255.255.255 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 65.0.0.0/8 -d $UNIVERSE $LOGGING # 66.0.0.0 - 67.255.255.255 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 66.0.0.0/7 -d $UNIVERSE $LOGGING # 68.0.0.0 - 71.255.255.255 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 68.0.0.0/6 -d $UNIVERSE $LOGGING # 72.0.0.0 - 79.55.255.255 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 72.0.0/5 -d $UNIVERSE $LOGGING # 80.0.0.0 - 95.255.255.255 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 80.0.0.0/4 -d $UNIVERSE $LOGGING # Reservado-8 (96.0.0.0 - 126.255.255.255) # A mascara a seguir inclui tambem a rede 127.0.0.0. /sbin/ipchains -A input -j REJECT -i $EXTIF -s 96.0.0.0/3 -d $UNIVERSE $LOGGING # Loopback # Incluso acima no Reservado-8 # Reservado-3 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.0.0.0/16 -d $UNIVERSE $LOGGING # BuracoNegro3 = BLACKHOLE3 # # Desabilitado pelo fato que todas as funcoes de reverso de DNS , exceto # a funcao de endereco, nao irao funcionar corretamente. # #/sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.9.64.26/32 -d $UNIVERSE $LOGGING # Inclui NET-TEST-B /sbin/ipchains -A input -j REJECT -i $EXTIF -s 128.66.0.0/16 -d $UNIVERSE $LOGGING # IANA-RESERVED e RFC1918 (172.19-31.0.0) /sbin/ipchains -A input -j REJECT -i $EXTIF -s 172.16.0.0/12 -d $UNIVERSE $LOGGING # Reservado-4 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 191.255.0.0/16 -d $UNIVERSE $LOGGING # ROOT-NS-LAB - 192.0.0.0/24 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.0.0/24 -d $UNIVERSE $LOGGING # NET-ROOTS-NS-LIVE - 192.0.1.0/24 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.1.0/24 -d $UNIVERSE $LOGGING # NET-TEST - 192.0.2.0/24 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.0.2.0/24 -d $UNIVERSE $LOGGING # RFC1918 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 192.168.0.0/16 -d $UNIVERSE $LOGGING # Reservado-13 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 197.0.0.0/16 -d $UNIVERSE $LOGGING # Reservado-14 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 201.0.0.0/8 -d $UNIVERSE $LOGGING # Reservado-5 /sbin/ipchains -A input -j REJECT -i $EXTIF -s 223.255.255.0/24 -d $UNIVERSE $LOGGING # Para uso futuro com classes E e F. /sbin/ipchains -A input -j REJECT -i $EXTIF -s 240.0.0.0/5 -d $UNIVERSE $LOGGING /sbin/ipchains -A input -j REJECT -i $EXTIF -s 248.0.0.0/5 -d $UNIVERSE $LOGGING # Multicast : Desabilitar trafico Multicast. # # echo " Parametro Opcional : Ignorar MULTICAST" # /sbin/ipchains -A input -j REJECT -i $EXTIF -s $UNIVERSE -d 224.0.0.0/4 # NFS: Rejeita trafico NFS de e para maquinas externas. # # Procure nao habilitar trafico externo de NFS para evitar problemas de # seguranca. # /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 2049 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 2049 -d $EXTIP # SMB e CIFS: Rejeita trafico SMB e CIFS de e para maquinas externas. # # Procure nao habilitar trafico externo de Samba (Windows 3.x, 9x e NT) ou # CIFS (Windows 2000) para evitar problemas de seguranca. # # Portas: 137 TCP/UDP (NetBIOS name service) # 138 UDP (NetBIOS datagram service) - filtra TCP # 139 TCP (NetBIOS session service) - filtra UDP # 445 TCP/UDP (MS CIFS em Windows 2000) echo " - Rejeitar silenciosamente trafico TCP/UDP de SMB e CIFS pela interface externa." /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 137 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 137 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 137 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 137 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 138 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 138 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 138 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 138 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 139 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 139 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 139 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 139 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP 445 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTIP 445 /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE -d $EXTBROAD 445 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTBROAD 445 /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 137 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 137 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 138 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 138 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 139 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 139 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p tcp -s $UNIVERSE 445 -d $EXTIP /sbin/ipchains -A input -j REJECT -i $EXTIF -p udp -s $UNIVERSE 445 -d $EXTIP #-------------------------------------------------------------------- # Trafico de entrada para todas as Interfaces #-------------------------------------------------------------------- # Isso ira controlar o trafico de entrada em todas as interfaces. #-------------------------------------------------------------------- echo " - Configurando filtros de entrada para servicos publicos em todas as interfaces." # AUTH: Permite o protocolo de autenticacao em todas as interfaces # mas desabilita no arquivo /etc/inetd.conf. A razao disso # e que algumas pilhas TCP/IP nao lidam corretamente com # requisicoes de autorizacao rejeitadas. # # Trafico para e apartir da sua maquina /sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth /sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE # DHCP/BOOTP : Rejeita todo trafico. # #/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE bootpc # DNS: Se voce e um provedor de acesso e esta rodando um DNS # de IPs validos, e necessario abrir as portas do DNS em # todas as interfaces e permitir lookups. # # echo " Parametro Opcional : servidor DNS" #/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE domain #/sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $UNIVERSE domain # RIP: Rejeita todo o trafico RIP.Muitas redes mal configuradas # propagam protocolos de roteamento de rede ate o limite da rede. # A linha a seguir permite que voce filtre RPI. # #/sbin/ipchains -A input -j REJECT -p udp -s $UNIVERSE -d $UNIVERSE route # SMTP: Se voce esta rodando um servidor SMTP valido, deve permitir # o trafico de SMTP em todas as interfaces. # # echo " Parametro Opcional : servidor SMTP" #/sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE smtp # Proxy SQUID com filtro de lixo # # Se voce esta usando o Squid com filtro de Banners, voce tera que # habilitar as linhas a seguir para fazer o redirecionamento IPCHAINS # para a porta 3128 do Squid. # #echo " Parametro Opcional : Proxy transparente SQUID" #/sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -p tcp -d $LOOPBACKIP/32 www #/sbin/ipchains -A input -j ACCEPT -i $INTIF -p tcp -s $INTLAN -d $INTIP/32 www #/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF -p tcp -s $INTLAN -d $INTLAN/0 www $LOGGING # Rede 2 #/sbin/ipchains -A input -j ACCEPT -i $INTIF2 -p tcp -s $INTLAN2 -d $INTIP2/32 www #/sbin/ipchains -A input -j REDIRECT 3128 -i $INTIF2 -p tcp -s $INTLAN2 -d $INTLAN2/0 www $LOGGING #-------------------------------------------------------------------- # Rejeicoes de entrada especifica em qualquer interface. #-------------------------------------------------------------------- # AS regras abaixo rejeitam trafico especifico que voce nao quer fora # do seu sistema. #-------------------------------------------------------------------- #echo " - Rejeitar trafico para dominios especificos." # Nao permitir que qualquer host interno tenha acesso aos seguintes sites : # # #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 63.160.54.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 128.11.92.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.206.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.207.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.208.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 199.95.210.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.178.112.160/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 204.253.104.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.10.202.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.203.243.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.211.225.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 208.228.86.0/24 #/sbin/ipchains -A input -j REJECT -i $INTIF -p tcp -s $UNIVERSE -d 209.67.38.0/24 # Suponha que voce nao quer receber nenhum e-mail de um servidor. # Use o codigo abaixo, colocando o endereco valido apos o flag -d # #/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d 152.163.159.0/24 #/sbin/ipchains -A input -j REJECT -p tcp -s $UNIVERSE 25 -d 205.188.157.0/24 #-------------------------------------------------------------------- # Permite INPUT de hosts externos #-------------------------------------------------------------------- # Isso controla acesso externo de hosts especificos. O exemplo permite # FTP, Secure Shell, POP3 e TELNET de um servidor especificado dentro do # firewall. Alem das regras de input voce precisa permitir o trafico desse # servidor para fora. Veja as regras de output mais abaixo. # #-------------------------------------------------------------------- echo " - Configurando filtros de entrada para hosts externos." # #echo " Permite INPUT de $HOSTSEG para ftp, ssh, POP3 e TELNET." #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP pop-3 #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG -d $EXTIP telnet #echo " Permite INPUT de $HOSTSEG2 para ftp, ssh, POP3 e TELNET." #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ftp #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ftp-data #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP ssh #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP pop-3 #/sbin/ipchains -A input -j ACCEPT -i $EXTIF -p tcp -s $HOSTSEG2 -d $EXTIP telnet # # copie o bloco para mais hosts apos $HOSTSEG2 # Permite que todas as interfaces internas acessem a internet # ----------------------------------------------------------- # Inteface local e maquinas locais podem ir a qualquer lugar. # # A razao principal dessa regra estar no final da seccao de INPUT # e certificar que todas as linhas DENY/REJECT do firewall sejam # testadas antes de permitir todo o trafico interno. # Se voce desejar pode voltar ao topo dessa seccao e especificar # quais os hosts que podem sair, depois comente a linha abaixo # de modo que so os hosts permitidos podem sair para a internet. # # Rede Interna 1 /sbin/ipchains -A input -j ACCEPT -i $INTIF -s $INTLAN -d $UNIVERSE #* # Rede Interna 2 /sbin/ipchains -A input -j ACCEPT -i $INTIF2 -s $INTLAN2 -d $UNIVERSE # Interface de Loopback e valida. # /sbin/ipchains -A input -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE # Portas altas : # # Habilita todas as portas altas nao privilegiadas para todo o trafico # TCP/UDP de reply. # # O uso da flag "! -y" (not -y) filtra todo trafico TCP que nao possui # o bit SYN configurado. Isso significa que qualquer trafico que tentar # negociar com seu servidor numa porta alta sera rejeitado. Apenas # trafico de retorno ou trafico baseado em UDP sera aceito em portas # altas. Nao utilizar filtro SYN na porta 20 para secoes ativas de FTP. # Por isso, deve-se especificar isso. # echo " - Habilitando toda a entrada de trafico de REPLY (TCP/UDP) em portas altas." /sbin/ipchains -A input -j ACCEPT ! -y -p tcp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS /sbin/ipchains -A input -j ACCEPT -p tcp -s $UNIVERSE ftp-data -d $EXTIP $UNPRIVPORTS /sbin/ipchains -A input -j ACCEPT -p udp -s $UNIVERSE -d $EXTIP $UNPRIVPORTS #-------------------------------------------------------------------- # Capturar todas as regras de INPUT #-------------------------------------------------------------------- # echo " - Capturar todas as regras de input finais." # Todos os outros tipos de entradas sao negadas e logadas. /sbin/ipchains -A input -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING #******************************************************************** # Regras de Output (saida) #******************************************************************** echo "----------------------------------------------------------------------" echo "Regras de Output:" #-------------------------------------------------------------------- # Trafico de saida (Outgoing) da rede interna #-------------------------------------------------------------------- # Essas regras contem politicas para todo trafico de saida da rede # interna. Todo trafico para fora e permitido. # #-------------------------------------------------------------------- echo " - Configurando filtros de output para todo o trafico da rede interna." # Filtrar pacotes via interface externa com endereco de loopback #* /sbin/ipchains -A output -j DENY -i $EXTIF -s $LOOPBACK $LOGGING # Interface local, qualquer origem para a rede local 1 e valida. /sbin/ipchains -A output -j ACCEPT -i $INTIF -s $UNIVERSE -d $INTLAN # Interface local, qualquer origem para a rede local 2 e valida. #* /sbin/ipchains -A output -j ACCEPT -i $INTIF2 -s $UNIVERSE -d $INTLAN2 # Interface de Loopback e valida. /sbin/ipchains -A output -j ACCEPT -i $LOOPBACKIF -s $UNIVERSE -d $UNIVERSE # DHCP: Se voce configurou um servidor DHCP nessa maquina Linux, voce tera # que habilitar as seguintes regras : # # echo " Parametro Opcional : servidor DHCPd" #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 bootps -d $BROADCAST/0 bootpc #* # Rede 2 #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32 bootps -d $BROADCAST/0 bootpc #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $INTIP2/32 bootps -d $BROADCAST/0 bootpc # HTTP: Como permitir trafico interno HTTP a um servidor intranet de Web # sem permitir o acesso externo. # # echo " Parametro Opcional : servidor WWW" #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $INTIP/32 http -d $INTLAN # APC PowerChute para Linux. Esse e o software de gerenciamento de nobreaks # da marca APC que uso internamente. Serve para desligar e verificar o nobreak. # Esse software manda um broadcast para a rede interna procurando pelo daemon # upsd. # # echo " Parametro Opcional : servidor UPSd" # /sbin/ipchains -A output -j ACCEPT -i $INTIF -p udp -s $INTIP/32 -d $BROADCAST 5456 #* # Rede 2 # /sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p udp -s $INTIP2/32 -d $BROADCAST 5456 #-------------------------------------------------------------------- # Output da rede interna.Acesso de hosts internos ao firewall. #-------------------------------------------------------------------- # As regras abaixo permitem a apenas hosts especificados o acesso # aos servicos desse firewall. # # Abaixo, esta demonstrado como permitir acesso FTP, SSH e TELNET. # #-------------------------------------------------------------------- #echo " - Estabelecendo filtros para output de hosts da rede interna." # Host1 da rede 1 HOST11IP #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ftp-data #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP ssh #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST11IP -d $INTIP telnet # Host2 da rede 1 HOST12IP #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ftp-data #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP ssh #/sbin/ipchains -A output -j ACCEPT -i $INTIF -p tcp -s $HOST12IP -d $INTIP telnet # Host1 da rede 2 HOST21IP #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ftp #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ftp-data #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 ssh #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST21IP -d $INTIP2 telnet # Host2 da rede 2 HOST22IP #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ftp #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ftp-data #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 ssh #/sbin/ipchains -A output -j ACCEPT -i $INTIF2 -p tcp -s $HOST22IP -d $INTIP2 telnet #-------------------------------------------------------------------- # Trafico de saida na interface externa #-------------------------------------------------------------------- # Essa regra controla o trafico que pode sair pela interface externa. #-------------------------------------------------------------------- echo " - Configurando filtros de input para trafico com a interface externa." # Cliente DHCP : Se o seu servidor Linux esta conectado via Cablemodem, ou seja, # acesso dedicado por cabo e seu provedor nao lhe forneceu um IP # fixo e sim um endereco dinamico que muda de acordo com # intervalos determinados, sera necessario descomentar as # regras abaixo. # #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $UNIVERSE bootpc -d $UNIVERSE bootps #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $UNIVERSE bootpc -d $UNIVERSE bootps # FTP : Permite trafico FTP se o seu servidor Linux for um servidor FTP tambem. # # echo " Parametro Opcional : servidor FTP" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $UNIVERSE #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $UNIVERSE # IRCd : Permite trafico se o seu servidor Linux servir IRC. # Obs : ircd deve estar especificado no arquivo de servicos # localizado em etc/services # # echo " Parametro Opcional : servidor IRC" # /sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ircd -d $UNIVERSE # HTTP : Permite trafico HTTP. Seu Linux e um servidor de documentos WWW # # echo " Parametro Opcional : servidor WWW" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP http -d $UNIVERSE # HTTPS : Permite trafico HTTP. Seu Linux e um servidor de documentos seguros WWW # # echo " Parametro Opcional : servidor WWW seguro HTTPS" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP https -d $UNIVERSE # NTP : Permite atualizacoes NTP. Seu Linux e um servidor NTP. # Alguns clientes NTP usam TCP e outros usam UDP. # # echo " Parametro Opcional : servidor NTP" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ntp -d $UNIVERSE #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p udp -s $EXTIP ntp -d $UNIVERSE # TELNET: Permite trafico TELNET. # # echo " Parametro Opcional : servidor TELNET" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $UNIVERSE # SSH : Permite trafico de saida de SSH, se o seu Linux estiver rodando o SSHd. # Nesse caso, voce pode acessar o seu Linux pela internet (interface externa) # via SSH. No meu caso, eu faco isso. #* # echo " Parametro Opcional : servidor SSH" /sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $UNIVERSE #-------------------------------------------------------------------- # Trafico de saida em todas as interfaces #-------------------------------------------------------------------- # As regras abaixo controlam o trafico de saida para todas as interfaces. # As regras sao apenas para especificar o que pode ser usado, uma vez que # a regra geral esta acima como REJECT. #-------------------------------------------------------------------- echo " - Configurando filtros de output para todas as interfaces." # AUTH : Permite que o protocolo de autenticacao AUTH e ident funcionem com # todas as interfaces. # Trafico PARA a sua maquina DA sua maquina. /sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE auth -d $UNIVERSE /sbin/ipchains -A output -j ACCEPT -p tcp -s $UNIVERSE -d $UNIVERSE auth # DNS : Caso esteja rodando um servidor Linux DNS autoritativo, voce precisa # habilitar as regras a seguir. # # echo " Parametro Opcional : Servidor DNS" #/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP domain -d $UNIVERSE #/sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP domain -d $UNIVERSE # ICMP avancado : Alguns administradores preferem que seu servidor Linux # nao seja pingado com PING. # Consulte http://www.sys-security.com/archive/papers/ICMP_Scanning_v2.0.pdf # sobre como filtrar trafico ICMP. # # Rode "/sbin/ipchains -h icmp" para saber sobre codigos ICMP. # # Nao responder a ICMP ECHO REPLYs (tipo 0) da Internet. # # echo " Paramentro Opcional : Saida de ICMP ECHO REPLY filtrada" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-reply # # Nao responder a requisicoes de TRACEROUTE via TCP/UDP da Internet # # echo " Parametro Opcional : Trafico de saida TRACEROUTE TCP/UDP filtrado" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 33434 $LOGGING #/sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 33434 $LOGGING # # Nao responder a requisicoes de TRACEROUTE via ICMP ECHO para clientes MS # # echo " Parametro Opcional : Trafico de saida TRACEROUTE ICMP ECHO (MS) filtrado" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-request $LOGGING # # Nao responder a DESTINATION-UNREACHABLE (tipo 3) da Internet # # echo " Parametro Opcional : Trafico de saida ICMP DESTINATION-UNREACHABLE filtrado" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type destination-unreachable $LOGGING # # Nao responder a SOURCEQUENCH (tipo 4) da Internet # # echo " Parametro Opcional : Trafico de saida ICMP SOURCEQUENCH filtrado" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type source-quench $LOGGING # # Nao responder a qualquer tipo de pacote ICMP REDIRECT (tipo 5) # echo " Parametro Opcional : trafico de saida ICMP REDIRECT filtrado" /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type redirect $LOGGING # # Nao permitir PING (tipo 8) da Internet # # echo " Parametro Opcional : trafico de saida ICMP ECHO filtrado" #/sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type echo-request $LOGGING # # Nao responder a pacotes Time To Live Expired (tipo 11) da Internet # echo " Parametro Opcional : trafico de saida ICMP TTL-EXPIRED filtrado" /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type ttl-zero-during-reassembly $LOGGING # # Nao responder a pacotes PARAMETER-PROBLEM (tipo 12) da internet # echo " Parametro Opcional : Trafico de saida ICMP PARAMETER-PROBLEM filtrado" /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type parameter-problem $LOGGING # # nao responder a pacotes ICMP TIMESTAMP (tipo 13 e 14) # echo " Parametro Opcional : trafico de saida ICMP TIMESTAMP filtrado" /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type timestamp-request $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type timestamp-reply $LOGGING # # Nao responder a pacotes ICMP ADDRESS MASK (tipo 17 e 18) # echo " Parametro Opcional : Trafico de saida ICMP ADDRESS-MASK filtrado" /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type address-mask-request $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p icmp -s $EXTIP -d $UNIVERSE --icmp-type address-mask-reply $LOGGING # ICMP Geral : Permite trafico de ICMP para fora # # Cuidado ao desabilitar pacotes ICMP com regras de firewall. Muitos # aspectos do protocolo TCP/IP e aplicativos derivados dependem de # mensagens ICMP. Portanto, ao fazer isso tenha certeza do que esta # realmente filtrando. Sem ICMP, tanto o seu servidor Linux quanto # as maquinas conectadas a ele podem nao funcionar. # # Aceita trafico ICMP da Internet /sbin/ipchains -A output -j ACCEPT -p icmp -s $UNIVERSE -d $UNIVERSE # NNTP : Permite trafico de News baseado em NNTP. # # echo " Parametro Opcional : servidor NNTP" #/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP nntp -d $UNIVERSE # SMTP : Se seu servidor Linux e um servidor SMTP ou funciona como um relay # voce precisa descomentar a linha abaixo. # # echo " Parametro Opcional : servidor SMTP" #/sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP smtp -d $UNIVERSE #-------------------------------------------------------------------- # Saida para Hosts externos especificos #-------------------------------------------------------------------- # Essas regras permitem saida para hosts especificos que denominamos # $HOSTSEG. Abaixo, POP3 e SSH sao permitidos para Hosts especificados. # Alem das regras de saida (OutPut) tambem sao necessarias as regras de # Input. Veja acima. # #-------------------------------------------------------------------- echo " - Configurando filtros de saida para hosts externos especificos." # Host 1 = HOSTSEG # #echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG $UNPRIVPORT #echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG2" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG2 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG2 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG2 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG2 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG2 $UNPRIVPORT #echo " Permitindo output de ftp, ssh, pop-3 e telnet para $HOSTSEG3" #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp -d $HOSTSEG3 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ftp-data -d $HOSTSEG3 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP ssh -d $HOSTSEG3 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP pop-3 -d $HOSTSEG3 $UNPRIVPORTS #/sbin/ipchains -A output -j ACCEPT -i $EXTIF -p tcp -s $EXTIP telnet -d $HOSTSEG3 $UNPRIVPORT #-------------------------------------------------------------------- # Rejeicoes especificas de output (saida) #-------------------------------------------------------------------- # Essas regras rejeitam trafico especifico que voce nao quer saindo # da sua rede. #-------------------------------------------------------------------- echo " - Rejeita trafico de saida especificados." # Rejeita trafico de saida para a rede interna atarves da interface # de saida. /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN $LOGGING # Rede 2 #* /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d $INTLAN2 $LOGGING # Rejeita trafico de saida originado da rede interna atraves da interface # externa /sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN -d $UNIVERSE $LOGGING # Rede 2 #* /sbin/ipchains -A output -j REJECT -i $EXTIF -s $INTLAN2 -d $UNIVERSE $LOGGING # Filtragem dos enderecos reservados RFC1918 e IANA # # Filtra todo o trafico vindo da interface externa cujo enderecamento # seja baseado em enderecos reservados. # Para saber mais rode "whois IANA*@arin.net" e # "whois RESERVED*@arin.net". # # Reservado-1 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 0.0.0.0/8 $LOGGING # Reservado-9 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 1.0.0.0/8 $LOGGING # Reservado-10 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 10.0.0.0/8 $LOGGING # Reservado-23 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 23.0.0.0/8 $LOGGING # Reservado-31 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 31.0.0.0/8 $LOGGING # Reservado-7 (65.0.0.0 - 95.255.255.255) # # 65.0.0.0 - 65.255.255.255 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 65.0.0.0/8 $LOGGING # 66.0.0.0 - 67.255.255.255 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 66.0.0.0/7 $LOGGING # 68.0.0.0 - 71.255.255.255 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 68.0.0.0/6 $LOGGING # 72.0.0.0 - 79.55.255.255 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 72.0.0/5 $LOGGING # 80.0.0.0 - 95.255.255.255 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 80.0.0.0/4 $LOGGING # Reservado-3 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.0.0.0/16 $LOGGING # BLACKHOLE3 #/sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.9.64.26/32 $LOGGING # Inclui NET-TEST-B /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 128.66.0.0/12 $LOGGING # IANA-BBLK-RESERVED e RFC1918 (172.19-31.0.0) /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 172.16.0.0/12 $LOGGING # Reservado-4 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 191.255.0.0/16 $LOGGING # ROOT-NS-LAB - 192.0.0.0/24 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.0.0/24 $LOGGING # NET-ROOTS-NS-LIVE - 192.0.1.0/24 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.1.0/24 $LOGGING # NET-TEST - 192.0.2.0/24 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.0.2.0/24 $LOGGING # RFC1918 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 192.168.0.0/16 $LOGGING # Reservado-13 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 197.0.0.0/8 $LOGGING # Reservado-14 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 201.0.0.0/8 $LOGGING # Reservado-5 /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 223.255.255.0/24 $LOGGING # Para uso futuro das classes E e F : /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 240.0.0.0/5 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -s $UNIVERSE -d 248.0.0.0/5 $LOGGING # Samba e CIFS. Rejeita trafico Samba e CIFS de maquinas externas. # # NUNCA habilite trafico SMB/CIFS pela internet a nao ser que tenha # absoluta certeza do que esta fazendo. Se voce realmente precisa # dessa funcionalidade use um IP seguro ou sistema VPN. # # Portas: 137 TCP/UDP (NetBIOS name service) # 138 UDP (NetBIOS datagram service) - TCP filtrado por seguranca # 139 TCP (NetBIOS session service) - UDP filtrado por seguranca # 445 TCP/UDP (MS CIFS no Windows 2000) echo " - Rejeitando trafico TCP/UDP para Samba na interface externa." /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 137 /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 137 /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 138 /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 138 /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 139 /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 139 /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 445 /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 445 /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 137 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 137 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 138 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 138 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 139 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 139 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 445 -d $UNIVERSE /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 445 -d $UNIVERSE # Filtrando todo o trafico de saida que e declarado inseguro ou de alguma # maquina interna que possa estar infectada com algum cavalo de troia (Trojan). # # RPC. Usado para NFS ou outro mecanismo inseguro # /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE sunrpc $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP sunrpc -d $UNIVERSE $LOGGING # Mountd - Usado para NFS # /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 635 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 635 -d $UNIVERSE $LOGGING # PPTP - Bloco nao autorizado de saida a VPNs # /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1723 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1723 $LOGGING # Winsock remoto - Bloqueia maquinas Windows internas de realizar operacoes estranhas. # /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 1745 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 1745 $LOGGING # NFS - Bloqueia NFS devido a falta de seguranca # /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 2049 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 2049 -d $UNIVERSE $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 2049 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 2049 -d $UNIVERSE $LOGGING # Software PcAnywhere - Bloqueia sessoes de saida remota nao autorizadas # /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5631 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5631 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 5632 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE 5632 $LOGGING # Xwindows - Bloqueia sessoes Xwindows nao autorizadas ou inseguras # # Veja a parte de variaveis acima para intervalo de portas (6000:6007 padrao) # O X pode usar mais portas que apenas o intervalo de 6000 a 6007. # /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE $XWINDOWS_PORTS $LOGGING # VPNs de IPs seguros - Bloqueia VPNs nao autorizadas /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 500 -d $UNIVERSE/0 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 500 $LOGGING # MySQL - Bloqueia sessoes nao autorizadas de SQL /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3306 -d $UNIVERSE/0 $LOGGING # EggDrop IRC - Bloqueia bots nao autorizados /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 3456 -d $UNIVERSE/0 $LOGGING # Bloqueia as portas de rede conhecidas para Torjans. # # O protocolo TCP/IP pode usar portas altas aleatoriamente.Por isso, o filtro # abaixo nao garante que voce nao tenha uma maquina interna infectada. Essa lista nao e # completa mas possui as portas mais comuns. # # Consulte http://www.simovits.com/sve/nyhetsarkiv/1999/nyheter9902.html # para uma lista completa. # NetBus. /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12345 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE 12346 $LOGGING # NetBus Pro. /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 20034 $LOGGING # BackOrofice /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0 31337 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP -d $UNIVERSE/0 31338 $LOGGING # Win Crash Trojan. /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 5742 $LOGGING # Socket De Troye. /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 30303 $LOGGING # Cavalo de Troia desconhecido (Master's Paradise [CHR]) /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP -d $UNIVERSE/0 40421 $LOGGING # Trinoo UDP flooder - Essa porta pode mudar com o tempo /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 27665 -d $UNIVERSE/0 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 27444 -d $UNIVERSE/0 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 31335 -d $UNIVERSE/0 $LOGGING # Shaft distributed flooder - Essa porta pode mudar com o tempo /sbin/ipchains -A output -j REJECT -i $EXTIF -p tcp -s $EXTIP 20432 -d $UNIVERSE/0 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 18753 -d $UNIVERSE/0 $LOGGING /sbin/ipchains -A output -j REJECT -i $EXTIF -p udp -s $EXTIP 20433 -d $UNIVERSE/0 $LOGGING #-------------------------------------------------------------------- # Permite todas as portas altas de retornar trafico. # echo " - Habilitando todo o trafico de saida REPLY (TCP/UDP) nas portas altas." /sbin/ipchains -A output -j ACCEPT -p tcp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE /sbin/ipchains -A output -j ACCEPT -p udp -s $EXTIP $UNPRIVPORTS -d $UNIVERSE #-------------------------------------------------------------------- # Capturar todas as regras #-------------------------------------------------------------------- echo " - Output final, capturar todas as regras." # Qualquer outro tipo de saida sera negada e logada. Essa regra # deve capturar tudo inclusive Samba que ainda nao foi bloqueado. # /sbin/ipchains -A output -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING #******************************************************************** # Regras de encaminhamento (Forwarding) #******************************************************************** # echo "----------------------------------------------------------------------" echo "Regras de Forwarding :" #------------------------------------------------------------------------ # Habilita forwarding e masquerading de TCP/IP originario da rede interna #------------------------------------------------------------------------ # Usuarios de Diald : # # Essa regra sera necessaria para permitir que a interface SLIP s10 # receba trafico quando estiver subindo a s10. # #/sbin/ipchains -A forward -j MASQ -i sl0 -s $INTLAN -d $UNIVERSE/0 #---------------------------------------------------------------------- # Port Forwarding #---------------------------------------------------------------------- # Port forwarding permite o direcionamento de trafico externo para uma # maquina interna mascarada. Um uso disso seria usuarios externos # acessando um servidor web atras de uma mascara. # # Para usar PORTFW voce precisa descomentar e editar a seccao $HOSTSEG # acima. # # Consulte o howto de IP-MASQUERADING para detalhes sobre Port Forwarding. # # Nao utilizar portas maiores que 1023 para redirecionamento. # #-------------------------------------------------------------------- #echo " Habilitando Port Forwarding nos hosts internos." #/usr/sbin/ipmasqadm portfw -f #echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP1" #/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP1 22 # #echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP2" #/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP2 22 # #echo " Redirecionando trafico SSH na porta 26 para $PORTFWIP3" #/usr/sbin/ipmasqadm portfw -a -P tcp -L $EXTIP 26 -R $PORTFWIP3 22 #-------------------------------------------------------------------- # Habilita forwarding e masquerading TCP/IP a partir da rede interna #-------------------------------------------------------------------- # Habilita IP Forwarding no kernel do Linux # # Existem dois metodos para habilitar essa opcao. O primeiro e editar # o arquivo /etc/sysconfig/network e alterar a linha FORWARD_IPV4 para # FORWARD_IPV4=true # # O segundo pode ser executado a qualquer momento. # Basta alterar o arquivo /proc/sys/net/ipv4/ip_forward atraves # do comando abaixo # echo " - Habilitando IP forwarding." echo "1" > /proc/sys/net/ipv4/ip_forward # Masquerade da rede interna 1 na interface local para internet. # echo " - Habilitando IP Masquerading na rede interna 1 para internet." /sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN -d $UNIVERSE # Masquerade da rede interna 2 na interface local para internet. # echo " - Habilitando IP Masquerading na rede interna 2 para internet." /sbin/ipchains -A forward -j MASQ -i $EXTIF -s $INTLAN2 -d $UNIVERSE # Masquerading da Rede interna 1 para a Rede interna 2 # echo " Habilitando IP Masquerading da Rede Interna 1 para a Rede Interna 2" /sbin/ipchains -A forward -j MASQ -i $INTLAN2 -s $INTLAN -d $INTLAN2 # Masquerading da Rede interna 2 para a Rede interna 1 # echo " Habilitando IP Masquerading da Rede Interna 2 para a Rede Interna 1" /sbin/ipchains -A forward -j MASQ -i $INTLAN -s $INTLAN2 -d $INTLAN # Habilitando "Always Defrag" para sistemas Masqueraded # echo " - Habilitando IP Always Defrag para a rede interna." echo "1" > /proc/sys/net/ipv4/ip_always_defrag # Desabilitando o patch LooseUDP que alguns jogos via internet usam. # # echo " - Desabilitando o patch LooseUDP por seguranca." echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose # Capturar todas as regras, qualquer outro tipo de forwarding e negado. # /sbin/ipchains -A forward -j REJECT -s $UNIVERSE -d $UNIVERSE $LOGGING # Final # echo "----------------------------------------------------------------------" echo -e "IPCHAINS Firewall $VERSAO $ULTALT implementado.\n\n"