+ Responder ao Tópico



  1. #1

    Padrão Regra de Firewall

    Boa noite

    sou Novato em linux e estou tentando configurar um servidor
    e estou parado na configuração do firewall.

    Bloquei tudo e quero ir liberando as portas.
    Liberei a porta ssh(22) para certas maquinas
    mas nao consigo liberar a internet para a rede local.

    Alguem pode me ajudar.

    abaixo meu arquivo firewall.
    a funcao stop deixa a internet funcionando mas a funcao start nao me deixa navegar na net

    Código :
    #!/bin/bash
     
    # Compartilhando a Internet
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "Compartilhando Internet...........................................[ OK ]"
     
    # Variáveis
    # ---------------------------------------------------------------------------------------
    iptables=/sbin/iptables
    IF_EXTERNA=eth0         # conexao com internet
    IF_INTERNA=eth1         # conexao local
    REDE_LOCAL=192.168.1.0/24     # rede Interna
    IP_ADM=192.168.1.198        # maquina para administrar servidor.
    IP_ADM_1=192.168.1.195        # maquina para administrar servidor.
    IP_ADM_2=192.168.1.196        # maquina para administrar servidor.
    echo "Inicializando variável............................................[ OK ]"
     
     
    # Módulos #
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp
    /sbin/modprobe ip_queue
    /sbin/modprobe ip_tables
    /sbin/modprobe ipt_LOG
    /sbin/modprobe ipt_MARK
    /sbin/modprobe ipt_MASQUERADE
    # /sbin/modprobe ipt_MIRROR
    /sbin/modprobe ipt_REDIRECT
    /sbin/modprobe ipt_REJECT
    /sbin/modprobe ipt_TCPMSS
    /sbin/modprobe ipt_TOS
    /sbin/modprobe ipt_limit
    /sbin/modprobe ipt_mac
    /sbin/modprobe ipt_mark
    /sbin/modprobe ipt_multiport
    /sbin/modprobe ipt_owner
    /sbin/modprobe ipt_state
    /sbin/modprobe ipt_tcpmss
    /sbin/modprobe ipt_tos
    # /sbin/modprobe ipt_unclean
    /sbin/modprobe iptable_filter
    /sbin/modprobe iptable_mangle
    /sbin/modprobe iptable_nat
     
    ###############################################################################
    ######################## Função START #########################################
    ###############################################################################
     
    firewall_start() {
    echo "Iniciando o Firewall..............................................[ OK ]"
     
    # Limpa as regras #
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -F -t mangle
    echo "Apagando as regras atuais.........................................[ OK ]"
     
    # Politicas padrao #
    iptables -t filter -P INPUT DROP  # Impede a passagem de pacotes direcionadas para a maquina firewall.
    iptables -t filter -P OUTPUT ACCEPT # Permite pacote saindo da maquina firewall
    iptables -t filter -P FORWARD DROP # Impede a passagem de pacotes
     
    iptables -t nat -P PREROUTING ACCEPT # Aceitam os pacotes para NAT
    iptables -t nat -P OUTPUT ACCEPT  # Aceitam pacotes do firewall para NAT
    iptables -t nat -P POSTROUTING ACCEPT # Aceitam pacotes que sofreram NAT
    iptables -t mangle -P PREROUTING ACCEPT # Aceitam pacotes para MANGLE
    iptables -t mangle -P OUTPUT ACCEPT # Aceitam pacotes que sofreram MANGLE
    echo "Definindo politicas padrao........................................[ OK ]"
     
    # Manter conexoes jah estabelecidas para nao parar
    iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    echo "Mantendo conexao estavel..........................................[ OK ]"
     
    # Aceita todo o trafego vindo do loopback e indo pro loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT
    echo "loopback..........................................................[ OK ]"
     
    # iptables -t nat -A POSTROUTING -o $IF_INTERNET ACCEPT
    # iptables -t nat -A PRETROUTING -o $IF_INTERNET ACCEPT
    # iptables -A INPUT -i $IF_INTERNA -s $REDE_LOCAL -j ACCEPT
    # iptables -A INPUT -i eth2 -s 172.16.0.0/24 -j ACCEPT
     
    # iptables -A INPUT -p tcp --dport 80  -j ACCEPT
    # iptables -A INPUT -p tcp --dport 443 -j ACCEPT
     
    ###############################################################################
    #                            Proteções                                        #
    ###############################################################################
     
    # Protege contra os "Ping of Death"
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 20/m -j ACCEPT
    iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 20/m -j ACCEPT
     
    # Protege contra port scanners avançados (Ex.: nmap)
    iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
     
    # Bloqueando tracertroute
    iptables -A INPUT -p udp -s 0/0 -i $IF_EXTERNA --dport 33435:33525 -j DROP
     
    # Protecoes contra ataques
    iptables -A INPUT -m state --state INVALID -j DROP
     
    #Proteção contra Syn-floods
    iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
     
    #Proteção contra ping da morte
    iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
     
    #Anulando as respostas a ICMP 8 (echo reply)
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
     
    echo "Protecoes.........................................................[ OK ]"
     
    ###############################################################################
    #             TABELA Input - Destino final a maquina firewall
    ###############################################################################
    iptables -A INPUT -p tcp --dport 80    --syn -j ACCEPT
    iptables -A INPUT -p tcp --dport 3128  --syn -j ACCEPT
     
    ###############################################################################
    #                            TABELA NAT                                       #
    ###############################################################################
     
    # PROXY TRANPARENTE
    iptables -t nat -A PREROUTING -s $REDE_LOCAL -p tcp --dport 80 -i $IF_INTERNA -j REDIRECT --to-port 3128
    echo "Deixando proxy transparente.......................................[ OK ]"
     
    # Mascaramento de rede para acesso externo #
    iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o $IF_EXTERNA -j MASQUERADE
    echo "Ativando o Mascaramento...........................................[ OK ]"
     
     
    #Bloqueia todo o resto
    iptables -A INPUT -p tcp --syn -j REJECT
    iptables -A INPUT -p tcp -j REJECT
    iptables -A INPUT -p udp -j REJECT
    echo "Bloqueando todo o resto...........................................[ OK ]"
    }
     
    ###############################################################################
    ###                            Função STOP                                   ##
    ###############################################################################
     
    firewall_stop() {
     
    echo "Parando firewall e funcionando apenas com mascaramento............[ OK ]"
     
    # Limpa as regras #
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -F -t mangle
    echo "Apagando as regras atuais.........................................[ OK ]"
     
    # Politicas padrao #
     
    iptables -t filter -P INPUT ACCEPT
    iptables -t filter -P OUTPUT ACCEPT
    iptables -t filter -P FORWARD ACCEPT
    iptables -t nat -P PREROUTING ACCEPT
    iptables -t nat -P OUTPUT ACCEPT
    iptables -t nat -P POSTROUTING ACCEPT
    iptables -t mangle -P PREROUTING ACCEPT
    iptables -t mangle -P OUTPUT ACCEPT
    echo "Definindo politicas padrao........................................[ OK ]"
     
     
    # Manter conexoes jah estabelecidas para nao parar
    iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
    echo "Mantendo conexao estavel..........................................[ OK ]"
     
    # Aceita todo o trafego vindo do loopback e indo pro loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT
    echo "loopback..........................................................[ OK ]"
     
    ###############################################################################
    #########                   TABELA NAT                               #########
    ###############################################################################
     
     
    # Mascaramento de rede para acesso externo #
    iptables -t nat -A POSTROUTING -s $REDE_LOCAL -o IF_EXTERNA -j MASQUERADE
    echo "Ativando o Mascaramento...........................................[ OK ]"
     
    # Efetivando o PROXY TRANPARENTE
    iptables -t nat -A PREROUTING -s $REDE_LOCAL -p tcp --dport 80 -i $IF_INTERNA -j REDIRECT --to-port 3128
    echo "Deixando proxy transparente.......................................[ OK ]"
     
    echo "Firewall desabilitado..............[ << ATENÇÂO >> FIREWALL DESATIVADO ]"
    }
    Última edição por osmano807; 28-05-2010 às 15:47. Razão: botando tag code

  2. #2

    Padrão Re: Regra de Firewall

    amigo, qual S.O vc esta usando?


    reveja suas regras de drop

    no inicio do comando start, vc altera a politica padrao:
    dropa todos os pacotes de entrada
    dropa todos os pacotes de saida
    dropa todos os pacotes que passar pelo firewall...

    vc esta atras do firewall...
    ao fazer uma requisicao... seu pacote ira entrar no firewal... verifique se tem alguma regra que permita isso?
    se sim... entao seu pacote ira passar pelo firewall... verifique se tem alguma regra que permita isso?
    se sim... entao... veja se vc esta permitindo a saida de algum pacote do firewall (output)?

    reveja tbm suas regras de nat.

    da uma olhadinha no seguinte topico:
    https://under-linux.org/f134/servido...cional-132192/
    ira achar um firewall funcional... leia-o... tente intende-lo... modifique-o as suas necessidades

  3. #3

    Padrão Re: Regra de Firewall

    Bom Dia,

    Cara suas regras de Firewall, estão bastante complicadas... tem lugar que vc libera coisas já liberadas e etc...

    # iptables -A INPUT -i $IF_INTERNA -s $REDE_LOCAL -j ACCEPT

    essa regra esta comentada e a mesma precisa estar aplicada...

    comece por aew.... e vai postando o que for acontecendo...

    Att
    Tiago Iahn

  4. #4

    Padrão Re: Regra de Firewall

    Obrigado a todos.

    Tiago obrigado novamente,

    como eu disse eu sou novato. estou montando um servidor para aprendizado.

    Realmente ativando a linha a internet funciona. mas fiquei na duvida se as portas ficam abertas para acesso externo.

    Minha intencao é bloquear tudo. e depois ir liberando para nao correr o risco de deixar algo aberto, principalmente para tentativas externas.

    Eu acredito que essa ideia seria a mais facil de controlar para nao ser invadido.

    Em termo de seguranca, no meu pensamento, é melhor do que liberar tudo e depois ir bloqueando, como consequencia o código fica maior.

    se vc puder me esclarecer minha duvida, pois nao estou encontrando nos tutoriais pela net.

    att.
    Adilio Moreira

  5. #5

    Padrão Re: Regra de Firewall

    Daew cara....

    Concordo com você quando fala em Fechar tudo e ir liberando o necessário... Abaixo segue um modelo de Firewall que utilizo, mandei apenas a linhas padrões, como retirei outras, posso ter tirado coisas a mais... mas pelo que conferi deve funcionar... tem um certo grau de comentários o que faz cada linha.....

    Precisando, vai postando que a galera aqui ajuda....

    Valew... e até mais...

    Att
    Tiago Iahn


    Código :
    #!/bin/sh
    #
    # 14/02/2008
    # Tiago Iahn
    #
    #
    echo "Definindo Redes"
     
    #definicao da REDE
    REDE=192.168.1.0/24     #range da rede interna
    INT=eth1                #placa de rede interna
    EXT=eth0                #placa de rede externa internet
    SSH=22                  #porta do SSH
     
    # limpa regras
    echo "Limpando Regras Existente"
    sleep 0.3
    iptables -t nat -F
    iptables -F
     
    # Modulos para Mascaramento de IP:
    echo "Carregando Modulos"
    sleep 0.3
    modprobe ip_tables
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_conntrack_irc
    modprobe iptable_nat
    modprobe ip_nat_ftp
    modprobe ipt_multiport
     
    # fecha as regras padroes
    echo "Fechando totalmente o Firewall"
    sleep 0.3
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
     
    # permite repasse entre as placas de rede
    echo "Permitindo repasse entre as placas de rede"
    echo "1" > /proc/sys/net/ipv4/ip_forward
     
     
    # permite tudo para o proprio firewall
    echo "Habilitando acessos para o proprio Firewall"
    sleep 0.3
    iptables -A INPUT -i io -j ACCEPT
    iptables -A FORWARD -i io -j ACCEPT
     
    # aceita conexoes da REDE interna
    echo "Habilitando acessos da rede interna"
    sleep 0.3
    iptables -A INPUT -i $INT -j ACCEPT
     
    # Aceita conexoes externas realizadas com origem interna
    echo "Habilitando modo StateFull"
    sleep 0.3
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
     
    # Aceita conexoes SSH externas
    echo "Habilitando acesso SSH externo"
    sleep 0.3
    iptables -A INPUT -i $EXT -p tcp --dport $SSH -j ACCEPT
    iptables -A INPUT -i $EXT -p udp --dport $SSH -j ACCEPT
     
    # aceita conexoes DNS externas
    #echo "Habilitando acesso DNS externo"
    #sleep 0.3
    iptables -A INPUT -i $EXT -p tcp --dport 53 -j ACCEPT
    iptables -A INPUT -i $EXT -p udp --dport 53 -j ACCEPT
     
    # compartilha internet com REDE interna
    echo "Habilitando Mascaramento da rede interna"
    sleep 0.3
    iptables -t nat -A POSTROUTING -s $REDE -o $EXT -j MASQUERADE
     
    #Bloqueio de MSN
    /sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 1863 -j REDIRECT --to-port 3128
     
    # redireciona acessos via porta 80 para 3128 - proxy transparente
    #echo "Habilitando Proxy Tranparente"
    #sleep 0.3
    iptables -t nat -A PREROUTING -i $INT -s $REDE -p tcp --dport 80 -j REDIRECT --to-port 3128
     
    # negar IP Spoffing com os enderecos locais
    echo "Bloqueando Spoffing"
    sleep 0.3
    #iptables -A FORWARD -i $EXT -s $REDE -j DROP
    #iptables -A FORWARD -i $EXT -s $REDE -j LOG --log-level DEBUG --log-prefix "INPUT packet-spoffing denied:"
     
     
    # Protege contra ping da morte
    #success ; echo " Bloqueando ping da morte"
    #sleep 0.3
    #iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

  6. #6

    Padrão Re: Regra de Firewall

    Caro Tiago

    obrigado pela dica

    Acrescentei dois comandos para impedir acesso SSH da rede interna permitir somente para a maquina administradora.

    Queria saber se eh essa logica que devo utilizar para bloquear e liberar so para alguns ?

    Outra pergunta eh que tipo de regras deve ficar no firewall e que tipo deve ficar no SQUID ??

    Obrigado pela ajuda.

    echo "Desabilitando SSH interno"
    iptables -A INPUT -p tcp -s $IP_ADM --dport $port_SSH -i $IF_INTERNA -j ACCEPT
    # Aceita conexao da maquina administradora

    iptables -A INPUT -p tcp --dport $port_SSH -i $IF_INTERNA -j REJECT
    # recusa todas as outras conexoes SSH

    echo "Habilitando acessos da rede interna"
    sleep 0.3
    iptables -A INPUT -i $IF_INTERNA -j ACCEPT

  7. #7

    Padrão Re: Regra de Firewall

    Bom dia,

    Esta regra que você mencionou:

    echo "Habilitando acessos da rede interna"
    sleep 0.3
    iptables -A INPUT -i $IF_INTERNA -j ACCEPT

    Ela libera todas as entradas vindas da rede interna, geralmente ela é válida para a maioria das empresas, mas depende da sua infraestrutura e etc...

    Eu gosto de utilizar este esquema que mencionei... bloqueia tudo e vai liberando aos poucos a medida em que surgem as necessidades...

    E sobre o questionamento firewall e Squid... não entendi bem... bloqueio de sites vc deve fazer no Squid e o resto via Firewall...

    Qualquer coisa explique melhor...


    té mais... valew...

    Att
    Tiago Iahn

  8. #8

    Padrão Re: Regra de Firewall

    So queria postar aqui meu agradecimento pelas dicas.
    tudo parti do entimento para poder funcionar.

    obrigado.

    adilio moreira