projetos | download | linux | privacidade | contato
 
  Produtos | Documentação | Suporte | Treinamento | Conectiva | Cases | Soluções | Parcerias | Imprensa | Oportunidades
Pesquise 
português 
english 
español

SUPORTE

->Suporte Estendido
->Centros de Serviços
->Técnicos Certificados
->Formulário de Suporte
->Abrangência do Suporte
->Acionando o Suporte
->Perguntas e Respostas
->Atualizações
->Livros, Guias e Manuais
->Hardware

    8.1. Como faço para configurar o Freesswan

    O Conectiva Linux 5.1 Ed. Servidor já tem kernel preparado para freeswan 1.3. Se a versão instalada ainda não for esta, então faça o upgrade do pacote RPM do kernel para o pacote que vem com a 5.1

    Após ter o kernel correto, certifique-se que o pacote freeswan-1.3-2cl também está instalado.Se não tiver, instale-o.

    Para isso, monte o primeiro cd do conectiva 5.1, 4.2 ou o cd 2 do conectiva 5.0. Outras versões do conectiva precisam baixar o pacote em:

    ftp://ftp.conectiva.com.br/pub/conectiva/5.1/cd1/conectiva/RPMS/freeswan-1.4-7cl.i386.rpm

    Para montar o cdrom, utilize:

        [root@localhost]# mount /mnt/cdrom
    

    e instale o pacote:

        [root@localhost]# rpm -ivh /mnt/cdrom/conectiva/RPMS/freeswan-*i386.rpm
    

    Ele contém tudo o que é extra-kernel (utilitários e daemons) e é instalado separadamente.Tenha certeza que a configuração do kernel está ok. A parte de rede deve estar funcionando perfeitamente antes de iniciar a instalação.

    Verifique se o arquivo contém o seguinte:

        [root@localhost]# mcedit  /etc/sysconfig/network 
                  FORWARD_IPV4="yes"
    

    ou algo parecido (talvez o "yes" esteja como "true", tudo bem).

    Verifique se o arquivo contém

        [root@localhost]# mcedit  /etc/sysconfig/cl-firewall 
                  RP_FILTER=0
    

    Este parâmetro quando setado para 2 (como está originalmente) impede o link de ser estabelecido com sucesso.

    Nenhuma configuração será necessária nas estações, apenas nos gateways. Toda a configuração é baseada em apenas dois arquivos:

    /etc/ipsec.conf e /etc/ipsec.secrets

    Estes arquivos (ambos) devem ter permissões 600 por questões de segurança. O dono e o grupo deve ser "root:root".

    O arquivo ipsec.conf

    O primeiro guarda as configurações gerais do ipsec, e o segundo guarda as chaves de criptografias.

    Para editá-lo digite:

        [root@localhost]# mcedit /etc/ipsec.conf
    

    A seguir um exemplo (para o caso mais comum). Só foram listadas as partes relevantes. O resto pode ser deixado como está no arquivo original.

    Imagine o seguinte exemplo:

                                          +~~~~~~~~~~~~+
                                       +==|  INTERNET  |==+
                                       |  +............~  |
                        200.200.0.23   |                  |        200.252.02.12
                                +~~~~~~~~~~~+        +~~~~~~~~~~~+
                                | gateway A |        | gateway B |
                                +...........+        +...........+
                        192.168.6.1 |                        | 10.0.0.1
                                    |                        |
                                    |                        |
               ...~~~~~~~~~~~~~~+~~~+~~~~~...       ...~~~~~~+~~~+~~~~~~~~~~~~~~~...
                                |                                |
                    192.168.6.2 |                                | 10.0.0.2
                  255.255.255.0 |                                | 255.255.255.0
                         +~~~~~~~~~+                        +~~~~~~~~~+
                         | host 1A |                        | host 1B |
                         +.........+                        +.........+
    


    Segue um arquivo de configuração que serviria para a rede acima. Observe que o arquivo de configuração original é muito mais completo, e aqui só foram mostradas as partes relevantes. O restante do arquivo pode ser deixado intacto, salvo nota específica.

        
                    config setup
                            interfaces=%defaultroute
                            klipsdebug=none
                            plutodebug=none
        
                    conn %default
                            esp=3des-md5-96
                            authby=rsasig
        
                    conn con123
                            left=200.200.0.23
                            leftsubnet=192.168.6.0/24
                            #leftnexthop=192.168.255.220
                            leftrsasigkey=0x01039d827220755...
                            #leftfirewall=yes
                            right=200.252.02.12
                            rightsubnet=10.0.0.0/24
                            #rightnexthop=10.0.0.1
                            rightrsasigkey=0x01034bd3e30995...
                            #rightfirewall=yes
                            auto=start
    


    Na primeira secção temos config setup que especifica a secção geral de configuração do ipsec. Esta secção normalmente não será modificada. Cuide para que pelo menos as linhas listadas existam e estejam corretas.

    Logo após, temos conn %default. Esta secção não indica uma conexão específica, mas serve para que você possa listar quaisquer parâmetros que você queira que sejam válidos para todas as conexões. Listar alguma opção aqui é o mesmo que listá-la repetidas vezes dentro de cada uma das conexões.

    No caso acima estão listadas duas keywords interessantes (as outras podem ser deixadas como estão no original).

    esp=3des-md5-96 indica o tipo de criptografia que queremos usar. 3des-md5-96 é uma boa opção, sugerido como default. authby=rsasig indica que queremos usar autenticação e criptografia do tipo RSA (chaves públicas e privadas). As opções são secret (defaut) para PSK (pre shared keys) e rsasig para chaves RSA.

    Por último, conn con123 é a conexão que estamos tentando estabelecer. Podem existir várias conexões, basta repetir esta parte com novos parâmetros.

    Antes de irmos para os números em si, uma breve explicação do significado de left e right. Eles representam "os dois lados" da conexão. Não faz diferença quem é qual, apenas que os dois lados estejam listados. O freeswam descobre sozinho qual é ele mesmo e qual é o outro lado, através do IP indicado.

    Agora vejamos as keywords usadas no exemplo, uma a uma: left=192.168.6.1 indica o IP da máquina gateway de um dos lados. Assumimos aqui que o "left" representa o "GATEWAY A".

    leftsubnet=192.168.6.0/24 indica qual é a rede que está "atrás" do gateway, cujos pacotes serão protegidos. Deve-se indicar a netmask em conjunto com o endereço de rede.

    leftnexthop= indica qual o IP do gateway que está acima do GATEWAY A. Normalmente este endereço será obtido automaticamente através da rota do gateway padrão (exatamente por isso existe aquela instrução interfaces=%defaultroute na primeira secção. Nesses casos comuns pode-se deixar as instruções "nexthop" comentadas, como no exemplo.

    leftrsasigkey=0x01039d827220755... indica a chave pública RSA do outro lado. Mais sobre isso adiante, no item do arquivo ipsec.secrets.

    leftfirewall=yes indica que a máquina firewall não está fazendo masquerading para a rede que ela está protegendo, e esta rede tem IPs não roteáveis que não devem ser repassados para o lado de fora. Normalmente não será usada.

    Todos estes conceitos são igualmente aplicáveis ao outro lado, apenas substituindo "left" por "right".

    auto=start indica que esta conexão deve ser iniciada durante o boot do micro. Outra opção seria auto=add para apenas adicionar a conexão na lista de conexões mas não iniciá-la no boot. Ela poderá ser iniciada mais tarde manualmente(pouco usado).

    O arquivo ipsec.secrets

    Agora é necessário configurar as chaves que serão usadas para a criptografia e autenticação. Em primeiro lugar você deve escolher qual o tipo de chave a ser usada, PSK ou RSA. Como já foi dito, deve-se dar preferência para o tipo RSA.

    Por vários motivos.

    Vejamos:



    1. Nenhum problema de transmissão de chaves. No caso das chaves

    2. compartilhadas (PSK) você deve enviar a chave para o outro lado de algum modo. Com o mecanismo de chave pública/privada, você transmite para o outro lado apenas a chave pública. O sistema foi desenvolvido para que não importe caso alguém pegue sua chave pública, nada poderá ser feito com ela (para descriptografar o que foi criptografado com a chave pública, é necessária a chave privada que não foi transmitida.

    3. Fácil manutenção. Se você tiver mais de uma conexão, com mais de um gateway diferente, pode deixar sua chave pública em um lugar conhecido e todos pegarem. Não haverá a necessidade de ficar gerando novas chaves e repassando-as para cada um dos novos gateways. Usar a mesma PSK para todos nem pensar!

    4. Não requer que os IPs das pontas sejam fixos, pois a chave irá garantir a autenticidade da outra máquina. Isto é usado para redes virtuais privadas com IPs móveis, e não será alvo deste documento. Para maiores informações consulte o manual do freeswan, no site na web.Para gerar o par de chaves, execute o comando:

            [root@localhost]#  ipsec rsasigkey 128
      

      Isto irá gerar um par de chaves RSA de 128 bits. Aconselha-se usar mais bits, como por exemplo 1024. Para 128, a geração é rápida, mas para 1024 pode levar até alguns minutos dependendo da máquina em que está sendo executado o comando. Usamos 128 aqui para um exemplo ilustrativo.

      A saída deste comando será parecida com o seguinte:

                        # 128 bits, Tue Apr 25 21:08:09 2000
                        # for signatures only, UNSAFE FOR ENCRYPTION
                        #pubkey=0x01039efb4e4a84f0026202cd872e41dfbce7
                        Modulus: 0x9efb4e4a84f0026202cd872e41dfbce7
                        PublicExponent: 0x03
                        # everything after this point is secret
                        PrivateExponent: 0x69fcdedc58a001959e5053f6c7c6154b
                        Prime1: 0xde02e368132d3ac9
                        Prime2: 0xb75225d40309622f
                        Exponent1: 0x9401ecf00cc8d1db
                        Exponent2: 0x7a36c3e2acb0ec1f
                        Coefficient: 0x7cc39b384223f7f3
      

      Com exceção dos comentários, e da linha que inicia com #pubkey (que também está comentada), todo o resto é a chave privada. Aquele número contido na linha #pubkey deve ser repassado para a outra máquina gateway, para ser inserido no arquivo de configuração ipsec.conf na keyword "leftrsasigkey=0x01039ef..." (ou right, conforme o caso). Todo o restante deverá ser inserido no arquivo ipsec.secrets da máquina local (que gerou a chave) como sendo sua própria chave privada. O arquivo de configuração ficará parecido com isto:

                        192.168.255.213 10.0.2.25: RSA {
                                Modulus: 0x9efb4e4a84f0026202cd872e41dfbce7
                                PublicExponent: 0x03
                                PrivateExponent: 0x69fcdedc58a001959e5053f6c7c6154b
                                Prime1: 0xde02e368132d3ac9
                                Prime2: 0xb75225d40309622f
                                Exponent1: 0x9401ecf00cc8d1db
                                Exponent2: 0x7a36c3e2acb0ec1f
                                Coefficient: 0x7cc39b384223f7f3
                                }
      

      A listagem acima contém exatamente a tag de abertura (primeira linha) e em seguida deve ser colado o conteúdo EXATO das chaves geradas com o comando mencionado anteriormente, e por último, o tag de fechamento.

      Na primeira linha, os IPs são opcionais. Você pode iniciar direto a partir dos ": RSA {" se quiser. O importante é que na primeira linha, os IPs (ou os ":") iniciem exatamente na primeira coluna, e no resto do texto até o final do bloco, nenhuma outra linha inicie no primeiro caractere (identar todas as outras linhas). Também deixe sempre espaços entre as tags (por exemplo ":RSA{" não funciona).

      O outro lado deve fazer a mesma coisa. Gerar as chaves, guardar as suas chaves privadas no arquivo de secrets local, e enviar a chave pública para ser acrescentada no arquivo ipsec.conf do lado de cá.

      Finalmente, para tudo isto funcionar, habilite a autenticação via RSA no .conf de cada um, com a instrução authby=rsasig já mostrada anteriormente.

      Não se assuste com o tamanho dos número, eles realmente serão enormes. O exemplo de 128 bits é apenas ilustrativo, as chaves de 1024 poderão ter até 4 ou 5 linhas de texto numa janela texto de 80 colunas. Mantenha estes números sempre numa linha só, cada um deles, nunca deixe o editor quebrar a linha em várias.

      Acrescente "alias ipsec0 ipsec" no arquivo /etc/conf.modules.

      Ao final, dê um reboot na máquina, e deixe que ela carregue tudo automaticamente. Observe se houve alguma mensagem de erro durante o carregamento do "pluto".

      Testes Pós-Instalação

      Durante a fase de testes, talvez seja interessante manter a conexão como "auto=add" no arquivo .conf ao invés de "auto=start", pois assim você poderá startar e parar a conexão na mão quantas vezes quiser. Ao final, mude novamente para "auto=start" dos dois lados para que as coisas voltem a ser autoáticas.

      LINKS ÚTEIS PARA CONSULTA

      Lista de discussão IPSec:

      http://www.sandelman.ottawa.on.ca/linux-ipsec/

      http://www.nexial.com/cgi-bin/lipsec

      Um artigo sobre o assunto: Ipsec practical configurations for Linux Freeswan 1.3.http://jixen.tripod.com/

      ### VERSÃO 6.0 ###

      Siga os mesmos procedimentos apenas troque o nome do arquivo /etc/conf.modules por /etc/modules.conf