OS X Lion. SSH. PKCS#11. CC

OS X Lion. SSH. PKCS#11. CC

Esta nota é um complemento ao artigo anterior, sobre a utilização do Cartão de Cidadão para autenticar utilizadores em SSH, um complemento que me parece necessário para o contexto específico do OS X Lion.

Por razões que a Apple conhecerá, a versão do cliente SSH incluída no Lion não suporta PKCS#11 e não permite, por isso, a utilização direta do CC.

Os parágrafos seguintes apresentam, num registo minimalista, os passos necessários para (i) instalar o OpenSC, (ii) instalar uma versão nova do OpenSSH, e (iii) usar as ferramentas para aceder a um serviço SSH remoto.

  1. O enquadramento hard & soft
  2. A instalação do OpenSC
  3. A instalação do OpenSSH — opção #1, estilo Lazy Dog
    • Transferir um pacote com os binários que eu próprio compilei e executar, num terminal em contexto administrativo, "sudo tar -C / -xzvf openssh_5.9p1.os_x_lion.tar.gz". Os ficheiros aterrarão em /usr/local/...
  4. A instalação do OpenSSH — opção #2, estilo Die-hard MoFo
    • Instalar o Xcode a partir da App Store. Em seguida, lançar o Xcode, navegar pelas Preferences até DownloadsComponents e instalar as Command Line Tools;
    • Transferir o código fonte do OpenSSH e expandi-lo para uma pasta, recorrendo, por exemplo, a um terminal: "mkdir ~/tmp; tar -C ~/tmp -xzvf openssh-5.9p1.tar.gz"; e
    • Configurar, compilar e instalar os binários, a partir da pasta onde colocaram o código fonte. Apenas como exemplo, "cd ~/tmp/openssh-5.9p1; ./configure; make; sudo make install".
  5. A identificação da chave e configuração do servidor
    • Introduzir o CC no leitor, executar "pkcs15-tool --list-keys", e identificar o campo ID correspondente a "Private RSA Key [CITIZEN AUTHENTICATION KEY]". Em seguida, executar "pkcs15-tool --read-ssh-key ID | grep "ssh-rsa" > ~/Documents/authorized_keys";
    • Copiar a chave para o servidor, para a conta que irá ser autenticada com o CC, colocando-a em "~/.ssh/authorized_keys". Garantir a posse da pasta "~/.ssh" e do ficheiro "authorized_keys", e atribuir permissões exclusivas ao utilizador (e.g. "chmod 700 ~/.ssh" e "chmod 600 ~/.ssh/authorized_keys"); e
    • Garantir que a configuração do daemon SSH aceita autenticação com chaves públicas (ou seja, por outras palavras, que o ficheiro "/etc/ssh/sshd_config" contém as linhas "PubkeyAuthentication yes" e "AuthorizedKeysFile %h/.ssh/authorized_keys", ou que, mesmo não tendo essas linhas, esses valores são assumidos por omissão).
  6. A utilização do novo SSH no Lion
    • A forma mais simples para usar a nova versão do SSH, sem configuração adicional, é a seguinte: "/usr/local/bin/ssh -I /usr/lib/opensc-pkcs11.so utilizador@servidor";
    • A segunda forma mais simples passa pela inclusão da linha "PKCS11Provider /usr/lib/opensc-pkcs11.so" no final do ficheiro de configuração do SSH (em "/usr/local/etc/ssh_config"). A partir desse momento o comando pode ser executado sem a referência à biblioteca do OpenSC, e.g. "/usr/local/bin/ssh utilizador@servidor";
    • Para simplificarem ainda mais, podem acrescentar uma abreviatura no ficheiro "~/.profile". Por exemplo, "echo alias ssh11=/usr/local/bin/ssh >> ~/.profile". Poderão executar, a partir daí, "ssh11 utilizador@servidor". E, se quiserem, podem usar esta fórmula para os outros comandos SSH relevantes, e.g. "sftp11=/usr/local/bin/sftp", "ssh11-agent=/usr/local/bin/ssh-agent" e "ssh11-add=/usr/local/bin/ssh-add";
    • Quando não tiverem a certeza qual dos comandos é invocado, o nativo ou o novo, usem a opção "-v" para identificarem a versão. Por exemplo, "ssh -v". A versão SSH no Lion 10.7.3 é a 5.6p1.
  7. A utilização do agente SSH
    • Pessoalmente, prefiro executar os comandos diretamente, sem agentes de autenticação. Mas, em algumas circunstâncias, podem ser necessários. Dito isto (vírgula)
    • Se quiserem usar o novo agente devem executar, num terminal, "eval `/usr/local/bin/ssh-agent -s`". A chave pública do vosso CC pode ser adicionada ao agente, em seguida, através de "/usr/local/bin/ssh-add -s /usr/lib/opensc-pkcs11.so";
    • Enquanto mantiverem o terminal aberto, podem usar o SSH ou o SFTP sem introduzirem, novamente, o PIN do CC. E podem usar os comandos nativos do Lion em vez das novas versões, e sem parâmetros adicionais (e.g. "sftp utilizador@servidor")
    • Se usarem este agente com o CC, também devem utilizá-lo com as vossas chaves públicas adicionais. Como exemplo, "/usr/local/bin/ssh-add ~/.ssh/id_rsa".

E pronto. Mais um tiro, mais um melro : ) … E prometo que o próximo que abordar o CC será sobre a autenticação na web (!)

Comentários, correções e sugestões? Be my guests ; )