Este projeto contempla a segunda nota da disciplina ECOE10 lecionado no segundo semestre de 2018 na Universidade Federal de Itajubá e envolve as tecnologias Kerberos e Git.
- David dos Anjos Bovolenta - 25784
- Felipe Caetano Castilho - 26904
- Guilherme M. Brtoletto - 30076
- Rodrigo Toshiaki Horie - 26620
Foi utilizado o sistema operacional (SO) Ubuntu 18.04 e o primeiro passo foi certificar que o pacote sudo estava instalado. Para isso utilizou-se o seguinte comando:
su -c 'apt-get install sudo'Foi então apresentada uma mensagem pelo SO de que o pacote já estava instalado. O passo seguinte foi configurar sudo utilizando
su -c 'echo "USERNAME ALL=(ALL) ALL" >> /etc/sudoers'Substituindo o USERNAME com o usuário do sistema.
Diversos pacotes que serão utilizados irão pedir várias informações para o debconf, portanto configurou-se ele da seguinte maneira:
sudo dpkg-reconfigure debconf Coloca-se então, nas perguntas seguintes, interface=Dialog e priority=low.
Para conseguir monitorar o procedimento, foi preciso utilzar um comando para pegar todas as rotinas e imprimir num arquivo:
cd /var/log; sudo tail -F daemon.log sulog user.log auth.log debug kern.log syslog dmesg messages kerberos/{krb5kdc,kadmin,krb5lib}.logPara instalar o Kerberos na máquina usou-se o comando:
sudo apt-get install krb5-{admin-server,kdc}Algumas perguntas foram feitas pelo Debconf:
Default Kerberos version 5 realm? TESTE.COM
Add locations of default Kerberos servers to /etc/krb5.conf? Yes
Kerberos servers for your realm: teste.com
Administrative server for your Kerberos realm: teste.com
Create the Kerberos KDC configuration automatically? Yes
Run the Kerberos V5 administration daemon (kadmind)? Yes
E logo após a instalação o kerberos-admin server e o kdc tentarão iniciar, porém não há nenhum realm criado ainda.
Para criar o server foi necessário utilizar:
sudo krb5_newrealmE com isto o sistema pedirá uma senha mestre.
Foi, então, necessário configurar o arquivo /etc/krb5.conf da seguinte maneira:
.teste.com = TESTE.COM
teste.com = TESTE.COME no final do arquivo adicionou-se as linhas
[logging]
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmin.log
default = FILE:/var/log/kerberos/krb5lib.logPara produzir arquivos de log.
Criou-se então o diretório de log e configurou-se as permissões necessárias.
sudo mkdir /var/log/kerberos
sudo touch /var/log/kerberos/{krb5kdc,kadmin,krb5lib}.log
sudo chmod -R 750 /var/log/kerberosE, finalmente, para aplicar as mudanças no servidor do kerberos utilizou-se:
sudo invoke-rc.d krb5-admin-server restart
sudo invoke-rc.d krb5-kdc restartRodou-se:
sudo kadmin.local
Authenticating as principal admin/[email protected] with password.
kadmin.local: listprincs
K/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
kadmin.local: quitE tudo ocorreu como esperado.
Adicionou-se o primeiro principal com privilégios.
sudo kadmin.local
Authenticating as principal admin/[email protected] with password.
kadmin.local: addprinc -policy admin admin/admin
Enter password for principal "admin/[email protected]": PASSWORD
Re-enter password for principal "admin/[email protected]": PASSWORD
Principal "admin/[email protected]" created.
kadmin.local: quitTestou-se o principal criado anteriormente
sudo kadmin -p admin/admin
Authenticating as principal admin/[email protected] with password.
Password for admin/[email protected]: PASSWORD
kadmin: listprincs
K/[email protected]
admin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
kadmin: quitFoi, então, criado o principal sem privilégios.
sudo kadmin -p admin/admin
Authenticating as principal admin/[email protected] with password.
Password for admin/[email protected]: PASSWORD
kadmin: addprinc -policy user monarch
Enter password for principal "[email protected]": PASSWORD
Re-enter password for principal "[email protected]": PASSWORD
Principal "[email protected]" created.
kadmin: quit
Para realizar a autenticação usa-se o comando klist. Inicialmente não há nenhuma credencial, portanto é necessário usar kinit krb.
No terminal cliente, então, usa-se o comando
ssh krb.teste.comE se tudo está correto, a autenticação deve ocorrer com successo.
Aqui está um vídoe demonstrando a funcionalidade do projeto: Youtube