Substituindo Fw linux por Pfsense



  • Boa tarde pessoal….
    Abri este tópico para colher sugestões sobre uma nova empreitada: Migrar um firewall de linux para o pfsense>
    O cenário é o seguinte atualmente:
    Maquina com linux (servidor ibm com  centos 6 - 64 bits) rodando com a seguinte configuração:
    5 placas de rede - sendo 2 de links ( um principal ( com 3 ips) e outro somente para navegação ( ip unico), ambos com ips fixo) uma dmz onde fica o servidor de e-mail, a rede interna e uma conectada a um roteador wireless.
    Serviços:

    • Bind com 3 dominios cadastrados, e com pesquisa recursiva somente para a rede interna, para fora o recusrsivo esta fechado.
    • Squid3 autenticado, com usuarios e grupos de liberação no própio squid. Possui aproximadamente 60 usuários simultaneos.
    • Openvpn para conexao de roteadores cisco de filiais ( sao 3 que conectam)
    • Vpn pptpd usada para os usuarios de fora conectarem aos TS internos.
      A rede é toda Microsoft, baseada em dominío com win server 2008 como AD.

    Preciso com o pfsense:

    • assuma estas mesmas funções,
    • importar as configurações do bind e openvpn, e usuarios do squid e pptp.
    • que continue os 2 links , sendo o principal para tudo menos navegacao que é pelo link secundario.
    • se possivel fazer um faillover, se um deles cair todos os serviços passam para o que esta ativo.
    • um sistema de ids, basicamente para avisar de tentivas de invasao.

    Já estou pesquisando aqui no forum, vendo documentação e os hangouts do Luis Gustavo (1), mas ainda to meio perdido, já que é uma estrutura mais complexa do que uso normalmente com o pfsense...  :P Então qualquer dica, sugestão e colaboração são bem vindos...  :)

    (1)http://www.youtube.com/channel/UCGi66d0n5gHSLAli4Trr1Fw?feature=watch



  • @marcosjost:

    • importar as configurações do bind e openvpn, e usuarios do squid e pptp.

    Bind não tem interface grafica nativa. Você pode instalar o binario, mas vai ter que configura na mão.
    O pacote filer pode te ajudar a guardar os arquivos de configuração do backup do xml

    @marcosjost:

    • que continue os 2 links , sendo o principal para tudo menos navegacao que é pelo link secundario.
    • se possivel fazer um faillover, se um deles cair todos os serviços passam para o que esta ativo.

    melhor inverter. squid no link default e qualquer regra na lan com o gateway/failover configurado

    @marcosjost:

    • um sistema de ids, basicamente para avisar de tentivas de invasao.

    Snort. Pacote excelente no pfsense, mas tem que entender de snort para configura-lo corretamente

    @marcosjost:

    Já estou pesquisando aqui no forum, vendo documentação e os hangouts do Luis Gustavo (1)

    Excelente iniciativa.



  • @marcelloc:

    @marcosjost:

    • um sistema de ids, basicamente para avisar de tentivas de invasao.

    Snort. Pacote excelente no pfsense, mas tem que entender de snort para configura-lo corretamente

    Sem dúvida, o Snort é excelente! Mas consome muita memória e algum processamento. Esteja atento a isto.
    No fórum internacional tem dicas muito boas sobre a configuração do Snort, inclusive para novos usuários.



  • Obrigado pelas dicas até aqui….
    Quanto aos links acabei nao deixando bem claro como é:
    Link1 - Conexao dedicada de 512 Kb, usada para e-mail / dns e acessos ssh. Possui 3 ips fixos e onde estao configurados mx e dns reverso do dominio. È a mais estavel.
    Link 2 - Conexao via radio de 10 Mb, usado para navegação. Possui 1 ip fixo. Tem boa velocidade mas as vezes cai.



  • Quanto ao squid. Tenho como copiar o arquivo passwd do linux com os usuarios e senhas? e o arquivo grupos e acls tambem?
    Pois quando preciso trocar um firewall linux, normalmente copiando o squid.conf, o passwd e as pastas de acls e grupos de uma maquina para outra ( e fazendo os devidos ajustes no squid.conf) consigo migrar os usuarios, grupos e acls.
    Não sei se com o pfsense o mesmo procedimento funciona.

    Pro bind to usando como base esse topico:
    http://forum.pfsense.org/index.php/topic,52034.msg278183.html#msg278183



  • Você pode configurar qualquer coisa do squid usando o campo custom options na interface web.

    Arquivos customizados podem ser configurados usando o pacote filer, para mante-los no backup do pfsense.



  • @johnnybe:

    @marcelloc:

    @marcosjost:

    • um sistema de ids, basicamente para avisar de tentivas de invasao.

    Snort. Pacote excelente no pfsense, mas tem que entender de snort para configura-lo corretamente

    Sem dúvida, o Snort é excelente! Mas consome muita memória e algum processamento. Esteja atento a isto.
    No fórum internacional tem dicas muito boas sobre a configuração do Snort, inclusive para novos usuários.

    Ja estou dando uma pesquisada, achei um topico interesante já:
    http://forum.pfsense.org/index.php/topic,61018.0.html



  • Uma duvida….
    Na maquina atual tenho 5 placas de rede, caso precise trocar de maquina, com uma que tem 3 placas de rede. Poderei ter problemas se usar interfaces virtuais ??.... algo assim
    Agora:
    eth0 - Link 1
    eth1 - Link 2
    eth2 - rede interna ( 192.168.1.x)
    eth3 - DMz ( 192.168.10.x)
    eth4 - Conectada a um roteador wifi
    Ficaria algo como:
    eth0:1 Link1
    eth0:2 Link 2
    eth1 - rede interna
    eth2:1 - DMZ
    eth2:2 - Wifi



  • Para usar interfaces "virtuais" seria necessário criar VLANs, nesse caso um Switch Layer 3 é necessário.



  • @LFCavalcanti:

    Para usar interfaces "virtuais" seria necessário criar VLANs, nesse caso um Switch Layer 3 é necessário.

    E teria alguma solução sem que necessite de switch Layer 3?



  • Sem o switch, não vai ficar legal. Você pode até subir várias faixas de ip, mas o tráfego entre as redes no mesmo segmento não vai ficar isolado.



  • @marcelloc:

    Sem o switch, não vai ficar legal. Você pode até subir várias faixas de ip, mas o tráfego entre as redes no mesmo segmento não vai ficar isolado.

    Acho que se surgir essa situacao o que farei sera:
    1 placa para cada link
    e 1 placa com a faixa da rede interna, a faixa da dmz e do roteador wifi.  ???
    Sera uma situação temporaria…soa te configurar o servidor de produção.

    Fiz a pergunta pois a maquina que roda atualmente é um servidor hp que tem slot pra todas as placas, mas para fazer a transição e nao deixar nada fora quero primeiro configurar uma maquina para colocar no lugar dele enquanto configuro ele (servidor de transição). So que as que tenho aqui so tem a placa on mais 2 slots pci.



  • Bom…agora sobre o DNS server....
    Tenho dois dominios que rodam no bind no linux atualmente, com reverso configurado.... pesquisa recursiva somente para a rede interna ( 192.168.0.0/24).....
    Vi o topico sobre o pacote do bind.... e tambem instalei o dnsserver-tynydns para dar uma olhada ( num pfsense que roda numa maquina virtual de testes)
    Me "parece" que o tynydns tem uma administração mais simples, por ter a interface grafica....
    No linux sempre trabalhei com o bind/named sem problemas...... mas apanhei um pouco pra usar ele aqui no pfsense ( mesmo seguindo o tutorial que citei antes).

    O tinydns é uma boa opção para usa?? Pergunto pois até então não havia tido contato com ele ainda....



  • @marcosjost:

    O tinydns é uma boa opção para usa?? Pergunto pois até então não havia tido contato com ele ainda….

    Viu se o pacote configura mais de um domínio?



  • @marcelloc:

    @marcosjost:

    O tinydns é uma boa opção para usa?? Pergunto pois até então não havia tido contato com ele ainda….

    Viu se o pacote configura mais de um domínio?

    Nos teste que fiz, rodei o  New domain wizard duas vezes, com dois dominios diferentes e criou todas as entradas no registro (Add/Edit record)



  • @marcosjost:

    Nos teste que fiz, rodei o  New domain wizard duas vezes, com dois dominios diferentes e criou todas as entradas no registro (Add/Edit record)

    Se os registros não se misturam, pode configura tranquilo então.



  • @marcelloc:

    @marcosjost:

    Nos teste que fiz, rodei o  New domain wizard duas vezes, com dois dominios diferentes e criou todas as entradas no registro (Add/Edit record)

    Se os registros não se misturam, pode configura tranquilo então.

    Parece que nao misturaram nao…fiz o teste.com com os ips 100 e novoteste.net com 200 e parece tudo certo....o print da tela.




  • @marcelloc:

    Você pode configurar qualquer coisa do squid usando o campo custom options na interface web.

    Arquivos customizados podem ser configurados usando o pacote filer, para mante-los no backup do pfsense.

    Posso editar diretamente o arquivo squid.conf que fica em /usr/pbi/squid-i386/etc/squid e ajustar as opcoes que preciso?
    por exemplo:
    onde agora tem:

    # Custom options
    redirect_program /usr/pbi/squidguard-i386/bin/squidGuard -c /usr/pbi/squidguard-i386/etc/squidGuard/squidGuard.conf
    redirector_bypass off
    url_rewrite_children 5
    auth_param basic program /usr/pbi/squid-i386/libexec/squid/ncsa_auth /var/etc/squid.passwd
    auth_param basic children 5
    auth_param basic realm Please enter your credentials to access the proxy
    auth_param basic credentialsttl 60 minutes
    acl password proxy_auth REQUIRED
    http_access allow password localnet
    http_access allow password allowed_subnets
    
    

    queria mudar para o meusquid.passwd, que tem todos usuarios e senhas que uso autalmente, copiando ele na mesma pasta e mudando a linha para :
    auth_param basic program /usr/pbi/squid-i386/libexec/squid/ncsa_auth /var/etc/meusquid.passwd

    EDITANDO:
    Tentei copiar e colocar o conteudo do meu arquivo no squid.passwd, mas ele so pega os usuarios que sao cadastrados pela interface web ( aba local users)
    Tentei pelo filer, apontando o caminho para o /var/etc/squid.passwd e copiando o conteudo, dae funcionou. O unico porem é que se preciso editar a senha do usuario, dae tenho que tirar ele do arquivo la no filer e cadastrar novamente pela interface web. Na interface web do pfsense só são listados os usuarios que foram criados por la



  • altere o arquivo squid.inc para pesquisar seu arquivo em outro lugar. É ele quem gera o arquivo de configuração do squid.

    Como alternativa, você pode instalar o pacote filer para editar o arquivo. Desta forma suas alterações ficam no backup.



  • @marcelloc:

    altere o arquivo squid.inc para pesquisar seu arquivo em outro lugar. É ele quem gera o arquivo de configuração do squid.

    Como alternativa, você pode instalar o pacote filer para editar o arquivo. Desta forma suas alterações ficam no backup.

    Nao consegui achar o arquivo…
    dei um find / "squid.inc" e o resultado: find: squid.inc: No such file or directory  :P



  • /usr/local/pkg/squid.inc



  • @marcelloc:

    /usr/local/pkg/squid.inc

    Obrigado marcelo, acabei testando com o filer e parece que deu certo… como eu fiz:

    • Pelo filer alterei o arquivo /var/etc/squid.passwd com a minha lista de usuarios e senhas criptografadas. Depois pela interface grafica adicionei novos usuarios e funcionou tanto os que eu coloquei pelo filer quanto os cadastrados depois na interface web.
      Mas depois que crio ou altero um usuario na interface web, tenho que abrir o filer, abrir o arquivo novamente e fechar. Senao o squid pega somente os usuarios que estao configurados na interface web.
      Os grupos acabei criando manualmente na interface web e colocando os usuarios.... nao leveou mais que 1 hora para ajustar tudo.
      Aparentemente a parte do squid ficou ok agora. Vou fazer alguns testes hoje de navegação.


  • Você alterou o squid.inc ou squid.conf?
    Alterando o inc, o squid.conf sempre terá suas modificações/inclusões.



  • @marcelloc:

    Você alterou o squid.inc ou squid.conf?
    Alterando o inc, o squid.conf sempre terá suas modificações/inclusões.

    Nao alterei nenhum….somente o squid.passwd no filer. Esse teste fiz antes de voce colocar o caminho do squid.inc....agora nesse momento estou olhando o squid.inc...



  • @marcosjost:

    @marcelloc:

    Você alterou o squid.inc ou squid.conf?
    Alterando o inc, o squid.conf sempre terá suas modificações/inclusões.

    Nao alterei nenhum….somente o squid.passwd no filer. Esse teste fiz antes de voce colocar o caminho do squid.inc....agora nesse momento estou olhando o squid.inc...

    Bom….no squid.in a linha que faz referencia ao arquivo de senhas é essa aqui? define('SQUID_PASSWD', '/var/etc/squid.passwd');
    alterando ela para: define('SQUID_PASSWD', '/var/etc/meusquid.passwd'); deve funcionar ?



  • Não,  dessa forma o pfsense vai sobrescrever seu arquivo.

    Altere na parte que le este define e gera o conf.
    Você pode até incrementar para unir os dois arquivos.



  • @marcelloc:

    Não,  dessa forma o pfsense vai sobrescrever seu arquivo.

    Altere na parte que le este define e gera o conf.
    Você pode até incrementar para unir os dois arquivos.

    Seria nessa função aqui ?

    
    function squid_resync_users() {
            global $config;
    
            $users = $config['installedpackages']['squidusers']['config'];
            $contents = '';
            if (is_array($users)) {
                    foreach ($users as $user)
                            $contents .= $user['username'] . ':' . crypt($user['password'], base64_encode($user['password'])) . "\n";
            }
            file_put_contents(SQUID_PASSWD, $contents);
            chown(SQUID_PASSWD, 'proxy');
            chmod(SQUID_PASSWD, 0600);
    }
    
    


  • Sim, a grosso modo pode ficar parecido com isso:

    function squid_resync_users() {
            global $config;
    
            $users = $config['installedpackages']['squidusers']['config'];
           //No lugar de criar o $contents vazio, coloque o conteudo do seu outro arquivo
           //$contents= '';
            $contents=file_get_contents("/var/etc/meusquid.passwd')."\n";
            if (is_array($users)) {
                    foreach ($users as $user)
                            $contents .= $user['username'] . ':' . crypt($user['password'], base64_encode($user['password'])) . "\n";
            }
            file_put_contents(SQUID_PASSWD, $contents);
            chown(SQUID_PASSWD, 'proxy');
            chmod(SQUID_PASSWD, 0600);
    }
    
    


  • @marcelloc:

    Sim, a grosso modo pode ficar parecido com isso:

    function squid_resync_users() {
            global $config;
    
            $users = $config['installedpackages']['squidusers']['config'];
           //No lugar de criar o $contents vazio, coloque o conteudo do seu outro arquivo
           //$contents= '';
            $contents=file_get_contents("var/etc/meusquid.passwd')."\n";
            if (is_array($users)) {
                    foreach ($users as $user)
                            $contents .= $user['username'] . ':' . crypt($user['password'], base64_encode($user['password'])) . "\n";
            }
            file_put_contents(SQUID_PASSWD, $contents);
            chown(SQUID_PASSWD, 'proxy');
            chmod(SQUID_PASSWD, 0600);
    }
    
    

    Bom…acho que estou fazendo alguma coisa errada.....o que eu fiz:
    No squid.inc
    Deixei o ('SQUID_PASSWD', '/var/etc/squid.passwd'); com o padrao.
    Alterei a linha que voce colocou, deixando assim:

    
     //$contents= '';
            $contents = file_get_contents("var/etc/meusquid.passwd")."\n";
    
    

    Criei o arquivo com o filer /var/etc/meusquid.passwd e coloei o conteudo de usuarios e senhas.
    Pelo console ajustei as permissoes e dono do meusquid.passwd para as mesmas do squid.passwd ( dono proxy).
    Reiniciei o pfsense, porem so acesso com os usuarios que cadastro na interfaceweb ( e sao salvos no squid.passwd). Com os que tao no meusquid.conf nao vai.
    Não sei, mas acho que to deixando de fazer alguma coisa ainda …..  :-\



  • ok, tá faltando um "/" antes do var.

    Já acertei meu post para mostrar a informação correta.

    Aquele foi só um exemplo de código, não testei por não ter este tipo de situação.



  • @marcelloc:

    ok, tá faltando um "/" antes do var.

    Já acertei meu post para mostrar a informação correta.

    Aquele foi só um exemplo de código, não testei por não ter este tipo de situação.

    Eu acabei nao percebendo isso tambem…. agora funcionou  :), so que os usuarios que cadastro depois na interface web e apago por la, so sao efitivamente removidos apos reiniciar o firewall.



  • Buenas…
    O bind usei o pacote que saiu a pouco...aqui nesses dois topicos tem as referencias da instalacao e configuracao:
    http://forum.pfsense.org/index.php/topic,67673.0.html
    http://forum.pfsense.org/index.php/topic,67867.0.html


    Sobre os links:
    Lembrando
    Link 1 - link usado para srv de e-mails e acesso ts
    Link 2 - usado para acessar a internet
    Configurei as regras de firewal, os direcionamentos NAT das portas 25,110,583,etc... para o ip do servidor de e-mails pelo link1.

    Defino o gateway do link2 como o defaul em System - Routing - Gateways, para que a navegacao sai por padro por ele?
    Lembrano que tenho a maioria das maquinas que usam proxy autenticado, definido no navegador, e tambem algumas que nao passam pelo proxy ( definidas na aba lan para liberar o acesso para o ip).

    O faillover de link vou fazer mais para frente, e sera basicamente: se parar o link2 (navegacao) redirecionar a navegacao para o link1 tambem.



  • Isso. Deixe o link da navegação como padrão e hhabilite o default gateway switch em system advanced para fazer o fail over em caso de falha.

    Não esqueça de criar na lan a regra para forçar a saída de email pelo link 1.



  • @marcelloc:

    Isso. Deixe o link da navegação como padrão e hhabilite o default gateway switch em system advanced para fazer o fail over em caso de falha.

    Não esqueça de criar na lan a regra para forçar a saída de email pelo link 1.

    Certo, mais um esclarecimento: como nao estou usando loadbalance….. Entao nao preciso configurar grupos de gateways e regras flutuantes correto?

    Hum...criar regra na lan para os e-mails? Agora me confundi um pouco...
    Acho que funciona assim com os e-maisl ( porta 25,110,587 e afins):
    Maquinas da lan conectam ao srv de email na dmz, nao saem direto por um dos links, e o servidor de email na dmz dae sai pelo link.
    As maquinas tao com os clientes de e-mails configuradas para conectar ao: mail.meudominio.com.br que responde ( na rede interna) pelo ip da dmz 192.168.10.2 ( por ex)



  • Outra duvida…
    Meu link1 tem 3 ips validos:
    ex 177.43.12.101, 177.43.12.102 e 177.43.12.103
    Configurei o 177.43.12.101 na interface WAN LINK1,  o gateway default dele ( 177.43.12.100 que esta no modem).
    Os 2 restantes devo configurar como Virtual IP - Tipo IP Alias - interface LINK1 ... ip adress 177.43.12.102 / 29 ( correspondente a masca 255.255.248 passada pelo provedor). Esta certo?



  • Se o servidor de email está na dmz, então a regra fica na dmz. Esta regra força o gateway dos emails para o link 1.

    Não precisa criar tiers ou grupo de gateways.



  • @marcelloc:

    Se o servidor de email está na dmz, então a regra fica na dmz. Esta regra força o gateway dos emails para o link 1.

    Não precisa criar tiers ou grupo de gateways.

    Ok, ficaria algo como ( na aba DMZ)isso, entao?
    Id
    Proto: IPV4
    source: Id d0 srv de e-mail
    Port: 25, 110.587…(todas configuradas no NAT para o serv de e-mail) ( uma regra por porta)
    Destination: *
    Port: *
    Gateway: Gatewaylink1



  • destination ip any, destination port 25



  • @marcelloc:

    destination ip any, destination port 25

    Certo, apenas acrescento o dest ip e port as regras que ja coloquei ? Assim
    Id
    Proto: IPV4
    source: Id do srv de e-mail
    Port: 25
    Destination:  Any
    Port: 25
    Gateway: Gatewaylink1



  • No smtp só o destino tem porta 25.
    Se arrisque mais no tcpdump. Ele responde perguntas muito melhor e mais Rápido que nós do fórum.


Log in to reply