+ Responder ao Tópico



  1. #1
    fisiconuclear18
    Visitante

    Padrão Alguem poderia olhar esse script de firewall?

    Pessoal, encontrei esse script de firewall na internet e gostaria de saber se ele irá funcionar de acordo, tem algumas linhas que nao entendi, meio complicado.Aparenta que ele parte do presuposto de bloquear tudo e depois de liberar os serviços.
    Quem puder dar uma olhada eu agradeço...
    Abraços
    André


    === meu script para montar meu firewall ===
    #!/bin/bash
    # PAREDAO - Script simples para habilitar firewall para computador
    # com acesso via PPP a internet.
    # de Pedro, 25-12-2003 18:23

    . /etc/cores.conf

    # Minha rede interna...
    REDE="10.0.0.0/8"
    # Interface (Placa de rede) da minha rede interna...
    IFACE="eth0"

    msg(){
    if [ "$1" == "LOG" ]; then
    logger -p auth.debug -t paredao "$2"
    echo -e $VERDE"$2"$SEMCOR
    else
    echo -e $CIANO"$2"$SEMCOR
    fi
    }

    carregar() {
    AUX=`lsmod | grep $1`
    if [ "$AUX" = "" ]; then
    echo -e $CIANO"Carregando modulo $1..."$SEMCOR
    $MODPROBE $1
    fi
    }


    # Definir o PATH de busca padrao para o script...
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin

    AUX=`type -p modprobe`
    if [ "$AUX" == "" ]; then
    msg "LOG" "ERRO: modprobe nao foi encontrado."
    exit 0
    else
    MODPROBE=$AUX
    fi

    # Carregar modulo do kernel para suportar coneccoes FTP...
    carregar "ip_conntrack_ftp"


    # Verificar se o iptables se encontra no recinto...
    AUX=`type -p iptables`
    if [ "$AUX" == "" ]; then
    msg "LOG" "ERRO: iptables nao foi encontrado."
    exit 1
    else
    IPTABLES=$AUX
    fi

    # Comecar com uma mensagem para informar que estamos vivos !
    msg "LOG" "Inicializando o firewal..."

    # Iniciando o servico sujo, inicializado o firewall...
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -X
    $IPTABLES -t nat -X

    # Definindo politica padrão de DITADURA ! ninguém passa !
    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD DROP

    # Informar mais coisas...
    msg "LOG" "Ajustando opcoes do kernel..."

    # Ligando protecao do kernel para IP spoof...
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
    # Ajustando configuracao de TCP timestamps...
    echo 1 > /proc/sys/net/ipv4/tcp_timestamps 2> /dev/null
    # Habilitando protecao TCP SYN Cookie...
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 2> /dev/null
    # Habilitar log de marcianos...
    echo 1 > /proc/sys/net/ipv4/conf/all/log_martians 2> /dev/null
    echo 1 > /proc/sys/net/ipv4/conf/default/log_martians 2> /dev/null
    # Habilitando IP Dinamico...
    echo "1" > /proc/sys/net/ipv4/ip_dynaddr

    # Habilitando trabalho normal do Loopback...
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT

    # Relatar os progressos...
    msg "LOG" "Definindo as regras do firewall, se segurem !"

    # Criar chains para lidar com o trabalho sujo...
    # Regra para os pacotes descartados...
    $IPTABLES -N descartado2
    $IPTABLES -A descartado2 -j LOG --log-prefix "DESCARTADO " --log-level debug
    --log-ip-options --log-tcp-options --log-tcp-sequence
    $IPTABLES -A descartado2 -j DROP
    $IPTABLES -N descartado
    $IPTABLES -A descartado -j descartado2

    # Regra para pacotes rejeitados oficialmente...
    $IPTABLES -N rejeitado2
    $IPTABLES -A rejeitado2 -p tcp -j REJECT --reject-with tcp-reset
    $IPTABLES -A rejeitado2 -p udp -j REJECT --reject-with icmp-port-unreachable
    $IPTABLES -A rejeitado2 -j DROP
    $IPTABLES -N rejeitado
    $IPTABLES -A rejeitado -j rejeitado2

    # Regra para pacotes abortados...
    $IPTABLES -N abortado2
    $IPTABLES -A abortado2 -j LOG --log-prefix "ABORTADO " --log-level debug
    --log-ip-options --log-tcp-options --log-tcp-sequence
    $IPTABLES -A abortado2 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -N abortado
    $IPTABLES -A abortado -m limit --limit 1/second --limit-burst 10 -j abortado2
    $IPTABLES -A abortado -m limit --limit 2/minute --limit-burst 1 -j LOG
    --log-prefix "LIMITADO " --log-level debug

    # Criar chains para trabalhar com diferentes protocolos...
    $IPTABLES -N PACOTES_TCP
    $IPTABLES -N PACOTES_TCP_ENTRADA
    $IPTABLES -N PACOTES_TCP_SAIDA
    $IPTABLES -N PACOTES_UDP
    $IPTABLES -N PACOTES_UDP_ENTRADA
    $IPTABLES -N PACOTES_UDP_SAIDA
    $IPTABLES -N PACOTES_ICMP

    #################################################
    # Criar conteudo das regras do filtro PACOTES_TCP
    # Relatar coneccoes abortadas...
    $IPTABLES -A PACOTES_TCP -m state --state ESTABLISHED,RELATED -p tcp
    --tcp-flags RST RST -j abortado
    # Permitir o transito de pacotes de coneccoes estabelecidas primeiro pelo meu
    computador...
    $IPTABLES -A PACOTES_TCP -m state --state ESTABLISHED,RELATED -p tcp -j ACCEPT

    #########################################################
    # Criar conteudo das regras do filtro PACOTES_TCP_ENTRADA
    # Chama a regra basica, oque não passar vai pro inferno... (DROP)
    # Permitir comunicação com a rede interna na rede ip definida em REDE...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -s $REDE -i $IFACE -j ACCEPT

    # POP3: Permitir handshaking com o servidor POP remoto...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 110:110 -m

    state --state NEW -j ACCEPT
    # ICQ: Permitir comunicação TCP com servidor/cliente de ICQ...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 4000:4000
    -m state --state NEW -j ACCEPT
    # eMULE: Permitir comunicação de servidor eMULE...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 4010:4010
    -m state --state NEW -j ACCEPT
    # MSNMESSENGER: Permitir pacotes para iniciar comunicação com
    cliente/servidor MsnMessenger...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --sport 1024:65535 --dport 1863:1863
    -m state --state NEW -j ACCEPT

    # Mandar pro inferno portscans em tcp...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags ALL FIN,URG,PSH -j
    abortado
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,RST SYN,RST -j
    abortado
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,FIN SYN,FIN -j
    abortado
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-option 64 -j abortado
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-option 128 -j abortado
    # Evitar portscanners ocultos...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp --tcp-flags SYN,ACK,FIN,RST
    SYN,ACK,FIN -m limit --limit 1/s -j ACCEPT
    # Evitar ataques SYN-FLOOD
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -m limit --limit 1/s -j ACCEPT
    # Regras adicionais para entrads TCP devem vir aqui...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -j PACOTES_TCP
    # Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
    inferno...
    $IPTABLES -A PACOTES_TCP_ENTRADA -p tcp -j descartado

    #######################################################
    # Criar conteudo das regras do filtro PACOTES_TCP_SAIDA
    # Permitir comunicação com a rede interna na rede ip definida em REDE...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp -d $REDE -o $IFACE -j ACCEPT

    # POP3: Permitir coneccao da maquina atual para a porta 110 de um servidor
    remoto...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 110:110 -m
    state --state NEW -j ACCEPT
    # SMTP: Permitir coneccao da maquina atual para a porta 25 de um servidor
    remoto...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 25:25 -m state
    --state NEW -j ACCEPT
    # DNS: Permitir a troca de informacoes entre a maquina atual e o servidor de
    DNS...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 53:53 -m state
    --state NEW -j ACCEPT
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
    # HTTP: Permitir que a maquina local se comunique com um servidor remoto na
    porta tcp:80...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 80:8085 -m
    state --state NEW -j ACCEPT
    # HTTPS: Permitir que a maquina local se comunique com um servidor remoto
    SEGURO na porta tcp:443...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 443:443 -m
    state --state NEW -j ACCEPT
    # FTP: Permitir que a maquina local se comunique com um servidor remoto na
    porta tcp:21...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 0:65535 --dport 21:21 -m state
    --state NEW -j ACCEPT
    # ICQ: Permitir saida de dados via TCP para comunicação com cliente/servidor
    de ICQ...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 5190:5190 -m

    state --state NEW -j ACCEPT
    # eMULE: Permitir comunicação/saida para cliente/servidor eMULE...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 4010:4010 --dport 4000:4900 -m
    state --state NEW -j ACCEPT
    # MSGMESSENGER:
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp --sport 1024:65535 --dport 1863:1863 -m

    state --state NEW -j ACCEPT
    # Aplicar regra generica para pacotes TCP que saem...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp -j PACOTES_TCP
    # Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
    inferno...
    $IPTABLES -A PACOTES_TCP_SAIDA -p tcp -j descartado


    #################################################
    # Criar conteudo das regras do filtro PACOTES_UDP
    # Permitir o transito de pacotes de coneccoes estabelecidas primeiro pelo meu
    computador...
    $IPTABLES -A PACOTES_UDP -m state --state ESTABLISHED,RELATED -p udp -j ACCEPT

    #########################################################
    # Criar conteudo das regras do filtro PACOTES_UDP_ENTRADA
    # Chama a regra basica, oque não passar vai pro inferno... (DROP)
    # Regras adicionais para entrads UPD devem vir aqui...
    # Permitir comunicação com a rede interna na rede ip definida em REDE...
    $IPTABLES -A PACOTES_UDP_ENTRADA -p udp -s $REDE -i $IFACE -j ACCEPT

    # ICQ: Permitir inicio de comunicação com servidor remoto ICQ...
    $IPTABLES -A PACOTES_UDP_ENTRADA -p udp --sport 0:65535 --dport 4000:4000 -j
    ACCEPT
    # eMULE: Permitir comunicação UDP com servidor/cliente eMULE...
    $IPTABLES -A PACOTES_UDP_ENTRADA -p udp --sport 1024:65535 --dport 4020:4020
    -j ACCEPT
    # Aplicacao de regras genericas para pacotes UDP...
    $IPTABLES -A PACOTES_UDP_ENTRADA -p udp -j PACOTES_UDP
    # Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
    inferno...
    $IPTABLES -A PACOTES_UDP_ENTRADA -p udp -j descartado

    #######################################################
    # Criar conteudo das regras do filtro PACOTES_UDP_SAIDA
    # Permitir comunicação com a rede interna na rede ip definida em REDE...
    $IPTABLES -A PACOTES_UDP_SAIDA -p udp -d $REDE -o $IFACE -j ACCEPT

    $IPTABLES -A PACOTES_UDP_SAIDA -p udp -j PACOTES_UDP
    # DNS: Permitir a troca de informacoes entre a maquina atual e o servidor de
    DNS...
    $IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
    # eMULE: Permitir comunicação de saida via UDP para protocolo eMULE...
    $IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 4020:4020 --dport 1024:65535 -m

    state --state NEW -j ACCEPT
    # HTTPS: Permitir que a maquina local se comunique com um servidor remoto
    SEGURO na porta udp:443...
    $IPTABLES -A PACOTES_UDP_SAIDA -p udp --sport 0:65535 --dport 443:443 -m
    state --state NEW -j ACCEPT
    # Por fim qualquer pacote que nao se encaixa na regras previas é mandado pro
    inferno...
    $IPTABLES -A PACOTES_UDP_SAIDA -p udp -j descartado


    #####################################################
    # Criar conteudo das regras do filtro PACOTES_ICMP...
    $IPTABLES -A PACOTES_ICMP -p icmp --icmp-type destination-unreachable -j
    ACCEPT
    $IPTABLES -A PACOTES_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
    $IPTABLES -A PACOTES_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT
    # Evitar os pings da morte...
    $IPTABLES -A PACOTES_ICMP -p icmp --icmp-type echo-request -m limit --limit
    1/s -j ACCEPT
    $IPTABLES -A PACOTES_ICMP -p icmp -s $REDE -j ACCEPT

    # MASQUERADE: Destino para pacotes descartados na tabela NAT...
    $IPTABLES -t nat -N descart-nat
    $IPTABLES -t nat -A descart-nat -j LOG --log-prefix "DESCARTADO-NAT "
    --log-level debug --log-ip-options --log-tcp-options --log-tcp-sequence
    $IPTABLES -t nat -A descart-nat -j DROP
    # Todos pacotes da rede 10.0.0.* que não forem de nossa interface
    # de rede, configurada para 10.0.0.1, serão enviados pro inferno...
    $IPTABLES -t nat -A PREROUTING -s $REDE -i ! $IFACE -j descart-nat

    # Teste para o funcionamento do proxy transparente com squid...
    $IPTABLES -t nat -A PREROUTING -s $REDE -i $IFACE -p tcp --dport 80 -j
    REDIRECT --to-port 3128
    # Tentar o mesmo para comunicação via FTP...
    $IPTABLES -t nat -A PREROUTING -s $REDE -i $IFACE -p tcp --dport 21 -j
    REDIRECT --to-port 3128


    # MASQUERADE: Permitir que a rede 10.0.0.* acesse a internet sempre
    # passando por todas regras do firewall antes...
    $IPTABLES -t nat -A POSTROUTING -s $REDE -o ppp0 -j MASQUERADE
    # Habilitando o Masquerade SNAT...
    echo "1" > /proc/sys/net/ipv4/ip_forward


    # Classificar as entradas entre os chains principais...
    # Classificar pelos pacotes TCP...
    $IPTABLES -A INPUT -p tcp -j PACOTES_TCP_ENTRADA
    $IPTABLES -A OUTPUT -p tcp -j PACOTES_TCP_SAIDA

    $IPTABLES -A FORWARD -i $IFACE -j ACCEPT
    $IPTABLES -A FORWARD -p tcp -j PACOTES_TCP

    # Classificar pelos pacotes UDP...
    $IPTABLES -A INPUT -p udp -j PACOTES_UDP_ENTRADA
    $IPTABLES -A OUTPUT -p udp -j PACOTES_UDP_SAIDA
    $IPTABLES -A FORWARD -p udp -j PACOTES_UDP

    # Classificar pelos pacotes ICMP...
    $IPTABLES -A INPUT -p icmp -j PACOTES_ICMP
    $IPTABLES -A OUTPUT -p icmp -j PACOTES_ICMP
    $IPTABLES -A FORWARD -p icmp -j PACOTES_ICMP

    # TOS: Ajusta o TOS do pacote IP para Minimizar retardo no transporte...
    $IPTABLES -t mangle -A POSTROUTING -p tcp -j TOS --set-tos Minimize-Delay
    $IPTABLES -t mangle -A POSTROUTING -p udp -j TOS --set-tos Minimize-Delay


    # Relatar o fim do servico sujo...
    msg "LOG" "Configuracao do firewall finalizada..."

    === fim do meu script para montar meu firewall ===

  2. #2

    Padrão Vai Funcionar

    Aparente ele vai funcionar, tem que ver se vc precisa liberar ou até mesmo bloquear alguma porta.

    Depende para que você tb vai usar, pq ele bloquea tudo, depois libera só o necessario

  3. #3
    fisiconuclear18
    Visitante

    Padrão Alguem poderia olhar esse script de firewall?

    Interessante, no meu caso eu mudaria para eth0 e o endereço ip...
    Ele aparenta tambem ter uma linguagem shell script no caso acrdito que o script habilita um start e stop.
    Bom, irei testá-lo assim que der.S'oque gostaria de liberar a porta que o X usa.Por acaso ela é a 1009?
    Desde ja agradeço amigo...
    Um abraço

    André
    Obrigado por olhar o firewall