SSH e Kerberos

Post date: 31/07/2015 11:15:03

Neste tutorial iremos demonstrar como configurar o servidor kerberos para ser um servidor de autenticação de um provedor de serviço de terminal seguro (SSH).

Para isto, precisamos de três maquinas virtuais. Neste tutorial, foram usadas três maquinas virtuais lubuntu 14.10 e está organizado em 5 seções.

. Configuração inicial das máquinas

Antes de começar a configurar o Kerberos, provedor de serviço e cliente, é necessário fazer algumas alterações nos arquivos de configuração de todas as máquinas para que elas sejam capazes de se comunicarem através do nome. Neste teste, cada uma das máquinas será configurada com os seguintes nomes e ips descritos na tabela a seguir.

Deve-se alterar o arquivo /etc/hosts e /etc/hostname.

kerberos $ sudo su kerberos # echo "<NOME_DA_MAQUINA>" > /etc/hostname kerberos # echo "127.0.0.1 <NOME_DA_MAQUINA>" >> /etc/hosts kerberos # echo "192.168.235.137 ssh.com ssh" >> /etc/hosts kerberos # echo "192.168.235.138 kerberos.com kerberos" >> /etc/hosts kerberos # echo "192.168.235.139 cliente.com cliente " >> /etc/hosts

Depois dessas alterações, a conectividade entre elas deve ser testada através de um ping.

kerberos # ping kerberos.com kerberos # ping cliente.com kerberos # ping ssh.com

OBS: Essas configurações devem ser feitas em todas as máquinas.

OBS2: Depois dessas alterações, deve-se reiniciar a máquina.

2. Configurando o Servidor Kerberos

Após a configuração inicial das máquinas, inicia-se a configuração do servidor de autenticação (Kerberos). Primeiramente, instala-se o servidor kerberos através do apt-get.

kerberos $ sudo su kerberos # apt-get install krb5-admin-server krb5-kdc

Durante a instalação é solicitado a inserção do domínio padrão (DEFAULT REALM). Deve-se inserir as informações do seu novo domínio KERBEROS.COM, conforme mostrado a seguir.

Depois disso, deve-se configurar o arquivo /etc/krb5.conf para as configurações do KERBEROS.COM

kerberos # nano /etc/krb5.conf

O arquivo krb5.conf deve ficar semelhante ao arquivo a imagem a seguir

Após esta alteração, deve-se iniciar o servidor kerberos através do comando krb5_newrealm.

kerberos # krb5_newrealm

Após este comando, deve-se inserir as credenciais (senhas) do usuário administrador do domínio (REALM).

Perceba que os serviços agora estão ativos e o servidor está pronto para o uso. É necessário criar os usuários para poder prover o serviço de autenticação.

kerberos # kadmin.local Authenticating as principal root/admin@KERBEROS.COM kadmin.local: addprinc root <COLOCAR A SENHA> kadmin.local: addprinc root/admin <COLOCAR A SENHA> kadmin.local: q

Para finalizar a configuração do servidor deve-se também alterar a lista de controle de acesso /etc/krb5kdc/kadm.acl, descomentando sua última linha

kerberos # nano /etc/krb5kdc/kadm.acl

Pronto, o servidor já está configurado, para testá-lo usa-se o kinit, klist.

kerberos # kinit root <INSERIR A SENHA> kerberos # klist -l

Para adiantar a autorização da máquina ssh.com, deve-se utilizar o utilitário kadmin.local e criar as credenciais para a máquina.

kerberos # kadmin.local kadmin.local: addprinc -randkey host/ssh.com kadmin.local: ktadd -k /tmp/ssh.com.keytab host/ssh.com kadmin.local: quit kerberos # cp /tmp/ssh.com.keytab /etc/krb5.keytab

Pronto, agora temos o servidor de autenticação kerberos configurado e já criamos as credenciais da estação do provedor do serviço. Agora podemos iniciar as configurações do provedor de serviço.

3. Configurando o Provedor de Serviço

No provedor do serviço, deve-se instalar o pacote krb5-config juntamente com o servidor SSH através do comando

ssh # apt-get install krb5-config openssh-server

Similarmente ao servidor Kerberos, deve-se inserir as mesmas configurações de domínio e alterar o arquivo krb5.conf . Após a instalação, deve-se alterar as configurações do servidor ssh, editando o arquivo /etc/ssh/sshd_config

ssh # nano /etc/ssh/sshd_config

Deve-se remover os comentários nas entradas relacionadas a autenticação GSSAPI

Após salvar as alterações, deve-se reiniciar o serviço ssh no servidor

ssh # service ssh restart

Para finalizar a configuração, deve-se copiar o arquivo keytab criado no servidor Kerberos para o servidor ssh.

kerberos # scp /tmp/ssh.com.keytab <seu_usuario>@ssh.com:~/krb5.keytab

E no servidor ssh, deve-se colocar o arquivo no diretório etc.

ssh # chown root.root krb5.keytab ssh # chmod 400 krb5.keytab ssh # cp krb5.keytab /etc/krb5.keytab

4. Configurando o Cliente

Para permitir o recebimento de Tickets de autenticação do Kerberos deve-se instalar o pacote krb5-user e repetir as configurações do domínio e alterar também o arquivo krb5.conf, similarmente ao realizado nas outras máquinas.

cliente # apt-get install krb5-user

Deve-se também alterar o arquivo de configuração do cliente ssh para utilizar a autenticação GSSAPI

cliente # nano /etc/ssh_config

Altere as configurações ao final de arquivo para yes em ambas as opções da GSSAPI, conforme mostrado na figura a seguir

Para se conectar ao servidor ssh.com sem digitar a senha, basta fazer a autenticação no servidor KERBEROS.COM através do KINIT e depois disso, acessar o serviço através do ssh, conforme mostrado a seguir:

cliente # kinit root Password for root@KERBEROS.COM: cliente # ssh root@ssh.com

Pronto, o servidor está configurado, conforme mostrado na figura a seguir:

Para finalizar, dê o comando kdestroy e tente novamente se conectar para você perceber que o servidor irá solicitar o login e a senha.

Ainda não consegiu? Assita o vídeo a seguir disponível em meu canal do youtube.com/rodccosta