sexta-feira, 20 de fevereiro de 2026

Hardening NTP/Chrony no Linux

INTRODUÇÃO

O hardening (fortalecimento) de NTP (Network Time Protocol - Protocolo de Tempo da Rede) em sistemas web é essencial para garantir a integridade de logs, certificados SSL/TLS, sessões de usuário e auditorias, evitando ataques de amplificação DDoS e manipulação de tempo. O protocolo utiliza a porta UDP 123 e com NTS utiliza a porta 4460.

Muitas vezes, até uma simples atualização do sistema pode falhar caso o relógio não estiver sincronizado com os servidores. Em uma rede interna, os access points podem não fornecer internet caso o relógio não esteja sincronizado com o servidor ou se o servidor estiver com a hora errada.

A segurança e sincronização de horários tornou-se crítica atualmente. Hoje, a sincronização de tempo não serve apenas para "deixar o relógio certo", mas é um requisito de segurança e funcionamento para quase tudo em uma rede moderna.

Deixo alguns exemplos de falhas de segurança dependentes do tempo (relógio certo):

1- Certificados

Se o servidor estiver com a data errada, mesmo que por poucos minutos, ele pode considerar um certificado válido como expirado ou vice-versa, derrubando sites, VPNs e conexões seguras.


2- Protocolos de Autenticação

Sistemas como Active Directory (Kerberos), dependendo das configurações, podem parar de funcionar se a diferença entre o cliente e o servidor for maior do que 5 minutos, impedindo o login de usuários.


3- Análise de Logs e Perícia

Se cada dispositivo tiver um horário diferente é impossível reconstruir a linha do tempo do evento (ex: "O ataque começou no Switch às 10:00, mas o servidor diz que foi às 10:05").


4- Wi-Fi e Roaming

Em redes com múltiplos Access Points (APs) a sincronização é vital para o Roaming (passar de um AP para outro sem cair). Protocolos como 802.11r usam chaves temporais. Se o AP 1 e o AP 2 estiverem dessincronizados o dispositivo do usuário pode ser desconectado ao tentar trocar do AP 1 para o AP 2 (ou vice-versa), ou seja, o usuário estará caminhando pela empresa/universidade/campus/etc e perderá o acesso à internet.

Ao final tem um link para instalação e configuração do Chrony para quem não o tenha instalado e configurado.


CONFIGURANDO

NTP ou Chrony (use um ou outro).


NTP
No Linux (geralmente /etc/ntp.conf), aplique restrições rígidas para evitar que seu servidor seja usado em ataques de reflexão:

$ sudo vim /etc/ntp.conf

Coloque dentro:

# Restringe acesso padrao
restrict default kod nomodify notrap nopeer noquery # IPv4
restrict -6 default kod nomodify notrap nopeer noquery # IPv6
#
# Permite localhost
restrict 127.0.0.1
restrict -6 ::1
#
# Permite upstream de confiança (ex: ntp.br)
restrict pool
ntp.br
nomodify notrap noquery
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
#
# Desabilita monitoramento (desabilita o 'comando' monlist usado para ataques DDoS)
disable monitor

Salve e saia.

Reinicie o serviço:

$ sudo systemctl restart ntp

Ou

$ sudo systemctl restart ntpd

CHRONY
Para quem tiver o Chrony instalado não necessita configurar o NTP, pois este deve estar desabilitado ou desinstalado para não dar conflito.

No chrony.conf verifique e/ou adicione:

# Rede(s) permitida(s)
allow 192.168.1/24

# Fontes de tempo
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

# Estratégia de segurança padrão do Chrony:
# 1. Não precisa de 'restrict default' (bloqueio é o padrão)
# 2. Localhost já é permitido para o chronyc via socket
# 3. Ratelimit para evitar abusos (similar ao kod e limited do NTP)
ratelimit interval 3 burst 16

# Salva a derivação do relógio
driftfile /var/lib/chrony/drift

# Desativar completamente a porta de comandos via rede
cmdport 0

Salve e saia.

Reinicie:

$ sudo systemctl restart chrony


- O Chrony suporta NTS nativamente. Basta adicionar a opção nts ao final da linha do servidor;
- O Chrony bloqueia tudo por padrão. Você não precisa configurar "regras de negação" para o público. Ele só responderá a quem estiver na lista allow;
- O Chrony já permite acesso via localhost (127.0.0.1/::1);
- O Chrony é imune ao ataque monlist que afetava o NTP antigo, pois não possui esse comando;
- Para os servidores do NTP.br (que suportam NTS), a autenticação já está "embutida" no protocolo, precisando somente do parâmetro nts.


CONCLUSÃO

Boas práticas

Use múltiplas fontes: Configure pelo menos 4 servidores NTP.

Isolamento: Utilize um servidor NTP interno, por exemplo, o Chrony, sincronizado com os servidores https://ntp.br/.

NTS: Considere o uso de NTS para autenticação criptográfica moderna.

Autenticação NTP: Use chaves simétricas para garantir que o servidor Web sincronize somente com servidores NTP autorizados (O Chrony usa Network Time Security (NTS) nativo que é mais seguro).

Caso tenha firewall (IPTables, NFTables, PFSense, UFW, etc), libere a porta 4460 para o NTS funcionar.

Exemplos:

$ sudo ufw allow out 4460/tcp

$ sudo iptables -A OUTPUT -p tcp --dport 4460 -j ACCEPT

No nftables.conf:

table inet filter {
    chain output {
        type filter hook output priority 0; policy drop;
        
        # Tráfego para sincronização de tempo (NTP.br)
        tcp dport 4460 accept comment "NTS Key Exchange"
        udp dport 123 accept comment "NTP Traffic"
        
        # Permitir tráfego já estabelecido
        ct state established,related accept
    }
}

Passo a Passo no pfSense:

Vá em Firewall > Rules.

Selecione a aba da interface onde seu servidor está (geralmente LAN).

Clique em Add (seta para cima) para criar uma nova regra:

Action: Pass
Interface: LAN
Address Family: IPv4 (ou IPv4+IPv6 se usar ambos)
Protocol: TCP
Source: O IP fixo do seu servidor (recomendado) ou LAN net.
Destination: Any (ou crie um Alias com os IPs do NTP.br para ser mais rígido).
Destination Port Range: From 4460 to 4460.
Description: Permitir NTS Key Exchange (Chrony)

Clique em Save e depois em Apply Changes.

Muitas vezes, além da regra de porta, o pfSense pode ter o pacote pfBlockerNG ou Snort/Suricata instalado. Se eles estiverem ativos, podem estar identificando o tráfego na porta 4460 como "não padrão" e descartando a conexão.


Testando no Chrony

Após aplicar as regras e reiniciar o firewall, teste novamente a conectividade.

Reinicie o Chrony:

$ sudo systemctl restart chrony

Teste de rede:

$ nc -zv a.st1.ntp.br 4460

(Deve retornar Connection to ... succeeded).

Caso retornar algo como:

KeyID 0/KLen 0: A conexão segura não foi estabelecida.


Verifique o handshake:

$ sudo chronyc authdata

Atmp (Attempts): O número 2 em Last Atmp mostra que o Chrony tentou, mas não obteve sucesso recente em renovar os cookies de segurança.

Todos os servidores agora devem exibir KeyID maior que 0 e KLen como 256.

Comandos úteis Chrony:

$ sudo systemctl restart chrony

$ sudo service chrony restart

$ sudo chronyc sources

$ sudo chronyc authdata

$ sudo chronyc tracking

$ nc -zv time.cloudflare.com 4460

$ nc -zv nts.netnod.se 4460

$ nc -zv a.st1.ntp.br 4460

$ sudo journalctl -u chrony | grep -i nts

$ ping -s 1400 a.st1.ntp.br

Se você quiser ver em tempo real o que seu Linux está fazendo ao reiniciar, abra um segundo terminal e deixe rodando:

$ sudo journalctl -f -u chrony

Instalação e configuração do Chrony:



Guia de configuração NTS no Linux com Chrony:


domingo, 25 de janeiro de 2026

Converter os repositórios Debian para o novo formato


O Debian tem um novo formato de arquivo de repositórios.

Caso quiser converter o Debian 12 (Bookworm) e o Debian 13 (Trixie), faça o seguinte:

Debian 12 - Atualizando as chaves

$ sudo curl -fsSL https://ftp-master.debian.org/keys/archive-key-12.asc -o /usr/share/keyrings/debian-archive-keyring.gpg


Debian 13 -Atualizando as chaves

$ sudo curl -fsSL https://ftp-master.debian.org/keys/archive-key-13.asc -o /usr/share/keyrings/debian-archive-keyring.gpg

Renomeie o sources.list antigo e crie o novo arquivo de repositórios:

$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.old

$ sudo vim /etc/apt/sources.list.d/debian.sources <<< usei o vim, use teu editor preferido.


Conteúdo do debian.sources para Debian 12

# bookworm e bookworm-updates
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm bookworm-updates
Components: main non-free-firmware contrib non-free
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# bookworm-security
Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: bookworm-security
Components: main non-free-firmware contrib non-free
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Backports
# O repositório backports deixe comentado, pois não é recomendado deixá-lo habilitado o tempo todo, depois caso quiser  instalar um pacote backport em específico, basta alterar o debian.sources para "yes" e executar:
# sudo apt install -t bookworm-backports nome-do-pacote
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm-backports
Components: main non-free-firmware contrib non-free
Enabled: no
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Proposed Updates
# Deixe comentado e utilize quando necessário.
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: bookworm-proposed-updates
Components: main non-free-firmware contrib non-free
Enabled: no
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Salve e saia.

$ sudo apt update


Conteúdo do debian.sources para Debian 13

# trixie e trixie-updates
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main non-free-firmware contrib non-free
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# trixie-security
Types: deb deb-src
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main non-free-firmware contrib non-free
Enabled: yes
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Backports
# O repositório backports deixe comentado, pois não é recomendado deixá-lo habilitado o tempo todo, depois caso quiser  instalar um pacote backport em específico, basta alterar o debian.sources para "yes" e executar:

# sudo apt install -t trixie-backports nome-do-pacote
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-backports
Components: main non-free-firmware contrib non-free
Enabled: no
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

# Proposed Updates
Types: deb deb-src
URIs: http://deb.debian.org/debian/
Suites: trixie-proposed-updates
Components: main non-free-firmware contrib non-free
Enabled: no
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Salve e saia.

$ sudo apt update

A opção "Enabled: yes" é opcional, pois é padrão, mas coloque caso depois quiser desabilitar com "Enable: no" (equivalente a comentar) um repositório.

O repositório backports deixe comentado, pois não é recomendado deixá-lo habilitado o tempo todo, depois caso quiser instalar um pacote backport em específico, basta alterar o debian.sources para "yes" e executar:

$ sudo apt update
$ sudo apt install -t bookworm-backports nome-do-pacote

$ sudo apt update
$ sudo apt install -t trixie-backports nome-do-pacote


No repositório "proposed-updates" todas as mudanças da versão estável (stable) (e antiga (oldstable)) lançada passam por um período de testes extensivos antes de serem aceitas no repositório. Essas atualizações da versão estável (e da antiga) são chamadas de versão pontual.

A preparação para as versões pontuais é feita através do mecanismo proposed-updates. Pacotes atualizados são enviados para uma fila separada chamada p-u-new (o-p-u-new) antes de serem aceitos no proposed-updates (e no oldstable-proposed-updates).
São pacotes que cujas atualizações ainda não foram plenamente testadas com o conjunto do sistema, podemos dizer que são atualizações "betas" que depois provavelmente serão incorporadas nos repositórios.

$ sudo apt update
$ sudo apt install -t bookworm-proposed-updates nome-do-pacote

$ sudo apt update
$ sudo apt install -t trixie-proposed-updates nome-do-pacote

Depois é só retornar o Enabled para "no" e "sudo apt update" para atualizar os índices.


Você pode, também, em vez de realizar o procedimento manualmente, utilizar o comando pronto:

$ sudo apt modernize-sources

O arquivo /etc/apt/sources.list será transformado em /etc/apt/sources.list.d/debian-sources e será criado um backup em /etc/apt/sources.list.bak.
Porém, como o comando é automatizado, ele transformará somente o básico e caso tiver repositórios comentados eles não serão atualizados no debian.sources. Você terá de entrar no arquivo, corrigir manualmente e executar:

$ sudo apt update

E caso você tenha baixado as chaves GPG manualmente:

$ sudo apt reinstall debian-archive-keyring
$ sudo apt reinstall debian-keyring
$ sudo apt update

Referência


quinta-feira, 15 de janeiro de 2026

VMD no Linux - Instalação e configuração


INTRODUÇÃO

A concretização deste curto artigo demorou um pouco, mas a idéia já vicejava há algum tempo.

Utilizei o Debian para a instalação, mas pode ser utilizada outra distribuição adaptando-se os respectivos comandos e dependências.

Como sempre, leia todo este singelo texto antes de sair executando comandos.

* Esta é uma atualização do artigo de 2014 em:

https://www.vivaolinux.com.br/artigo/VMD-no-Debian-Instalacao-e-configuracao/


VMD

O VMD (Visual Molecular Dynamics) é um software projetado para modelagem, visualização e análise de sistemas biológicos, tais como proteínas, ácidos nucleicos, montagens lipídicas em bicamadas, etc, mas também pode ser utilizado para visualizar moléculas mais gerais.

O VMD pode ler arquivos de proteínas padrão e exibir a sua estrutura. O VMD fornece uma ampla variedade de métodos de renderização e colorização de moléculas: pontos e linhas simples, esferas e cilindros de CPK, tubos de backbone, desenhos animados e outros.

O VMD pode ser usado para animar e analisar a trajetória de uma simulação de dinâmica molecular (DM).

Em particular, o VMD pode atuar como uma interface gráfica de um programa externo de dinâmica molecular, exibindo e animando uma determinada molécula.


INSTALAÇÃO

Site do VMD:

https://www.ks.uiuc.edu/Research/vmd/

Para fazer o download do VMD, acesse o link:

https://www.ks.uiuc.edu/Development/Download/download.cgi?UserID=&AccessCode=&ArchiveID=1730

Ou

https://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=VMD

Após clicar em um dos links, faça o registro, logue-se, aceite a licença e faça o download.

Salve o arquivo em um diretório de sua escolha, atualize o sistema e instale as dependências:

# apt update
# aptitude safe-upgrade
# apt install binutils kmod
# apt install csh tcsh
# apt install libstdc++6
# apt install rlwrap

Após entrar no diretório onde salvou o arquivo descompacte e instale:

# cd VMD (por exemplo, eu criei uma pasta chamada VMD)
# tar -xzvf vmd-2.0.0a8.bin.LINUXAMD64.tar.gz
# cd vmd-2.0.0a8

Depois faça:

# ./configure
using configure.options: LINUXAMD64 OPENGL OPENGLPBUFFER FLTK TK ACTC CUDA CXX11 IMD LIBSBALL XINERAMA XINPUT LIBTACHYON LIBPNG ZLIB VRPN NETCDF COLVARS TCL PYTHON PTHREADS NUMPY SILENT

# cd src

# make install
Make sure /usr/local/bin/vmd is in your path.
VMD installation complete.  Enjoy!

Execute:

# vmd

... e deverão abrir as janelas do VMD.


CONFIGURAÇÃO

Caso apareça o seguinte erro: rlwrap: No match.

Edite o arquivo:

# vim /usr/local/bin/vmd

Usei o vim, uses teu editor preferido.

Dentro do arquivo, encontre esse bloco (aproximadamente a partir linha 343):

# detect if we have rlwrap available to have commandline editing
set vmdprefixcmd=""
if ($?VMDNORLWRAP == 0) then
  if (("${ARCH}" == "LINUX") || ("${ARCH}" == "LINUXAMD64")) then
    set rlwrap=`which rlwrap`
    if ( -x "$rlwrap" ) then
      if ( -f ${MASTERVMDDIR}/vmd_completion.dat ) then
        set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ -f ${MASTERVMDDIR}/vmd_completion.dat "
      else 
        set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ "
      endif
      # indicate that rlwrap is in use to cause VMD to 
      # auto-disable internal line editing features since rlwrap is active
      setenv VMDRLWRAPINUSE 1
    endif
  endif
endif


E deixe ele assim:


# detect if we have rlwrap available to have commandline editing

set vmdprefixcmd=""
if ($?VMDNORLWRAP == 0) then
  if (("${ARCH}" == "LINUX") || ("${ARCH}" == "LINUXAMD64")) then
    set rlwrap=`which rlwrap`
    if ( -x "$rlwrap" ) then
      if ( -f ${MASTERVMDDIR}/vmd_completion.dat ) then
#        set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ -f ${MASTERVMDDIR}/vmd_completion.dat "
        set vmdprefixcmd="rlwrap -C vmd -c -f ${MASTERVMDDIR}/vmd_completion.dat "
      else 
#        set vmdprefixcmd="rlwrap -C vmd -c -b(){}[],&^%#;|\\ "
        set vmdprefixcmd="rlwrap -C vmd -c "
      endif
      # indicate that rlwrap is in use to cause VMD to 
      # auto-disable internal line editing features since rlwrap is active
      setenv VMDRLWRAPINUSE 1
    endif
  endif
endif

Basicamente, comente as duas linhas indicadas colocando um # na frente delas e acrescente as outras duas embaixo de cada uma, respectivamente.

O problema está na flag -b, seguida pela expressão regular -b(){}[],&^%#;|\\ , é só suprimí-las e o VMD funcionará normalmente no Debian.

O aviso aparenta ser um problema do CSH, que não consegue interpretar a expressão regular, por isso o aviso rlwrap: No match, ou seja, rlwrap: não combina, não corresponde.

Entrei no arquivo /usr/bin/rlwrap para encontrar a correspondência da expressão, porém, o mesmo é um arquivo binário e como não tem necessidade destrinchá-lo, encontrei a solução nesse link (http://www.ks.uiuc.edu/Research/vmd/mailing_list/vmd-l/19158.html).

O rlwrap (readline wrapper) executa um comando especifico, interceptando a entrada do usuário a fim de fornecer a edição de uma linha, a história persistente e a conclusão. Resumindo, o rlwrap, grosso modo, faz com que o comando vmd seja devidamente interpretado no terminal, sendo que a execução do VMD se dá de forma completa, mesmo com as alterações feitas.

Maiores informações:

# man rlwrap

Faça as alterações, salve, saia do arquivo e execute:

# vmd

... que deverão abrir as janelas do VMD.

Enjoy.

Para remover, entre nos diretórios:

/usr/local/bin e /usr/local/lib.

Delete a pasta vmd, em cada um deles.

E instale uma nova versão, caso queira.


TRABALHANDO NATIVAMENTE COM LOGS NO LINUX

 


INTRODUÇÃO

A maioria das distribuições Linux (www.vivaolinux.com.br/linux/) já tem um controle nativo dos arquivos de logs, mas ele depende de como o sistema está configurado.

Algum ou outro programa pode instalar seu log em outro lugar que não /var/log ou você mesmo durante a instalação manual pode ter colocado o arquivo de log em outro lugar.

A maioria das distribuições Linux não gera um número fixo de arquivos de log, pois utiliza o diretório centralizado (/var/log) onde o sistema operacional, o kernel e os aplicativos instalados criam seus arquivos e o próprio sistema gerencia isso.

Caso tenha um crescimento exagerado e por "crescimento exagerado" estou falando de coisa de GBs para cima, então é porque tem algum problema no sistema e você terá de identificar qual o problema de o sistema aumentar exageradamente os logs ou um log em específico.

Nas distribuições que tem o Systemd , quem controla logs no Linux hoje é o systemd-journald , no caso, Debian, Arch, Ubuntu, Mint, etc.

Nas distribuições que não tem o Systemd , como, por exemplo, Slackware, Gentoo, Alpine, Void Linux, etc, entra um desses: syslog-ng, rsyslog, busybox, syslogd (sistemas mínimos) e metalog (menos comum), além de outros específicos de cada distribuição.

O logrotate (logs em arquivos texto), comum na esmagadora maioria das distribuições com ou sem
Systemd, cuida de logs como:

/var/log/syslog
/var/log/auth.log
/var/log/apache2/*.log
/var/log/nginx/*.log

O logrotate gira logs (rotate), compacta (.gz), apaga logs antigos, roda automaticamente (cron ou systemd timer), etc. A configuração fica, basicamente, em /etc/logrotate.conf e /etc/logrotate.d/.

Uma boa prática básica para servidor é definir limites no /etc/systemd/journald.conf , por exemplo:

SystemMaxUse=100M
SystemKeepFree=1G

E confiar no logrotate para o resto.

Sem Systemd podemos definir limites em /etc/logrotate.conf:

# see "man logrotate" for details
# global options do not affect preceding include directives
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
#dateext
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may also be configured here.

Nível do artigo: Básico.

VERIFICANDO E CONFIGURANDO LOGS

Faça o seguinte, primeiro veja quantos arquivos de logs tem em /var/log:

ls /var/log | grep .log | wc -l
30

Aqui deu 30 arquivos com a extensão .log.

Para ver o total:
$ ls /var/log | wc -l

Depois veja o tamanho (em -30 você pode colocar -10, -20, etc, depende de quantos arquivos você quer
visualizar):

$ sudo du -sh /var/log/* | sort -hr | head -30

[sudo] senha para usuario:
360M /var/log/journal
17M /var/log/installer
644K /var/log/chrony
624K /var/log/slurm
592K /var/log/apt
376K /var/log/dpkg.log
196K /var/log/wtmp
136K /var/log/dpkg.log.5.gz
120K /var/log/dpkg.log.1
108K /var/log/apache2
96K /var/log/dpkg.log.7.gz
96K /var/log/cups
44K /var/log/exim4
40K /var/log/lightdm
40K /var/log/boot.log.3
32K /var/log/Xorg.0.log.old
32K /var/log/Xorg.0.log
28K /var/log/Xorg.1.log
16K /var/log/munge
16K /var/log/dpkg.log.4.gz
16K /var/log/boot.log.5
16K /var/log/aptitude
12K /var/log/dpkg.log.3.gz
12K /var/log/dpkg.log.2.gz
12K /var/log/alternatives.log
8,0K /var/log/fontconfig.log
8,0K /var/log/dpkg.log.6.gz
8,0K /var/log/boot.log.7
8,0K /var/log/boot.log.6
8,0K /var/log/boot.log.4

Repare que aqui, no Debian, essa instalação já tem mais de dois anos e nunca fiz controle nenhum dos logs.
O maior log, com 360M, é /var/log/journal e não é grande.

Quer ver todos os logs, pelo menos os do sistema, execute:

$ cd /var/log
$ ls
alternatives.logaptitude.3.gzbtmp.1fontconfig.log
alternatives.log.1aptitude.4.gzchronyinstaller
alternatives.log.2.gzaptitude.5.gzcupsjournal
alternatives.log.3.gzaptitude.6.gzdpkg.loglastlog
alternatives.log.4.gzboot.logdpkg.log.1lightdm
alternatives.log.5.gzboot.log.1dpkg.log.2.gzprivate
alternatives.log.6.gzboot.log.2dpkg.log.3.gzREADME
alternatives.log.7.gzboot.log.3dpkg.log.4.gzrunit
apache2boot.log.4dpkg.log.5.gzspeech-dispatcher
aptboot.log.5dpkg.log.6.gzwtmp
aptitudeboot.log.6dpkg.log.7.gzXorg.0.log
aptitude.1.gzboot.log.7exim4Xorg.0.log.old
aptitude.2.gzbtmpfaillogXorg.1.log

Para ver quanto espaço em disco cada item dentro de /var/log está usando:
$ sudo du -sh /var/log/*

sudo - executa como administrador (necessário porque alguns logs só o root pode ler)
du (disk usage) → calcula o uso de disco
-s (summary) - mostra apenas o total de cada item, sem detalhar subpastas
-h (human-readable) - formata os tamanhos de forma legível (KB, MB, GB)
/var/log/* - todos os arquivos e diretórios dentro de /var/log

Para ver os 10 maiores ordenando do maior para o menor:
$ sudo du -sh /var/log/* | sort -hr | head -n 10

360M/var/log/journal
17M/var/log/installer
644K/var/log/chrony
412K/var/log/apt
176K/var/log/wtmp
136K/var/log/dpkg.log.5.gz
120K/var/log/dpkg.log.1
108K/var/log/apache2
96K/var/log/dpkg.log.7.gz
88K/var/log/dpkg.log

Lembrando que algum ou outro programa pode instalar seu log em outro lugar que não /var/log ou você mesmo durante a instalação manual pode ter colocado o arquivo de log em outro lugar.

A maioria das distribuições Linux, não gera um número fixo de arquivos de log, pois utiliza o diretório centralizado (/var/log) onde o sistema operacional, o kernel e os aplicativos instalados criam seus arquivos e o próprio sistema gerencia isso.

Caso tenha um crescimento exagerado e por "crescimento exagerado" estou falando de coisa de GBs para cima, então é por que tem algum problema no sistema e você terá de identificar qual o problema de o sistema aumentar exageradamente os logs ou um log em específico.

Por exemplo, no meu caso, o maior dos logs é /var/log/journal.

Nesse caso posso editar o arquivo de configuração:

$ sudo vim /etc/systemd/journald.conf

Usei o vim , use teu editor preferido.

Veja as opções abaixo, que nem estão configuradas, mas, por exemplo, em "SystemMaxUse=" podemos definir o tamanho máximo total para os logs (500M para 500MB, 1G para 1GB, etc).

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=0
#MaxFileSec=1month
#ForwardToSyslog=no
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#MaxLevelSocket=debug
#LineMax=48K
#ReadKMsg=yes
#Audit=yes

Depois de alterar o arquivo, salve e saia.

Reinicie o serviço:
$ sudo systemctl restart systemd-journald

Para ver quanto ele está usando:
$ sudo journalctl --disk-usage
Hint: You are currently not seeing messages from other users and the system.
Users in groups 'adm', 'systemd-journal' can see all messages.
Pass -q to turn off this notice.
Archived and active journals take up 66.3M in the file system.

Diz que está usando 66.3M, porém, com o comando "du" mostra 360M.

É que o comando "journalctl --disk-usage" mostra apenas o espaço que o journald considera válido e utilizável, enquanto que o comando "du" soma todo o espaço ocupado no disco pelo diretório incluindo arquivos .journal ativos, arquivos arquivados, arquivos já marcados como deletados mas ainda abertos pelo systemd-journald e overhead do filesystem (blocos alocados), etc.
O journalctl mostra o uso lógico, não o físico.

Reiniciando o journald, os valores ficarão praticamente iguais:
$ sudo systemctl restart systemd-journald

$ sudo du -sh /var/log/journal
360M /var/log/journal

$ sudo journalctl --disk-usage
Archived and active journals take up 359M in the file system.

$ journalctl --disk-usage
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Archived and active journals take up 66.3M in the file system.

Veja que o comando journalctl com sudo mostra um valor (359M) e sem sudo mostra 66.3M.
Na saída sem o sudo está a explicação dizendo que não estamos vendo as mensagens dos outro usuários e do sistema. Para ver todo o tamanho é só usar sudo.

Para reduzir o tamanho para 100M:
$ sudo journalctl --vacuum-size=100M

Ou só últimos 7 dias:
$ sudo journalctl --vacuum-time=7d

Para mais opções:
$ man journalctl


CONFIGURANDO LOGS

Também pode configurar alguns logs do sistema em logrotate.d .
Vá em /etc/logrotate.d/ e edite os arquivos (apache2, aptitude, etc).

$ cd /etc/logrotate.d
$ ls
alternatives  aptitude  chrony       exim4-base      sane-utils         wtmpdb
apache2       bootlog   cups-daemon  exim4-paniclog  speech-dispatcher
apt           btmp      dpkg         ppp             wtmp


Por exemplos:

$ sudo vim aptitude
/var/log/aptitude {
rotate 6
monthly
compress
missingok
notifempty
}

$ sudo vim apt
/var/log/apt/term.log {
rotate 12
monthly
compress
missingok
notifempty
}

/var/log/apt/history.log {
rotate 12
monthly
compress
missingok
notifempty
}

$ sudo vim apache2
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then
run-parts /etc/logrotate.d/httpd-prerotate
fi
endscript
postrotate
if pgrep -f ^/usr/sbin/apache2 > /dev/null; then
invoke-rc.d apache2 reload 2>&1 | logger -t
apache2.logrotate
fi
endscript
}

Dependendo do log, tem diferenças entre as opções, mas, basicamente, são as mesmas.
Abaixo temos algumas indicações das opções:

    daily          # Rotação diária
    monthly	   # Rotação mensal
    rotate 7       # Mantém 7 arquivos antigos
    compress       # Comprime logs antigos (gzip)
    delaycompress  # Comprime o arquivo anterior
    missingok      # Não gera erro se o arquivo não existir
    notifempty     # Não rotaciona se vazio
    size 100M      # (Opcional) Rotaciona se o arquivo atingir 100MB


CONCLUSÃO

A maioria das distribuições Linux já tem um controle nativo dos arquivos de logs, mas ele depende de como o sistema está configurado.

Nas distribuições que tem o Systemd , quem controla logs no Linux hoje é o systemd-journald , no caso, Debian, Arch, Ubuntu, Mint, etc.

Nas distribuições que não tem o systemd, como, por exemplo, Slackware, Gentoo, Alpine, Void Linux, etc, entra um desses: syslog-ng, rsyslog, busybox, syslogd (sistemas mínimos) e metalog (menos comum), além de outros específicos de cada distribuição.

O logrotate (logs em arquivos texto), comum na esmagadora maioria das distribuições com ou sem systemd, cuida de logs como:

/var/log/syslog
/var/log/auth.log
/var/log/apache2/*.log
/var/log/nginx/*.log

O logrotate gira logs (rotate), compacta (.gz), apaga logs antigos, roda automaticamente (cron ou systemd timer), etc. A configuração fica, basicamente, em /etc/logrotate.conf e /etc/logrotate.d/ .

Pessoalmente, só acredito ser necessário alterar configurações dos logs caso for um servidor que lida com grandes cargas de dados, então se faz necessário configurar os logs para ter um melhor controle.

Caso for desktop, somente se faz necessário alterar essas configurações caso tenha algum programa específico que gere logs muitos grandes, senão não altere, deixe tudo no padrão e não se preocupe com isso, apenas monitore de vez em quando para ver se não tem algum problema.

Quando tiver um crescimento exagerado dos logs então é porque tem algum problema sério no sistema e você deverá identificá-lo e corrigi-lo.

quarta-feira, 7 de janeiro de 2026

Vícios


O corpo humano cria tolerância e depois vem a dependência.

Aquilo que chamam de vício ou dependência química.

Ninguém se vicia em alguma coisa de uma hora para outra.

O processo leva dias, meses ou anos, depende da genética da pessoa.

Ninguém fuma o primeiro cigarro na vida hoje; e amanhã está fumando três carteiras.

Ninguém toma o primeiro gole de bebida alcoólica hoje; e amanha está literalmente bebendo três garrafas de cachaça.

O processo de vício é ao longo do tempo.

A coisa resume-se em três fases: Dependência Psicológica, Tolerância e Dependência Física.

Primeiro você se vicia psicologicamente, você se apega psicologicamente à substância externa; depois vem a Tolerância porque o corpo humano é programado para tolerar qualquer substância que você ingere. Por último, vem a Dependência Física, ou seja, o corpo não vive mais sem aquela substância externa.

O que chamam atualmente de "Dependência Química" ou "Vício" é a soma desses três processos.

Vamos discorrer sobre os processos.


1 - Dependência Psicológica

Dizem que o vício é uma fuga... e realmente é.
Você começa a beber, por exemplo, umas vezes por convenção social, aprendeu com os pais, com mais velhos, etc.
Começa a beber e nem sabe o porquê.
No começo é bom porque todo vício é gostoso e por isso mesmo é vício, senão não seria vício. Não estou dizendo que toda coisa gostosa é vício, mas é uma característica do vício ser gostoso, ser bom.

Esse é o problema do vício.

Tomarei como exemplo o álcool que, segundo dizem, é o pior dos vícios... e realmente o é.

O álcool age sub-repticiamente, age nas entrelinhas.
Porém, existem diferenças entre os vícios, diferenças estas causadas pela própria substância física causadora do vício em si, o que é óbvio.
Você fuma ou bebe ou ingere (ingere é o termo geral) uma substância causadora de vício.

Substância causadora de vício é aquela substância externa ou interna que o corpo se acostuma com ela e depois cria Tolerância e depois Dependência Física.

Por exemplo, a adrenalina é uma substância naturalmente interna, mas pode-se viciar nela através de fortes emoções (causador externo).
Também pode-se viciar em adrenalina externa (ingerir produtos que tem adrenalina na sua composição). Que fique bem claro a diferença entre substância externa e interna.

Seguindo no exemplo do álcool, você começa a beber um golezinho todos os dias ou nos fins de semana e sente-se bem, isso é inegável.

O problema é justamente esse: "sente-se bem".

A partir daí um gole já não faz mais efeito, precisa-se de dois goles e depois de três goles e assim sucessivamente. Quando você percebe, depois de dias, semanas, meses, anos, você está bebendo três ou quatro garrafas de cachaça por dia, ou três garrafas de uísque, dependendo da sua condição financeira. O seu corpo começa a criar a Tolerância porque o corpo humano é programado para não morrer, então ele se adapta.

Com a maconha, cocaína, crack, heroína, etc, acontece a mesma coisa, porém, o processo é mais rápido em relação ao álcool porque são substâncias diferentes.

Torna-se necessário esclarecer o que é aquilo que o ser humano chama de "drogas".

Aquilo que o ser humano chama de "Drogas" são substâncias que não são nutrientes em si, algumas drogas até contém nutrientes, porém, não são nutrientes em si.

Você come um prato de comida e esse prato de comida causa uma reação química/física no seu corpo, mas você não chama um prato de comida de "droga" porque isso não te entorpece, isso não age diretamente no seu cérebro alterando seu entendimento da realidade.
O seu corpo identifica se é um nutriente ou não. Caso não for, ele elimina através de fezes, urina, suor ou vômito.

Tudo o que o ser humano ingere causa uma reação química/física. Não vou aqui discorrer a diferença entre reação química e física.

Você bebe um copo de água, isso causa uma reação química no seu corpo, porém, não classificamos o copo de água como uma "droga".

"Droga" é tudo aquilo que causa uma reação direta no cérebro, ou seja, tira a sua percepção da realidade, seja em curto, médio ou longo prazo.
Nós, seres humanos, classificamos as drogas devido aos seus efeitos no corpo humano.
Maconha, álcool, cigarro, cocaína, crack, heroína, ópio, etc. Cada uma tem seu ritual próprio de uso e tem seus próprios efeitos. O ritual de uso é definido pela droga em si, o que é óbvio. Maconha se fuma, cocaína se cheira, álcool se bebe e assim por diante.
Por exemplo, geralmente aquelas pessoas que gostam de tomar sua cervejinha praticamente todos os dias abominam drogas como maconha e cocaína e não consideram o álcool uma droga.
E geralmente aquelas pessoas que gostam de fumar seu baseado praticamente todos os dias abominam os alcoólatras e não consideram a maconha uma droga.

Primeiro você se vicia Psicologicamente, isso é óbvio.

Repito: ninguém toma um gole de cerveja, fuma um cigarro, etc, hoje; e amanhã está consumindo uma quantidade exagerada.

Até porque se isso acontecesse daria o efeito contrário.

Por exemplo: se você pega teu filho adolescente fumando um cigarro e o tranca num armário e diz para ele: "Você só vai sair daí quando fumar toda essa carteira de cigarro!".

Caso teu filho achar bom e começar a fumar cigarros dentro de um armário fechado, dará o efeito contrário. Ele passará mal, baterá na porta gritando que quer sair, etc.

Não estou sugerindo que é isso que se faça, mas todo vício, por agir aos poucos, a melhor forma de combater no início, algumas vezes, seria fazer consumir a substância exageradamente em pouquíssimo tempo, porém, os danos físicos dessa prática podem ser permanentes, o risco é muito grande.

Estamos discorrendo sobre Dependência Psicológica, mas as três estão entranhadas.

Muitas vezes discorre-se sobre uma e tem de se dizer das outras.

Você se apega psicologicamente à substância química.

"Psicologia" é o estudo da alma. "Psiqué".

E essa substância passa a fazer parte da sua vida.

Você acredita que tem controle sobre ela, mas não tem.

Primeiro você se apega à substância porque é bom, é confortável, muitas vezes realmente esclarece as idéias, mas esse é o problema do vício.

Permito agora dizer de Aristóteles: a Temperança!

Platão e Sócrates, anteriormente, também falavam da Temperança.

Temperança tem nada a ver com "estar em cima do muro", tem nada a ver com "ser isentão".

Temperança, neste sentido, é estar consciente de que você está se viciando.

No momento em que você diz que tem controle sobe o vício, VOCÊ NÃO TEM.

As pessoas se viciam pelos mais diversos motivos, desde o tédio da falta do que fazer até a depressão clínica, passando pelos mais diversos motivos.
Tem pessoas que são viciadas em comer, por exemplo. Outras são viciadas em masturbação. Talvez os motivos que levam a um determinado tipo de vício sejam iguais no seu início.

Em construção, ainda terminarei esse escrito, está longe do fim.