+ Responder ao Tópico



  1. #1

    Padrão Como começar um firewall no Ubuntu Server 8.10

    Olá pessoal,

    sou novo por aki e estou precisando de ajuda. Tenho o seguinte problemas nas mão, preciso criar um firewall para um escritorio aki na minha cidade, tenho um pequeno conhecimento sobre linux, iptables e sobre alguns técnicas de segurança, tudo na teoria mais na pratica eu não sei quase nada.

    Gostaria de saber qual o local especifico dos diretorios do ubuntu server eu deveria criar o "scrip" do meu firewall.

    Muito obrigado pela atenção desde já... até mais.
    Última edição por Magal; 19-09-2009 às 22:38.

  2. #2

    Padrão

    Voce pode criar o script de firewall em qualquer diretorio.
    Eu particularmente gosto de trabalhar da seguinte maneira. Configuro as politicas, e regras básicas (tudo no prompt). Feito isso, dou um iptables-save > /etc/firewall e depois, vou comentando novas regras que vou adicionando. Feito isso, coloco o script de firewall na inicialização do linux (geralmente no /etc/rc.d/rc.local ou no /etc/init.d/boot.local (varia de acordo com a distro)) com o seguinte comando: iptables-restore /etc/firewall

    []'s,
    Renato

  3. #3

    Padrão

    Dedao,
    é seguite, tenho um script de um firewall para iniciantes q baixei na net, segui o tutorial e coloquei nos diretorios correspondentes mais nao roda, da um erro. Acho que esse erro ocorre por causa dessas variaveis (
    IPTABLES_RULES=”/etc/default/iptables” (o que devo colocar no default)
    SAVE_RESTORE_OPTIONS=”-c”
    ...
    Segue o Script:
    #!/bin/bash
    # V 1.0
    # Variaveis.

    . /lib/lsb/init-functions
    IPTABLES=”/sbin/iptables”
    IPTABLES_SAVE=”/sbin/iptables-save”
    IPTABLES_RESTORE=”/sbin/iptables-restore”
    IPTABLES_RULES=”/etc/default/iptables” (o que devo colocar no default)
    SAVE_RESTORE_OPTIONS=”-c”

    fillbasicrules()
    {
    ${IPTABLES} -F
    ${IPTABLES} -X
    ${IPTABLES} -P INPUT DROP
    ${IPTABLES} -P FORWARD DROP
    ${IPTABLES} -P OUTPUT DROP
    ${IPTABLES} -N Ubuntu-Firewall-1-INPUT
    ${IPTABLES} -A INPUT -j Ubuntu-Firewall-1-INPUT
    ${IPTABLES} -A FORWARD -j Ubuntu-Firewall-1-INPUT
    ${IPTABLES} -A OUTPUT -j ACCEPT
    ${IPTABLES} -A Ubuntu-Firewall-1-INPUT -i lo -j ACCEPT
    ${IPTABLES} -A Ubuntu-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    ${IPTABLES} -A Ubuntu-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
    ${IPTABLES} -A Ubuntu-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
    }

    checkrules()
    {
    if [ ! -f ${IPTABLES_RULES} ]; then
    echo -n “There is no rules configured, can I suggest some (y/n) [y]?”
    read input
    if [ -z $input ] || [ “$input” == “y” ] || [ “$input” == “yes” ] || [ “$input” == “Y” ] || [ “$input” == “YES” ]; then
    fillbasicrules
    save
    else
    echo “Not starting iptables. First create some rules then run”
    echo “\”/etc/init.d/iptables save\”"
    return 1
    fi
    fi
    }

    save()
    {
    ${IPTABLES_SAVE} ${SAVE_RESTORE_OPTIONS} > ${IPTABLES_RULES}
    return $?
    }

    start()
    {
    checkrules || return 1
    ${IPTABLES_RESTORE} ${SAVE_RESTORE_OPTIONS} < ${IPTABLES_RULES}
    return $?
    }

    stop()
    {
    for table in `cat /proc/net/ip_tables_names`; do
    ${IPTABLES} -F -t $table
    ${IPTABLES} -X -t $table
    if [ $table == nat ]; then
    ${IPTABLES} -t $table -P PREROUTING ACCEPT
    ${IPTABLES} -t $table -P POSTROUTING ACCEPT
    ${IPTABLES} -t $table -P OUTPUT ACCEPT
    elif [ $table == mangle ]; then
    ${IPTABLES} -t $table -P PREROUTING ACCEPT
    ${IPTABLES} -t $table -P INPUT ACCEPT
    ${IPTABLES} -t $table -P FORWARD ACCEPT
    ${IPTABLES} -t $table -P OUTPUT ACCEPT
    ${IPTABLES} -t $table -P POSTROUTING ACCEPT
    elif [ $table == filter ]; then
    ${IPTABLES} -t $table -P INPUT ACCEPT
    ${IPTABLES} -t $table -P FORWARD ACCEPT
    ${IPTABLES} -t $table -P OUTPUT ACCEPT
    fi
    done
    }

    restart()
    {
    for table in `cat /proc/net/ip_tables_names`; do
    ${IPTABLES} -F -t $table
    ${IPTABLES} -X -t $table
    done
    start
    }

    case “$1” in

    save)
    echo -n “Saving iptables state…”
    save
    if [ $? -eq 0 ]; then
    echo “ ok”
    else
    echo “ error!”
    fi
    ;;

    start)
    log_begin_msg “Loading iptables state and starting firewall…”
    start
    log_end_msg $?
    ;;

    stop)
    log_begin_msg “Stopping firewall…”
    stop
    log_end_msg 0
    ;;

    restart)
    log_begin_msg “Stopping firewall…”
    restart
    log_end_msg $?
    ;;

    *)
    echo “Usage: /etc/init.d/iptables {start|stop|restart|save}” >&2
    exit 1
    ;;

    esac

    exit 0

    Feche o arquivo que aparecerá a opção "salvar como" aparecerá uma janelinha coloque o nome digitando "iptables" sem aspas é claro. E salve o arquivo.
    Pode verificar que ele está em sua pasta pessoal, home.
    Agora abra um terminal qualquer e digite: (OBS: Para colar o comando num terminal basta acionar CTRL+C e clicar no terminal e acionar SHIFT+INSERT que colará)
    Comandos cole um por vez na sequência correta, comando 1:

    Código:
    cd /etc/init.d/

    Comando 2:
    Código:
    sudo -s

    Comando 3:
    mv /home/usuáriox/iptables ./ (Nota o usuáriox você terá que colocar o nome do seu)

    Comando 4:

    Código:
    chown root.root iptables

    Comando 5:
    Código:
    chmod 755 iptables

    Comando 6:
    Código:
    exit

    AGORA ESTA PARTE EM COR VERDE É OPCIONAL PARA QUEM QUISER COLOCAR MAIS REGRAS EMBORA AS REGRAS DO SCRIPT ACIMA É O SUFICIENTE. Pule esta parte.
    Se você iniciar o iptables sem criar regras, o próprio script irá lhe sugerir um conjunto inicial de regras, caso queira criar seu próprio conjunto de regras, faça-o e depois salve usando o comando

    Código:
    sudo /etc/init.d/iptables start

    O conjunto de regras sugerido é suficiente para proteger seu computador pessoal, todavia para uma configuração mais avançada recomento uma leitura mais aprofundada na documentação do iptables (man iptables).

    Após a regras salvas inicie o iptables usando o comando 7

    Código:
    sudo /etc/init.d/iptables start

    Para habilitar a inicialização sempre que o computador ligar execute comando 8
    Código:
    sudo update-rc.d iptables defaults

    Pronto! Seu firewall está configurado para carregar na inicialização do computador

    Última observação:
    Esse script está muito bom, mas faz com que o NetworkManager do ubuntu deixe de funcionar. Para isto nao acontecer o script tem de ser colocado em /etc/NetworkManager/dispatcher.d/01iptables
    deste modo o NM continua a funcionar.
    Fonte de matéria:Allan Garcia


    « Última modificação: 19 de Novembro de 2007, 17:17 por ucastrobr »



  4. #4

    Padrão

    Ola SKASI.

    O legal do linux é que da para fazer a mesma coisa de várias maneiras. Eu, pessoalmente, não gosto de trabalhar com firewall criado via script. Acho que isso acaba deixando a solução mais complexa. Eu faria da seguinte forma:

    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    iptables -N Ubuntu-Firewall-1-INPUT
    iptables -A INPUT -j Ubuntu-Firewall-1-INPUT
    iptables -A FORWARD -j Ubuntu-Firewall-1-INPUT
    iptables -A OUTPUT -j ACCEPT
    iptables -A Ubuntu-Firewall-1-INPUT -i lo -j ACCEPT
    iptables -A Ubuntu-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    iptables -A Ubuntu-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
    iptables -A Ubuntu-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

    iptables-save > /etc/firewall

    e quando vc precisar restaurar, iptables-restore /etc/firewall

    Nao esqueça de colocar a linha iptables-restore /etc/firewall no seu rc.local ou boot.local

    []'s,
    Renato