c h r o n y
Veremos duas maneiras de instalar o Chrony (como todo programa): instalação semi-automática e manual.
O Chrony (NTP/NTS) é uma ferramenta que sincroniza o tempo em redes, servidores e desktops funcionando como uma implementação do Network Time Protocol (NTP). Ele pode sincronizar o relógio do sistema com servidores NTP, relógios de referência (por exemplo, receptor GPS) e entrada manual usando wristwatch e teclado. Ele também pode operar como um servidor NTPv4 (RFC 5905) e um peer para fornecer um serviço de sincronização de tempo a outros computadores na rede.
Link ao final.
O Chrony é indicado pelo ntp.br:
"O Chrony é uma implementação moderna e versátil do NTP. É seguro e confiável e recomenda-se seu uso para as funções de cliente e servidor.
Em particular, para a função de cliente NTP, o Chrony é a principal recomendação do NTP.br . Isso por diversas razões: se configurado como aqui sugerido o chrony vai se comportar apenas como um cliente NTP, ou seja, não vai abrir um socket na porta 123 UDP e atender requisições."
Link ao final.
INSTALANDO PELO GERENCIADOR DE PACOTES
No Debian, Ubuntu, Mint, Kali:
$ sudo apt install chrony
No Red Hat e Fedora:
$ dnf install -y chrony
OpenSuse:
$ zypper install chrony
No Debian 12, os repositórios tem a versão 4.3.2 e o Chrony está na versão 4.6.1.
Fica à sua escolha, pois as configurações depois são iguais.
Deixarei aqui a instalação manual, mesmo passando um perrengue desgraçado porque o Chrony instalado manualmente não instala por padrão alguns arquivos necessários e, além disso, não tem "make uninstall", porém, isso não é exclusivo do Chrony. Alguns desenvolvedores optam por não colocar "make uninstall" porque não tem como saber em qual diretório o usuário instalará o programa e o diretório padrão de alguns arquivos muda de acordo com cada distribuição, e mesmo que na instalação automática o pacote já vem pronto com as configurações para cada distribuição, ainda assim pode mudar de acordo com uma nova versão.
A instalação manual parece trabalhosa, mas depois que se "pega o jeito" ela flui naturalmente e só demora o tempo da compilação (make) porque a digitação dos comandos é simples. Como aprendizado todo mundo deveria fazer pelo menos uma vez. É trabalhoso, mas não é difícil!
Muitos programas, basicamente, quando você vai atualizar basta executar "make uninstall" (os que trazem ele) estando dentro do diretório da instalação atual e instalar a versão mais recente estando dentro do diretório dessa nova versão.
Os programas que não trazem "make uninstall" delete o diretório da instalação atual, faça uma busca e delete os arquivos e diretórios remanescentes, crie o diretório da nova versão, baixe a versão mais recente, descompacte, entre no diretório e execute "./configure". "make", "make install".
Muita gente se engana ao pensar que na instalação manual depois fica um monte de arquivos como lixo no sistema, porém, quando você utiliza um gerenciador de pacotes (apt, dnf, zypper, etc) também ficam pacotes para trás na desinstalação e isso não é culpa dos gerenciadores de pacotes e/ou dos desenvolvedores porque, como já foi dito, não tem como adivinhar em qual diretório o usuário instalará o programa e o diretório padrão muda nas distribuições. E mesmo que na instalação [semi]-automática o pacote já vem pronto com as configurações para cada distribuição, ainda assim pode mudar de acordo com uma nova versão.
Em todo e qualquer sistema sempre ficam arquivos para trás ocupando espaço, por isso é necessário fazer uma limpeza no sistema de vez em quando.
INSTALAÇÃO MANUAL
Instalação manual (Debian 12 - esta instalação serve de maneira geral para qualquer programa a ser instalado manualmente)
Com essa instalação manual você evita erros como:
No NTS support;
Could not read valid frequency and skew from driftfile /var/lib/chrony/drift;
Could not open /var/log/chrony/tracking.log : Permission denied;
501 Not authorised; etc.
IMPORTANTE
Na instalação manual de qualquer programa aconselho sempre primeiro a desinstalar a versão anterior, pois pode acontecer de ter mudanças profundas de uma para outra versão e isso pode dar problemas.
Ao final tem uma lista de arquivos e diretórios para remover em caso de desinstalação.
Instalando dependências:
$ sudo apt update
$ sudo apt install pkg-config build-essential libc6 libtomcrypt1 libtomcrypt-dev libcap-dev golang-github-seccomp-libseccomp-golang-dev gnutls-bin libgnutls28-dev openssl wget
Criando o usuário:
$ sudo useradd chrony
Criando o diretório em /opt (Debian 12)
Entre no diretório:
$ cd /opt
O Debian não toca nos diretórios /opt e /usr/local cujos são próprios para instalações de programas que não vem por padrão. O mais aconselhável é o /opt,
Criando o diretório geral para downloads, descompactação, bkp, etc:
$ sudo mkdir croni
Criando o diretório para instalação:
$ sudo mkdir chrony
$ cd croni
$ sudo wget https://chrony-project.org/releases/chrony-4.6.1.tar.gz
ou acesse o site
e faça o download da última versão.
$ ls
$ sudo tar -xf chrony-4.6.1.tar.gz
$ cd chrony-4.6.1
Configurando e instalando no diretório /opt/chrony estando dentro de /opt/croni/chrony-4.6.1:
--prefix=/opt/chrony - diretório onde será instalado;
--enable-scfilter - suporte ao recurso de computação segura do Linux (seccomp);
--enable-nts - suporte a Network Time Security (NTS) para sincronização de horário segura.
$ sudo ./configure --prefix=/opt/chrony --enable-scfilter --enable-nts
$ sudo make
$ sudo make install
$ sudo apt update
CONFIGURANDO
Criando os diretórios e arquivos necessários e setando permissões e proprietários:
$ cd /var/lib
O diretório /var/lib/chrony é o único que essa instalação cria, mas temos que alterar o proprietário:
$ sudo chown -R chrony chrony
$ cd
$ sudo mkdir /var/log/chrony
$ cd /var/log
$ sudo chown -R chrony chrony
$ cd
$ sudo touch /etc/chrony.keys
$ sudo chown chrony /etc/chrony.keys
$ sudo chmod 400 /etc/chrony.keys
Configurando (utilizo o vim, você utilize teu editor de texto predileto):
$ sudo vim /etc/chrony.keys
Coloque dentro:
1 SHA256 b1gS3cr3tKey123!
2 SHA256 Ch4v&S&cr3t4ch4v3?
Aconselho a mudar os caracteres e colocar sua própria combinação de caracteres.
A parte "1 SHA256"e "2 SHA256" deixe assim. Pode colocar mais chaves caso queira: "3 SHA sdFJ3dftj&*cDnHHmSA!", etc. Coloque um máximo de 4 chaves. Não há um limite de chaves, mas é aconselhado não muitas chaves.
No entanto, a chave utilizada para autenticação deve ter um ID (por exemplo, b1gS3cr3tKey123!) sem sinal no intervalo de 1 a 2^32-1 (2 elevado na 32 menos 1).
A função hash padrão é MD5, que é sempre suportada.
Se o chronyd foi criado com suporte habilitado para hash usando uma biblioteca de criptografia (nettle, nss ou libtomcrypt), as seguintes funções estão disponíveis: MD5, SHA1, SHA256, SHA384 e SHA512. Dependendo da biblioteca e da versão que o chronyd está usando algumas ou todas das seguintes funções e/ou criptografias também podem estar disponíveis: SHA3-224, SHA3-256, SHA3-384, SHA3-512, RMD128, RMD160, RMD256, RMD320, TIGER e WHIRLPOOL .
Copiando o chrony.conf porque nessa instalação ele não cria por padrão:
$ sudo cp /opt/croni/chrony-4.6.1/examples/chrony.conf.example2 /etc/chrony.conf
$ sudo vim /etc/chrony.conf
Deixe como abaixo:
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
cmdallow 127.0.0.1
local stratum 2
#pool pool.ntp.org iburst
server a.st1.ntp.br iburst nts
server b.st1.ntp.br iburst nts
server c.st1.ntp.br iburst nts
server d.st1.ntp.br iburst nts
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 0.1 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
#sourcedir /run/chrony-dhcp
#sourcedir /etc/chrony/sources.d
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Require authentication (nts or key option) for all NTP sources.
#authselectmode require
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony
# Insert/delete leap seconds by slewing instead of stepping.
leapsecmode step
leapsectz right/UTC
# Set the TAI-UTC offset of the system clock.
#leapseclist /usr/share/zoneinfo/leap-seconds.list
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
log measurements statistics tracking
# Erro máximo tolerado em ppm em relação aos servidores
maxupdateskew 10
Salve e saia.
É uma configuração própria para sincronizar a contento o relógio do sistema, caso quiser adapte para você.
Criando o UNIT para o famigerado Systemd (utilizei o vim, você utilize teu editor preferido):
$ sudo vim /etc/systemd/system/chrony.service
[Unit]
Description=Chrony NTP/NTS
After=syslog.target ntpdate.service sntp.service ntpd.service
Conflicts=ntpd.service systemd-timesyncd.service
[Service]
Type=notify
PIDFile=/run/chrony/chronyd.pid
ExecStart=/opt/chrony/sbin/chronyd -f /etc/chrony.conf -u chrony
ExecStop=/opt/chrony/sbin/chronyd
[Install]
WantedBy=multi-user.target
Alias=chrony.service
Salve e saia.
Veja bem, caso você executou a instalação em outro lugar que não /opt/chrony, ajuste os caminhos no arquivo acima.
CONFIGURAÇÕES FINAIS
Reconfigurando, habilitando e iniciando:
$ sudo systemctl daemon-reexec
$ sudo systemctl daemon-reload
$ sudo systemctl enable chrony
$ sudo systemctl start chrony
$ sudo systemctl status chrony
Caso tenha feito tudo certo estará como na imagem acima.
A mensagem em amarelo é porque foi a primeira sincronização, depois ela some.
Pode sempre verificar os servidores atuais em
A título de verificação acesse o site e verifique se no lado direito aparece:
"HORA CERTA XX:XX:XX SUA HORA XX:XX:XX UTC-3
A hora do seu computador está correta".
Caso não estiver, dê um refresh no site e se persistir refaça as configurações do arquivo /etc/chrony.conf com calma.
Os servidores "a.ntp.br, b.ntp.br", etc, são IPv6, caso quiser acrescentar, mas veja que não tem o NTS (Network Time Security) que é uma extensão de segurança do protocolo NTP (Network Time Protocol).
Criando 'aliases':
$ cd
$ vim apelidos (dê o nome que quiser)
Coloque dentro:
alias chronyc='/opt/chrony/bin/chronyc'
alias chronyd='/opt/chrony/sbin/chronyd'
alias chronycaut='sudo /opt/chrony/bin/chronyc -N authdata'
alias chronycmks='sudo /opt/chrony/bin/chronyc makestep'
Salve e saia.
$ vim .bashrc
Acrescente no final:
if [ -f apelidos ]; then
. apelidos
fi
Salve e saia.
$ source .bashrc
Testando:
$ chronyc
$ chronyd --version
$ chronycaut
$ chronyc tracking
Para os 4 comandos é necessário criar 'aliases', pois a instalação é manual.
Os comandos 'chronyc tracking', 'chronyc sources -v', além de outros, são reconhecidos automaticamente.
Caso aparecer mais algum comando que não for reconhecido basta acrescentar no arquivo de 'aliases'.
Serve para qualquer instalação de qualquer programa no Linux.
Na página de FAQ do Chrony:
"4.2. Continuo recebendo o erro: 501 Não Autorizado
Este erro indica que o chronyc enviou o comando para o chronyd usando um soquete UDP em vez do soquete de domínio Unix (por exemplo, /var/run/chrony/chronyd.sock), o que é necessário para alguns comandos. Por motivos de segurança apenas os usuários root e chrony têm permissão para acessar o soquete.
Também é possível que o soquete não exista. O chronyd não criará o soquete se o diretório tiver um proprietário ou permissões incorretas. Nesse caso deve haver uma mensagem de erro do chronyd no log do sistema."
É melhor criar aliases do que mudar permissões e proprietários, nesse caso.
E assim finalizamos a instalação e configuração do Chrony.
Para reiniciar: sudo systemctl restart chrony
Parar: sudo systemctl stop chrony
Status: sudo systemctl status chrony
Para recomeçar do zero:
$ cd /opt/croni
$ sudo rm -rf chrony-4.6.1
$ sudo rm -rf /opt/chrony
$ sudo mkdir /opt/chrony
$ sudo tar -xf chrony-4.6.1.tar.gz
$ cd chrony-4.6.1
$ sudo ./configure --prefix=/opt/chrony --enable-scfilter --enable-nts
$ sudo make
$ sudo make install
e proceda com as configurações.
Caso queira remover completamente:
/opt/croni/
/etc/chrony.conf
/etc/chrony.keys
/etc/systemd/system/chrony.service
/var/log/chrony
/var/lib/chrony
/etc/systemd/system/multi-user.target.wants/chrony.service
/etc/systemd/system/chrony.service
/run/chrony
/opt/chrony
/opt/croni
/sys/fs/cgroup/system.slice/chrony.service
Faça uma busca:
$ sudo find / | grep chrony | less
Para remover o usuário:
$ sudo deluser chrony
Projeto Chrony:
Recomendações e comparações do ntp.br:
Referências
Nenhum comentário:
Postar um comentário