<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.ispup.com.br/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gondim</id>
	<title>ISPUP! - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ispup.com.br/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gondim"/>
	<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/Especial:Contribui%C3%A7%C3%B5es/Gondim"/>
	<updated>2026-04-21T10:03:22Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1140</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1140"/>
		<updated>2026-04-16T16:57:30Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install gdisk util-linux&lt;br /&gt;
 &lt;br /&gt;
 # wipefs -a /dev/sdb&lt;br /&gt;
 # sgdisk --zap-all /dev/sdb&lt;br /&gt;
&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1139</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1139"/>
		<updated>2026-04-16T16:57:20Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.t&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install gdisk util-linux&lt;br /&gt;
 &lt;br /&gt;
 # wipefs -a /dev/sdb&lt;br /&gt;
 # sgdisk --zap-all /dev/sdb&lt;br /&gt;
&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Artigos_Tecnicos&amp;diff=1138</id>
		<title>Artigos Tecnicos</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Artigos_Tecnicos&amp;diff=1138"/>
		<updated>2026-04-12T20:50:26Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Artigos Técnicos}}&lt;br /&gt;
[[Arquivo:Tecnico.png|nenhum|miniaturadaimagem]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IPv6 Por onde comecar|IPv6 - Por onde começar]]&lt;br /&gt;
&lt;br /&gt;
[[Debian Cluster CEPH]]&lt;br /&gt;
&lt;br /&gt;
[[Autenticacao TOTP Radius Tacacs Debian|Autenticação TOTP + Radius/Tacacs no Debian]]&lt;br /&gt;
&lt;br /&gt;
[[Static Loop|Static Loop - um erro que pode matar seu ISP/ITP]]&lt;br /&gt;
&lt;br /&gt;
[[Portas Amplificacao DDoS|Portas de Amplificação DDoS e Botnets]]&lt;br /&gt;
&lt;br /&gt;
[[POC DNS Anycast TCP|PoC - Quebra do TCP em DNS Anycast Balanceado]]&lt;br /&gt;
&lt;br /&gt;
[[Template Servidor Debian|Template de Servidor Debian GNU/Linux]]&lt;br /&gt;
&lt;br /&gt;
[[Policy Based Routing|Policy Based Routing (PBR)]]&lt;br /&gt;
&lt;br /&gt;
[[PHPIPAM|DCIM/IPAM com phpIPAM]]&lt;br /&gt;
&lt;br /&gt;
[[Vazamento de prefixos na mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[Enviando mensagens para o Discord]]&lt;br /&gt;
&lt;br /&gt;
[[Recomendacao Mitigacao DDoS|Recomendações sobre Mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[Identificando e neutralizando uma Botnet]]&lt;br /&gt;
&lt;br /&gt;
[[MSMTP com OAuth2|MSMTP com OAuth2 no Debian 12]]&lt;br /&gt;
&lt;br /&gt;
[[Geolocalizacao|Geolocalização e a Internet]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Artigos_Tecnicos&amp;diff=1137</id>
		<title>Artigos Tecnicos</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Artigos_Tecnicos&amp;diff=1137"/>
		<updated>2026-04-12T20:49:35Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Artigos Técnicos}}&lt;br /&gt;
[[Arquivo:Tecnico.png|nenhum|miniaturadaimagem]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[IPv6 Por onde comecar|IPv6 - Por onde começar]]&lt;br /&gt;
&lt;br /&gt;
[[Debian Cluster CEPH]]&lt;br /&gt;
&lt;br /&gt;
[[Static Loop|Static Loop - um erro que pode matar seu ISP/ITP]]&lt;br /&gt;
&lt;br /&gt;
[[Portas Amplificacao DDoS|Portas de Amplificação DDoS e Botnets]]&lt;br /&gt;
&lt;br /&gt;
[[POC DNS Anycast TCP|PoC - Quebra do TCP em DNS Anycast Balanceado]]&lt;br /&gt;
&lt;br /&gt;
[[Template Servidor Debian|Template de Servidor Debian GNU/Linux]]&lt;br /&gt;
&lt;br /&gt;
[[Policy Based Routing|Policy Based Routing (PBR)]]&lt;br /&gt;
&lt;br /&gt;
[[PHPIPAM|DCIM/IPAM com phpIPAM]]&lt;br /&gt;
&lt;br /&gt;
[[Vazamento de prefixos na mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[Enviando mensagens para o Discord]]&lt;br /&gt;
&lt;br /&gt;
[[Recomendacao Mitigacao DDoS|Recomendações sobre Mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[Identificando e neutralizando uma Botnet]]&lt;br /&gt;
&lt;br /&gt;
[[MSMTP com OAuth2|MSMTP com OAuth2 no Debian 12]]&lt;br /&gt;
&lt;br /&gt;
[[Geolocalizacao|Geolocalização e a Internet]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1136</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1136"/>
		<updated>2026-04-10T16:46:10Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install gdisk util-linux&lt;br /&gt;
 &lt;br /&gt;
 # wipefs -a /dev/sdb&lt;br /&gt;
 # sgdisk --zap-all /dev/sdb&lt;br /&gt;
&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1135</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1135"/>
		<updated>2026-04-10T15:28:43Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install gdisk&lt;br /&gt;
 &lt;br /&gt;
 # wipefs -a /dev/sdb&lt;br /&gt;
 # sgdisk --zap-all /dev/sdb&lt;br /&gt;
&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1134</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1134"/>
		<updated>2026-04-10T15:27:59Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install gdisk&lt;br /&gt;
 &lt;br /&gt;
 # wipefs -a /dev/sdb&lt;br /&gt;
 # sgdisk --zap&lt;br /&gt;
&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1133</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1133"/>
		<updated>2026-04-08T23:33:14Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 nodes com &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install parted&lt;br /&gt;
 &lt;br /&gt;
 # parted /dev/sdb --script mklabel gpt&lt;br /&gt;
 &lt;br /&gt;
 # parted /dev/sdb --script \&lt;br /&gt;
 mkpart primary 0% 100%&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb1&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=P%C3%A1gina_principal&amp;diff=1132</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=P%C3%A1gina_principal&amp;diff=1132"/>
		<updated>2026-04-08T23:27:53Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Pascal.png|esquerda|semmoldura|554x554px]]&lt;br /&gt;
&lt;br /&gt;
= Bem vindo à Wiki ISPUP! =&lt;br /&gt;
Durante 29 anos trabalhando como &#039;&#039;&#039;sysadmin&#039;&#039;&#039; em ambientes &#039;&#039;&#039;Unix Like&#039;&#039;&#039; e com Redes em Provedores de Internet, acabei guardando algum conhecimento e essa Wiki é uma forma de disponibilizar para a comunidade, uma fonte de consulta de soluções para diversos problemas que encontrei ao longo da minha vida como profissional. Espero que te ajude assim como sempre me ajudou. Tenho muita documentação para postar aqui e por isso irei revisar e disponibilizar aos poucos. Vamos dar um UP! no seu ISP?&lt;br /&gt;
&lt;br /&gt;
Aqui veremos assuntos relacionados a &#039;&#039;&#039;Servidores GNU/Linux&#039;&#039;&#039;, &#039;&#039;&#039;Telecom&#039;&#039;&#039;, &#039;&#039;&#039;Serviços de Redes&#039;&#039;&#039;, &#039;&#039;&#039;Segurança da Informação&#039;&#039;&#039; e &#039;&#039;&#039;Boas Práticas&#039;&#039;&#039;. Os artigos e documentações serão voltados paras as comunidades &#039;&#039;&#039;ISP (Internet Service Provider)&#039;&#039;&#039;, &#039;&#039;&#039;ITP (Internet Transit Provider)&#039;&#039;&#039; e &#039;&#039;&#039;Debian&#039;&#039;&#039;.  &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Enquanto for &amp;quot;&#039;&#039;&#039;pequeno&#039;&#039;&#039;&amp;quot;, precisa pensar como um &amp;quot;&#039;&#039;&#039;grande&#039;&#039;&#039;&amp;quot;: precisa pensar nas boas práticas, se estruturar para o futuro e aí quando crescer e ficar &amp;quot;&#039;&#039;&#039;grande&#039;&#039;&#039;&amp;quot;, precisará pensar como um &amp;quot;&#039;&#039;&#039;pequeno&#039;&#039;&#039;&amp;quot;, para continuar melhorando a sua agilidade nos processos, na qualidade do atendimento e nos serviços entregues aos seus clientes.  &lt;br /&gt;
&lt;br /&gt;
As boas práticas trazem: &#039;&#039;&#039;segurança&#039;&#039;&#039;, &#039;&#039;&#039;credibilidade&#039;&#039;&#039;, &#039;&#039;&#039;estabilidade&#039;&#039;&#039; e &#039;&#039;&#039;qualidade&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;UNIX is very simple, it just needs a genius to understand its simplicity.&amp;quot;&#039;&#039;&#039; Dennis Ritchie.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Índice ==&lt;br /&gt;
* [[Artigos Tecnicos|Artigos Técnicos]]&lt;br /&gt;
* [[Servicos de Redes e Servidores|Serviços de Redes e Servidores]]&lt;br /&gt;
* [[Dicas Tecnicas|Dicas Técnicas]]&lt;br /&gt;
* [[Links Uteis|Links úteis]]&lt;br /&gt;
* [[Sobre mim]]&lt;br /&gt;
&lt;br /&gt;
== Destaques ==&lt;br /&gt;
[[Debian Cluster CEPH]]&lt;br /&gt;
&lt;br /&gt;
[[Autenticacao TOTP Radius Tacacs Debian|Autenticação TOTP + Radius/Tacacs no Debian]]&lt;br /&gt;
&lt;br /&gt;
[[SSH SERVER 2FA|SSH Server com Autenticação 2FA]]&lt;br /&gt;
&lt;br /&gt;
[[Certificado TLS com ACME-DNS e DNS-01]]&lt;br /&gt;
&lt;br /&gt;
[[RPKI|RPKI (Resource Public Key Infrastructure)]]&lt;br /&gt;
&lt;br /&gt;
[[Recomendacao Mitigacao DDoS|Recomendações sobre Mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[DNS Recursivo Anycast HyperLocal|DNS Recursivo Anycast com Hyperlocal]]&lt;br /&gt;
&lt;br /&gt;
[[Static Loop|Static Loop - um erro que pode matar seu ISP/ITP]]&lt;br /&gt;
&lt;br /&gt;
[[Portas Amplificacao DDoS|Portas de Amplificação DDoS e Botnets]]&lt;br /&gt;
&lt;br /&gt;
[[Servidor Logs CGNAT|Servidor de logs CGNAT]]&lt;br /&gt;
&lt;br /&gt;
[[Template Servidor Debian|Template de Servidor Debian GNU/Linux]]&lt;br /&gt;
&lt;br /&gt;
[[Policy Based Routing|Policy Based Routing (PBR)]]&lt;br /&gt;
&lt;br /&gt;
[[Compilando Bash|Compilando Shell Scripts com o SHC]]&lt;br /&gt;
&lt;br /&gt;
[[PHPIPAM|DCIM/IPAM com phpIPAM]]&lt;br /&gt;
&lt;br /&gt;
[[MSMTP com OAuth2|MSMTP com OAuth2 no Debian 12]]&lt;br /&gt;
&lt;br /&gt;
[[Geolocalizacao|Geolocalização e a Internet]]&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Debian powered.png|miniaturadaimagem|83x83px]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1131</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1131"/>
		<updated>2026-04-08T23:26:01Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]Volte no Proxmox PVE01 e altere o &#039;&#039;&#039;/etc/pve/ceph.conf&#039;&#039;&#039; modificando para:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
E adicionando no final do arquivo:&lt;br /&gt;
 [mon.nodeq]&lt;br /&gt;
         public_addr = 192.168.2.3&lt;br /&gt;
Agora ativamos, ainda no &#039;&#039;&#039;Proxmox PVE01&#039;&#039;&#039;, o &#039;&#039;&#039;msgr2&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon enable-msgr2&lt;br /&gt;
No Debian reinicie o serviço:&lt;br /&gt;
 # systemctl restart ceph-mon@nodeq&lt;br /&gt;
No &#039;&#039;&#039;Proxmox&#039;&#039;&#039; em &#039;&#039;&#039;CEPH&#039;&#039;&#039; verá um novo Monitor adicionado:&lt;br /&gt;
[[Arquivo:Mon ceph.png|nenhum|miniaturadaimagem|598x598px]]&lt;br /&gt;
&lt;br /&gt;
== Adicionando o OSD no Debian ==&lt;br /&gt;
Agora vamos aos procedimentos para usarmos aquele SSD como OSD no CEPH. Vamos supor que o &#039;&#039;&#039;SSD livre&#039;&#039;&#039; seja o &#039;&#039;&#039;/dev/sdb&#039;&#039;&#039;:&lt;br /&gt;
 # apt install parted&lt;br /&gt;
 &lt;br /&gt;
 # parted /dev/sdb --script mklabel gpt&lt;br /&gt;
 &lt;br /&gt;
 # parted /dev/sdb --script \&lt;br /&gt;
 mkpart primary 0% 100%&lt;br /&gt;
Feito isso só precisamos criar o volume CEPH com o comando:&lt;br /&gt;
 # ceph-volume lvm create --data /dev/sdb1&lt;br /&gt;
Se tudo foi bem, nesse momento verá o &#039;&#039;&#039;OSD&#039;&#039;&#039; no seu &#039;&#039;&#039;Cluster Proxmox&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Osd img.png|nenhum|miniaturadaimagem|1234x1234px]]&lt;br /&gt;
Olhando a saúde do nosso Cluster veremos:&lt;br /&gt;
[[Arquivo:Resultado ceph.png|nenhum|miniaturadaimagem|1235x1235px]]&lt;br /&gt;
&lt;br /&gt;
== Conclusão ==&lt;br /&gt;
Aqui vemos em funcionamento um &#039;&#039;&#039;Cluster Proxmox + HA&#039;&#039;&#039; com 2 nós apenas e uma máquina Debian servindo como apoio no funcionamento e segurança do Cluster.&lt;br /&gt;
&lt;br /&gt;
Gostou do artigo? Compartilhe!&lt;br /&gt;
&lt;br /&gt;
Autor: [[Sobre mim|Marcelo Gondim]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Resultado_ceph.png&amp;diff=1130</id>
		<title>Arquivo:Resultado ceph.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Resultado_ceph.png&amp;diff=1130"/>
		<updated>2026-04-08T23:20:57Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;resultado_ceph&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Osd_img.png&amp;diff=1129</id>
		<title>Arquivo:Osd img.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Osd_img.png&amp;diff=1129"/>
		<updated>2026-04-08T23:18:52Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;osd_img&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Mon_ceph.png&amp;diff=1128</id>
		<title>Arquivo:Mon ceph.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Mon_ceph.png&amp;diff=1128"/>
		<updated>2026-04-08T23:11:34Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mon_ceph&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1127</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1127"/>
		<updated>2026-04-08T23:03:43Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;br /&gt;
Vamos checar se adicionamos o &#039;&#039;&#039;nodeq&#039;&#039;&#039; ao &#039;&#039;&#039;monmap&#039;&#039;&#039; com o comando: &#039;&#039;&#039;monmaptool --print /tmp/monmap&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Monmap.png|nenhum|miniaturadaimagem|677x677px]]&lt;br /&gt;
Vamos gerar o &#039;&#039;&#039;keyring&#039;&#039;&#039; para usarmos no Debian:&lt;br /&gt;
 # ceph auth get mon. -o /tmp/ceph.mon.keyring&lt;br /&gt;
Agora precisamos copiar todos os arquivos necessários do &#039;&#039;&#039;PVE01&#039;&#039;&#039; para o nosso Debian:&lt;br /&gt;
 # scp /tmp/monmap root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /tmp/ceph.mon.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/ceph.conf root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 # scp /etc/pve/priv/ceph.client.admin.keyring root@192.168.2.3:/etc/ceph/&lt;br /&gt;
 &lt;br /&gt;
 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring \&lt;br /&gt;
 root@192.168.2.3:/var/lib/ceph/bootstrap-osd/&lt;br /&gt;
&#039;&#039;&#039;Atenção&#039;&#039;&#039; &#039;&#039;&#039;agora&#039;&#039;&#039; pois vamos no nosso Debian alterar o arquivo &#039;&#039;&#039;/etc/ceph/ceph.conf&#039;&#039;&#039;. Primeiro modifique  o parâmetro abaixo para incluir o IP &#039;&#039;&#039;192.168.2.3&#039;&#039;&#039;:&lt;br /&gt;
 mon_host = 192.168.2.1 192.168.2.2 192.168.2.3&lt;br /&gt;
Modifique os dois parâmetros abaixo e deixe eles iguais a estes:&amp;lt;pre&amp;gt;&lt;br /&gt;
[client]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&lt;br /&gt;
[client.crash]&lt;br /&gt;
	keyring = /etc/ceph/$cluster.$name.keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;Adicione no final deste mesmo arquivo a configuração abaixo:&amp;lt;pre&amp;gt;&lt;br /&gt;
[mon.nodeq]&lt;br /&gt;
	public_addr = 192.168.2.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;Ainda no &#039;&#039;&#039;Debian&#039;&#039;&#039; execute os comandos abaixo para prepararmos o ambiente pro &#039;&#039;&#039;CEPH&#039;&#039;&#039;:&lt;br /&gt;
 # mkdir -p /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown ceph:ceph /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chmod 750 /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
Vamos criar o monitor:&lt;br /&gt;
 # ceph-mon --mkfs \&lt;br /&gt;
 -i nodeq \&lt;br /&gt;
 --monmap /etc/ceph/monmap \&lt;br /&gt;
 --keyring /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 &lt;br /&gt;
 # chown -R ceph: /var/lib/ceph/mon/ceph-nodeq&lt;br /&gt;
 # chown -R ceph: /etc/ceph/&lt;br /&gt;
 # chmod 640 /etc/ceph/ceph.mon.keyring&lt;br /&gt;
 # chmod 640 /etc/ceph/monmap&lt;br /&gt;
Este é o momento crucial para que tenhamos mais um monitor no nosso CEPH do Proxmox:&lt;br /&gt;
 # systemctl enable ceph-mon@nodeq&lt;br /&gt;
 # systemctl start ceph-mon@nodeq&lt;br /&gt;
Precisamos checar se o serviço subiu com o comando: &#039;&#039;&#039;systemctl status ceph-mon@nodeq&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Se aparecer algo assim então parabéns, até aqui foi tudo OK:&lt;br /&gt;
[[Arquivo:Nodeq ceph.png|nenhum|miniaturadaimagem|806x806px]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Nodeq_ceph.png&amp;diff=1126</id>
		<title>Arquivo:Nodeq ceph.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Nodeq_ceph.png&amp;diff=1126"/>
		<updated>2026-04-08T23:03:18Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nodeq_ceph&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Monmap.png&amp;diff=1125</id>
		<title>Arquivo:Monmap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Monmap.png&amp;diff=1125"/>
		<updated>2026-04-08T22:46:47Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;monmap&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1124</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1124"/>
		<updated>2026-04-08T22:43:49Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;br /&gt;
Agora precisamos tornar nosso &#039;&#039;&#039;CEPH&#039;&#039;&#039; saudável também e para isso vamos instalar os pacotes do CEPH do Proxmox no Debian. O CEPH precisa ser da mesma versão usada no Cluster Proxmox. Para os meus testes utilizei um &#039;&#039;&#039;Cluster Proxmox 9&#039;&#039;&#039; no &#039;&#039;&#039;PVE01&#039;&#039;&#039; e &#039;&#039;&#039;PVE02&#039;&#039;&#039; que utiliza o &#039;&#039;&#039;CEPH Squid 19.2&#039;&#039;&#039;. Então vamos adicionar o repositório:&lt;br /&gt;
 # echo &amp;quot;deb &amp;lt;nowiki&amp;gt;http://download.proxmox.com/debian/ceph-squid&amp;lt;/nowiki&amp;gt; trixie no-subscription&amp;quot; &amp;gt; /etc/apt/sources.list.d/ceph.list&lt;br /&gt;
 # wget &amp;lt;nowiki&amp;gt;https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg&amp;lt;/nowiki&amp;gt; -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg&lt;br /&gt;
Instalando os pacotes do CEPH:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install ceph ceph-common&lt;br /&gt;
Antes de prosseguir adicione no &#039;&#039;&#039;/etc/hosts&#039;&#039;&#039; do Debian:&lt;br /&gt;
 192.168.2.1 node1&lt;br /&gt;
 192.168.2.2 node2&lt;br /&gt;
 192.168.2.3 nodeq&lt;br /&gt;
Estou chamando nosso &#039;&#039;&#039;Quorum Device&#039;&#039;&#039; com o hostname &#039;&#039;&#039;nodeq&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Agora precisaremos executar algumas tarefas no nosso &#039;&#039;&#039;PVE01&#039;&#039;&#039;:&lt;br /&gt;
 # ceph mon getmap -o /tmp/monmap&lt;br /&gt;
 &lt;br /&gt;
 # monmaptool \&lt;br /&gt;
   --add nodeq 192.168.2.3:6789 \&lt;br /&gt;
   /tmp/monmap&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1123</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1123"/>
		<updated>2026-04-08T22:32:54Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
No Debian vamos instalar o pacote &#039;&#039;&#039;corosync-qnetd&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qnetd&lt;br /&gt;
Nos dois servidores Proxmox, no nosso exemplo PVE01 e PVE02 instalaremos o pacote &#039;&#039;&#039;corosync-qdevice&#039;&#039;&#039;:&lt;br /&gt;
 # apt install corosync-qdevice&lt;br /&gt;
Agora vá para o shell do seu &#039;&#039;&#039;Proxmox principal&#039;&#039;&#039;, no meu caso o &#039;&#039;&#039;PVE01&#039;&#039;&#039; e adicione o Debian ao Cluster com o seguinte comando: &lt;br /&gt;
 # pvecm qdevice setup 192.168.1.3&lt;br /&gt;
Com o comando &#039;&#039;&#039;pvecm status&#039;&#039;&#039; podemos ver como está o quorum e se tudo ocorreu bem, verá que agora temos 3 votos no lugar de 2 e um &#039;&#039;&#039;Qdevice&#039;&#039;&#039; no membership:&lt;br /&gt;
[[Arquivo:Qdevice.png|nenhum|miniaturadaimagem|748x748px]]&lt;br /&gt;
Agora em se tratando de Cluster, você tem o mínimo de votantes para o bom funcionamento e usando uma máquina simples com Debian.&lt;br /&gt;
&lt;br /&gt;
== Adicionando um CEPH monitor e OSD ==&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qdevice.png&amp;diff=1122</id>
		<title>Arquivo:Qdevice.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qdevice.png&amp;diff=1122"/>
		<updated>2026-04-08T22:28:18Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;qdevice&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1121</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1121"/>
		<updated>2026-04-08T22:21:18Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de &#039;&#039;&#039;OSD&#039;&#039;&#039; no &#039;&#039;&#039;CEPH&#039;&#039;&#039;.&lt;br /&gt;
*3 interfaces de rede. Uma para o acesso, outra para o &#039;&#039;&#039;Cluster&#039;&#039;&#039; e outra para o &#039;&#039;&#039;CEPH&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
== Configurando o Qdevice no Debian ==&lt;br /&gt;
Uma vez instalado o Debian, precisamos configurar as 3 interfaces para a comunicação com seu Cluster Proxmox. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
* ens18 - IP 10.254.254.27/24 GW 10.254.254.1 (essa seria a interface com acesso à Internet para instalar os programas).&lt;br /&gt;
* ens19 - IP 192.168.1.3/24 (interface que deve se comunicar com a rede do Cluster, com os IPs dos nodes 192.168.1.1 e 192.168.1.2.&lt;br /&gt;
* ens20 - IP 192.168.2.3/24 (interface que se comunica com a rede CEPH, com os IPs 192.168.2.1 e 192.168.2.2.&lt;br /&gt;
&lt;br /&gt;
Precisamos configurar o serviço SSHD para permitir conexão com root, pois o Proxmox vai precisar acessar o Debian. Para isso altere o arquivo &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; o parâmetro abaixo:&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
Reinicie o serviço:&lt;br /&gt;
 # systemctl restart sshd&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1120</id>
		<title>Debian Cluster CEPH</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Debian_Cluster_CEPH&amp;diff=1120"/>
		<updated>2026-04-08T22:06:58Z</updated>

		<summary type="html">&lt;p&gt;Gondim: Criou página com &amp;#039;== Introdução == Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &amp;#039;&amp;#039;&amp;#039;Cluster&amp;#039;&amp;#039;&amp;#039; deve ser composto de no &amp;#039;&amp;#039;&amp;#039;mínimo 3 nodes&amp;#039;&amp;#039;&amp;#039; para que possa dar segurança, existir &amp;#039;&amp;#039;&amp;#039;quorum&amp;#039;&amp;#039;&amp;#039; e quando usamos &amp;#039;&amp;#039;&amp;#039;CEPH&amp;#039;&amp;#039;&amp;#039; também precisamos de pelo menos 3 &amp;#039;&amp;#039;&amp;#039;OSDs&amp;#039;&amp;#039;&amp;#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introdução ==&lt;br /&gt;
Este artigo tem como foco explicar como adicionar um Debian GNU/Linux em um Proxmox Cluster + HA com 2 nodes. Como muitos sabem, um &#039;&#039;&#039;Cluster&#039;&#039;&#039; deve ser composto de no &#039;&#039;&#039;mínimo 3 nodes&#039;&#039;&#039; para que possa dar segurança, existir &#039;&#039;&#039;quorum&#039;&#039;&#039; e quando usamos &#039;&#039;&#039;CEPH&#039;&#039;&#039; também precisamos de pelo menos 3 &#039;&#039;&#039;OSDs&#039;&#039;&#039; para termos uma estabilidade e segurança no sistema. O problema é quando se quer fazer  isso com apenas 2 servidores Proxmox. Comprar um terceiro servidor às vezes ainda não está nos planos mas você tem uma máquina parada, onde você pode adicionar 2 SSDs e com 4G de ram você pode adicionar ela no &#039;&#039;&#039;Cluster&#039;&#039;&#039; para servir de quorum e de disco &#039;&#039;&#039;CEPH&#039;&#039;&#039;.  Dessa maneira você consegue com 2 servidores &#039;&#039;&#039;Proxmox&#039;&#039;&#039; e uma máquina que chamei de &#039;&#039;&#039;Quorum Device&#039;&#039;&#039;, colocar em produção um Cluster com HA funcional.&lt;br /&gt;
&lt;br /&gt;
== Diagrama ==&lt;br /&gt;
O diagrama abaixo será o ambiente de exemplo mas não falaremos de como construir um Cluster + HA com Proxmox. Nesse caso você precisará ter os 2 servidores já instalados e configurados em &#039;&#039;&#039;Cluster&#039;&#039;&#039; com &#039;&#039;&#039;CEPH&#039;&#039;&#039;. Aqui vamos apenas mostrar como adicionar um Debian GNU/Linux nesse Cluster e no CEPH.&lt;br /&gt;
[[Arquivo:Diagrama cluster ceph.png|nenhum|miniaturadaimagem|522x522px]]&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
&lt;br /&gt;
* Debian GNU/Linux 13 (Trixie).&lt;br /&gt;
* Uma máquina com 4G ou 8G de ram.&lt;br /&gt;
* 1 SSD para instalar o sistema.&lt;br /&gt;
* 1 SSD para servir de OSD no CEPH.&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Diagrama_cluster_ceph.png&amp;diff=1119</id>
		<title>Arquivo:Diagrama cluster ceph.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Diagrama_cluster_ceph.png&amp;diff=1119"/>
		<updated>2026-04-08T21:58:17Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;diagrama_cluster_ceph&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1118</id>
		<title>Sobre mim</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1118"/>
		<updated>2026-04-01T20:15:05Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Marcelo Gondim da Cunha ===&lt;br /&gt;
[[Arquivo:Gondim paisagem.jpg|esquerda|miniaturadaimagem]]&lt;br /&gt;
&#039;&#039;&#039;Contribuições e trabalhos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Administração de Sistemas Unix-Like desde 1996.&lt;br /&gt;
* Consultor na Conectiva S/A - Unidade Rio em 2000.&lt;br /&gt;
* Autor do projeto TuxFrw - https://github.com/gondimcodes/tuxfrw e https://github.com/gondimcodes/tuxfrw-nft&lt;br /&gt;
* Administração de sistemas BSD pela FreeBSD Brasil em 2010.&lt;br /&gt;
* Direção do AS53135 - Nettel Telecomunicações entre 2003 e 2021 atingindo a marca de 41.000 assinantes. Gerando qualidade na entrega de serviços e implantando boas práticas como: &lt;br /&gt;
&lt;br /&gt;
a) IPv6.&lt;br /&gt;
&lt;br /&gt;
b) MANRS.&lt;br /&gt;
&lt;br /&gt;
c) RPKI.&lt;br /&gt;
&lt;br /&gt;
d) CPEs com firmware baseada na BCOP &amp;lt;nowiki&amp;gt;https://www.m3aawg.org/sites/default/files/lac-bcop-1-m3aawg-v1-portuguese-final.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SOC Specialist na Brasil TecPar (AS262907) de 2022 a 2025. Um milhão de clientes. Responsável pelas estratégias de mitigação anti-DDoS atendendo as Operações de RJ, SP, RS, SC, MT e MS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Palestras ministradas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Semana da Informática UERJ 2002 - TuxFrw.&lt;br /&gt;
* CONISLI 2003 - TuxFrw.&lt;br /&gt;
* CONISLI 2004 - Fazendo compras com Gentoo Linux - Palestra sobre a distribuição Linux e suas ferramentas fantásticas.&lt;br /&gt;
* CONISLI 2004 - OpenVPN - Palestra sobre como criar VPNs seguras com OpenVPN e diferenças entre ele e o IPSec.&lt;br /&gt;
* CONISLI 2005 - SPoP (Security Point of Presence) com OpenVPN - Como utilizar túneis encriptados do OpenVPN para acessar a Internet de forma segura, onde quer que esteja.&lt;br /&gt;
* SECOMP 2005 UNIFEI - TuxFrw.&lt;br /&gt;
&lt;br /&gt;
* Debconf19 2019 - [https://debconf19.debconf.org/talks/4-debian-na-vida-de-uma-operadora-de-telecom/ Debian na vida de uma operadora de Telecom], [https://www.youtube.com/watch?v=vQSTslUZy8k&amp;amp;list=PLYUtdmpYPTTJDtwgD8AtxzFJ9t_URhFMK&amp;amp;index=35 vídeo] e [https://salsa.debian.org/debconf-team/public/share/debconf19/raw/master/slides/4-debian-na-vida-de-uma-operadora-de-telecom.pdf?inline=false pdf].&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=5uOFtkplDts FiqueEmCasaUseDebian - CGNAT com NFTables] e [https://www.youtube.com/watch?v=Wz2IAg6MMlU SysAdmin apps].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Artigos desenvolvidos para a comunidade do Brasil Peering Fórum:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_na_pratica CGNAT na pratica].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Acesso_via_IPv6_Link-Local Acesso via IPv6 Link-Local].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/MANRS MANRS].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK CGNAT Bulk Port Allocation com DPDK].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Servidor_de_Logs Servidor de Logs].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/DNS_Recursivo_Anycast_Hyperlocal DNS Anycast com Hyperlocal].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Portas_de_Amplifica%C3%A7%C3%A3o_DDoS_e_Botnets Portas de Amplificação DDoS e Botnets]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Static_Loop_-_um_erro_que_pode_matar_seu_ISP/ITP Static Loop - um erro que pode matar seu ISP/ITP]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Recomenda%C3%A7%C3%B5es_sobre_Mitiga%C3%A7%C3%A3o_DDoS Recomendações sobre Mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Vazamento_de_prefixos_na_mitiga%C3%A7%C3%A3o_DDoS Vazamento de prefixos na mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Identificando_e_neutralizando_uma_Botnet Identificando e neutralizando uma Botnet]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tutorial:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://bit.ly/2saumHK Segurança de roteamento: MANRS (Mutually Agreed Norms for Routing Security) - Tutoriais NIC.br em 09/12/2019].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.manrs.org/about/advisory-group/members/ MANRS Advisory Group Member (2020-2021)]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=oahQkGx8urY &#039;&#039;&#039;Live sobre MANRS com Leonardo Furtado&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
Criação da Wiki ISPUP! em 24/12/2022.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 6 do NIC.br 28/04/2023&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;CONCEITOS E IMPLEMENTAÇÃO DE CGNAT&amp;quot;&#039;&#039;&#039;. Material [https://semanacap.bcp.nic.br/6-online/ aqui] e vídeo aula [https://www.youtube.com/watch?v=1q7J3NkQVSc aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 10 do NIC.br 01/07/2025&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;Teste para padrões técnicos modernos de Internet e segurança: IPv6, DNSSEC, TLS, HTTPS e HSTS&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;.&#039;&#039;&#039; Material [https://semanacap.bcp.nic.br/semana-de-capacitacao-online-edicao-10-2025/ aqui] e vídeo aula [https://www.youtube.com/watch?v=55RBnGQhi2o aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IX Fórum Regional Sudeste (Rio de Janeiro) 24/10/2025&#039;&#039;&#039; com a palestra &amp;quot;&#039;&#039;&#039;Segurança com o pé direito&#039;&#039;&#039;&amp;quot; pode ser baixada [https://regional.forum.ix.br/files/apresentacao/arquivo/2307/gondim.pdf aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP-ICANN Edição Especial DNS 19/12/2025&#039;&#039;&#039; com o painel &amp;quot;&#039;&#039;&#039;DNS em Ação: Como os provedores estão implantando as Boas Práticas&amp;quot;&#039;&#039;&#039; com &#039;&#039;&#039;apresentação&#039;&#039;&#039; [https://forumbcop.nic.br/files/apresentacao/arquivo/2428/DNS_KINDNS_Reduzido.pdf aqui] e vídeo [https://www.youtube.com/live/GnYK9UOLXr4?t=10257s aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP Fortaleza&#039;&#039;&#039; com a palestra: &amp;quot;&#039;&#039;&#039;Recomendações de segurança para provedores&amp;quot;&#039;&#039;&#039; com apresentação [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2487/Marcelo_Gondim_Recomendacoes_seguranca_provedores.pdf aqui] e vídeo [https://youtu.be/Qjgb7P3cG8k?t=9237 aqui]&#039;&#039;&#039;.&#039;&#039;&#039; Os arquivos anexos de configuração: [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2489/Marcelo_Gondim_filtros_edge_huawei.pdf filtros_edge_huawei], [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2490/spoofer.pdf spoofer] e [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2491/filtros_bng_huawei.pdf filtros_bng_huawei]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda recebida pelo NIC.br por contribuir com conhecimento palestrando na Semana de Infraestrutura da Internet no Brasil em 2025:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda1.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&#039;&#039;&#039;Moeda comemorativa de 5 anos recebida pelo NIC.br em 2025 por contribuir com conhecimento para a Semana de Capacitação e Camada 8:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda2.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda IX Fórum Fortaleza 2026:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178462504 o.jpg|esquerda|miniaturadaimagem|470x470px]]&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178206816 o.jpg|nenhum|miniaturadaimagem|447x447px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Webinar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Proteção e Mitigação de ataques DDoS em 10/09/2024 às 20:00 UTC -3. Site da chamada [https://gdg.community.dev/events/details/google-gdg-sinop-presents-webinar-ao-vivo-protecao-e-mitigacao-de-ataques-ddos/ aqui] e o vídeo da live no Youtube [https://www.youtube.com/live/7VIaoDQaLQE aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Podcast:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/live/x4fxtma4eyQ Segurança de Rede e Infraestrutura para 2025: Preparando os ISPs para o futuro!] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contatos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Telegram: &#039;&#039;&#039;@Marcelo_Gondim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WhatsApp: +55 (22) 99743-9060&lt;br /&gt;
&lt;br /&gt;
E-mail: &#039;&#039;&#039;gondim at gmail.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Linkedin: https://www.linkedin.com/in/marcelo-gondim-sysadmin/&lt;br /&gt;
&lt;br /&gt;
Meu Github: https://github.com/gondimcodes&lt;br /&gt;
==Mini-CV==&lt;br /&gt;
&#039;&#039;&#039;Marcelo Gondim&#039;&#039;&#039; começou sua carreira como desenvolvedor de software em COBOL e Clipper entre 1992 e 1995. Em 1996 foi responsável por desenvolver um sistema concorrente com o RENPAC da Embratel para acesso ao SISCOMEX e implantou a Internet para fins comerciais na empresa DATABRAS. Trabalhou como consultor e instrutor de GNU/Linux na Conectiva S/A em 2000. Em 2003 se tornou consultor de diversos Provedores de Internet na Região dos Lagos - RJ e onde acabou se tornando CTO da Nettel Telecomunicações (AS53135) com 42.000 assinantes. Implantou IPv6 iniciando em 2013 e se tornou participante do MANRS com diversas contribuições com artigos e palestras. Trabalhou como Especialista em Redes e SOC (Security Operations Center) na Brasil TecPar AS262907 entre 2022 e 2025, onde implementou boas práticas, tratamentos de incidentes relacionados ao ASN, desenvolveu as estratégias de Mitigação DDoS e uma Rede de DNS Recursivo Anycast espalhada pelo RS, RJ, SP, SC MT e MS, também certificada KINDNS. Fundador da empresa ISPFocus especializada em Tecnologia da Informação e boas práticas para ISPs.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1117</id>
		<title>Sobre mim</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1117"/>
		<updated>2026-04-01T20:14:29Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Marcelo Gondim da Cunha ===&lt;br /&gt;
[[Arquivo:Gondim paisagem.jpg|esquerda|miniaturadaimagem]]&lt;br /&gt;
&#039;&#039;&#039;Contribuições e trabalhos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Administração de Sistemas Unix-Like desde 1996.&lt;br /&gt;
* Consultor na Conectiva S/A - Unidade Rio em 2000.&lt;br /&gt;
* Autor do projeto TuxFrw - https://github.com/gondimcodes/tuxfrw e https://github.com/gondimcodes/tuxfrw-nft&lt;br /&gt;
* Administração de sistemas BSD pela FreeBSD Brasil em 2010.&lt;br /&gt;
* Direção do AS53135 - Nettel Telecomunicações entre 2003 e 2021 atingindo a marca de 41.000 assinantes. Gerando qualidade na entrega de serviços e implantando boas práticas como: &lt;br /&gt;
&lt;br /&gt;
a) IPv6.&lt;br /&gt;
&lt;br /&gt;
b) MANRS.&lt;br /&gt;
&lt;br /&gt;
c) RPKI.&lt;br /&gt;
&lt;br /&gt;
d) CPEs com firmware baseada na BCOP &amp;lt;nowiki&amp;gt;https://www.m3aawg.org/sites/default/files/lac-bcop-1-m3aawg-v1-portuguese-final.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SOC Specialist na Brasil TecPar (AS262907) de 2022 a 2025. Um milhão de clientes. Responsável pelas estratégias de mitigação anti-DDoS atendendo as Operações de RJ, SP, RS, SC, MT e MS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Palestras ministradas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Semana da Informática UERJ 2002 - TuxFrw.&lt;br /&gt;
* CONISLI 2003 - TuxFrw.&lt;br /&gt;
* CONISLI 2004 - Fazendo compras com Gentoo Linux - Palestra sobre a distribuição Linux e suas ferramentas fantásticas.&lt;br /&gt;
* CONISLI 2004 - OpenVPN - Palestra sobre como criar VPNs seguras com OpenVPN e diferenças entre ele e o IPSec.&lt;br /&gt;
* CONISLI 2005 - SPoP (Security Point of Presence) com OpenVPN - Como utilizar túneis encriptados do OpenVPN para acessar a Internet de forma segura, onde quer que esteja.&lt;br /&gt;
* SECOMP 2005 UNIFEI - TuxFrw.&lt;br /&gt;
&lt;br /&gt;
* Debconf19 2019 - [https://debconf19.debconf.org/talks/4-debian-na-vida-de-uma-operadora-de-telecom/ Debian na vida de uma operadora de Telecom], [https://www.youtube.com/watch?v=vQSTslUZy8k&amp;amp;list=PLYUtdmpYPTTJDtwgD8AtxzFJ9t_URhFMK&amp;amp;index=35 vídeo] e [https://salsa.debian.org/debconf-team/public/share/debconf19/raw/master/slides/4-debian-na-vida-de-uma-operadora-de-telecom.pdf?inline=false pdf].&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=5uOFtkplDts FiqueEmCasaUseDebian - CGNAT com NFTables] e [https://www.youtube.com/watch?v=Wz2IAg6MMlU SysAdmin apps].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Artigos desenvolvidos para a comunidade do Brasil Peering Fórum:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_na_pratica CGNAT na pratica].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Acesso_via_IPv6_Link-Local Acesso via IPv6 Link-Local].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/MANRS MANRS].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK CGNAT Bulk Port Allocation com DPDK].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Servidor_de_Logs Servidor de Logs].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/DNS_Recursivo_Anycast_Hyperlocal DNS Anycast com Hyperlocal].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Portas_de_Amplifica%C3%A7%C3%A3o_DDoS_e_Botnets Portas de Amplificação DDoS e Botnets]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Static_Loop_-_um_erro_que_pode_matar_seu_ISP/ITP Static Loop - um erro que pode matar seu ISP/ITP]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Recomenda%C3%A7%C3%B5es_sobre_Mitiga%C3%A7%C3%A3o_DDoS Recomendações sobre Mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Vazamento_de_prefixos_na_mitiga%C3%A7%C3%A3o_DDoS Vazamento de prefixos na mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Identificando_e_neutralizando_uma_Botnet Identificando e neutralizando uma Botnet]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tutorial:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://bit.ly/2saumHK Segurança de roteamento: MANRS (Mutually Agreed Norms for Routing Security) - Tutoriais NIC.br em 09/12/2019].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.manrs.org/about/advisory-group/members/ MANRS Advisory Group Member (2020-2021)]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=oahQkGx8urY &#039;&#039;&#039;Live sobre MANRS com Leonardo Furtado&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
Criação da Wiki ISPUP! em 24/12/2022.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 6 do NIC.br 28/04/2023&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;CONCEITOS E IMPLEMENTAÇÃO DE CGNAT&amp;quot;&#039;&#039;&#039;. Material [https://semanacap.bcp.nic.br/6-online/ aqui] e vídeo aula [https://www.youtube.com/watch?v=1q7J3NkQVSc aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 10 do NIC.br 01/07/2025&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;Teste para padrões técnicos modernos de Internet e segurança: IPv6, DNSSEC, TLS, HTTPS e HSTS&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;.&#039;&#039;&#039; Material [https://semanacap.bcp.nic.br/semana-de-capacitacao-online-edicao-10-2025/ aqui] e vídeo aula [https://www.youtube.com/watch?v=55RBnGQhi2o aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IX Fórum Regional Sudeste (Rio de Janeiro) 24/10/2025&#039;&#039;&#039; com a palestra &amp;quot;&#039;&#039;&#039;Segurança com o pé direito&#039;&#039;&#039;&amp;quot; pode ser baixada [https://regional.forum.ix.br/files/apresentacao/arquivo/2307/gondim.pdf aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP-ICANN Edição Especial DNS 19/12/2025&#039;&#039;&#039; com o painel &amp;quot;&#039;&#039;&#039;DNS em Ação: Como os provedores estão implantando as Boas Práticas&amp;quot;&#039;&#039;&#039; com &#039;&#039;&#039;apresentação&#039;&#039;&#039; [https://forumbcop.nic.br/files/apresentacao/arquivo/2428/DNS_KINDNS_Reduzido.pdf aqui] e vídeo [https://www.youtube.com/live/GnYK9UOLXr4?t=10257s aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP Fortaleza&#039;&#039;&#039; com a palestra: &amp;quot;&#039;&#039;&#039;Recomendações de segurança para provedores&amp;quot;&#039;&#039;&#039; com apresentação [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2487/Marcelo_Gondim_Recomendacoes_seguranca_provedores.pdf aqui] e vídeo [https://youtu.be/Qjgb7P3cG8k?t=9237 aqui]&#039;&#039;&#039;.&#039;&#039;&#039; Os arquivos anexos de configuração: [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2489/Marcelo_Gondim_filtros_edge_huawei.pdf filtros_edge_huawei], [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2490/spoofer.pdf spoofer] e [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2491/filtros_bng_huawei.pdf filtros_bng_huawei]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda recebida pelo NIC.br por contribuir com conhecimento palestrando na Semana de Infraestrutura da Internet no Brasil em 2025:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda1.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&#039;&#039;&#039;Moeda comemorativa de 5 anos recebida pelo NIC.br em 2025 por contribuir com conhecimento para a Semana de Capacitação e Camada 8:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda2.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda IX Fórum Fortaleza 2026:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178462504 o.jpg|esquerda|miniaturadaimagem|470x470px]]&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178206816 o.jpg|nenhum|miniaturadaimagem|447x447px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Webinar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Proteção e Mitigação de ataques DDoS em 10/09/2024 às 20:00 UTC -3. Site da chamada [https://gdg.community.dev/events/details/google-gdg-sinop-presents-webinar-ao-vivo-protecao-e-mitigacao-de-ataques-ddos/ aqui] e o vídeo da live no Youtube [https://www.youtube.com/live/7VIaoDQaLQE aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Podcast:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/live/x4fxtma4eyQ Segurança de Rede e Infraestrutura para 2025: Preparando os ISPs para o futuro!] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contatos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Telegram: &#039;&#039;&#039;@Marcelo_Gondim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WhatsApp: +55 (22) 99743-9060&lt;br /&gt;
&lt;br /&gt;
E-mail: &#039;&#039;&#039;gondim at gmail.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Linkedin: https://www.linkedin.com/in/marcelo-gondim-sysadmin/&lt;br /&gt;
&lt;br /&gt;
Meu Github: https://github.com/gondimcodes&lt;br /&gt;
==Mini-CV==&lt;br /&gt;
&#039;&#039;&#039;Marcelo Gondim&#039;&#039;&#039; começou sua carreira como desenvolvedor de software em COBOL e Clipper entre 1992 e 1995. Em 1996 foi responsável por desenvolver um sistema concorrente com o RENPAC da Embratel para acesso ao SISCOMEX e implantou a Internet para fins comerciais na empresa DATABRAS. Trabalhou como consultor e instrutor de GNU/Linux na Conectiva S/A em 2000. Em 2003 se tornou consultor de diversos Provedores de Internet na Região dos Lagos - RJ e onde acabou se tornando CTO da Nettel Telecomunicações (AS53135) com 42.000 assinantes. Implantou IPv6 iniciando em 2013 e se tornou participante do MANRS com diversas contribuições com artigos e palestras. Trabalhou como Especialista em Redes e SOC (Security Operations Center) na Brasil TecPar AS262907 entre 2022 e 2025, onde implementou boas práticas, tratamentos de incidentes relacionados ao ASN, desenvolveu as estratégias de Mitigação DDoS e uma Rede de DNS Recursivo Anycast espalhada pelo RS, RJ, SP, SC MT e MS, também certificada KINDNS. Fundador da empresa ISPFocus especializada em Tecnologia da Informação e boas práticas para ISPs.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1116</id>
		<title>Sobre mim</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1116"/>
		<updated>2026-04-01T20:11:27Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Marcelo Gondim da Cunha ===&lt;br /&gt;
[[Arquivo:Gondim paisagem.jpg|esquerda|miniaturadaimagem]]&lt;br /&gt;
&#039;&#039;&#039;Contribuições e trabalhos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Administração de Sistemas Unix-Like desde 1996.&lt;br /&gt;
* Consultor na Conectiva S/A - Unidade Rio em 2000.&lt;br /&gt;
* Autor do projeto TuxFrw - https://github.com/gondimcodes/tuxfrw e https://github.com/gondimcodes/tuxfrw-nft&lt;br /&gt;
* Administração de sistemas BSD pela FreeBSD Brasil em 2010.&lt;br /&gt;
* Direção do AS53135 - Nettel Telecomunicações entre 2003 e 2021 atingindo a marca de 41.000 assinantes. Gerando qualidade na entrega de serviços e implantando boas práticas como: &lt;br /&gt;
&lt;br /&gt;
a) IPv6.&lt;br /&gt;
&lt;br /&gt;
b) MANRS.&lt;br /&gt;
&lt;br /&gt;
c) RPKI.&lt;br /&gt;
&lt;br /&gt;
d) CPEs com firmware baseada na BCOP &amp;lt;nowiki&amp;gt;https://www.m3aawg.org/sites/default/files/lac-bcop-1-m3aawg-v1-portuguese-final.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SOC Specialist na Brasil TecPar (AS262907) de 2022 a 2025. Um milhão de clientes. Responsável pelas estratégias de mitigação anti-DDoS atendendo as Operações de RJ, SP, RS, SC, MT e MS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Palestras ministradas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Semana da Informática UERJ 2002 - TuxFrw.&lt;br /&gt;
* CONISLI 2003 - TuxFrw.&lt;br /&gt;
* CONISLI 2004 - Fazendo compras com Gentoo Linux - Palestra sobre a distribuição Linux e suas ferramentas fantásticas.&lt;br /&gt;
* CONISLI 2004 - OpenVPN - Palestra sobre como criar VPNs seguras com OpenVPN e diferenças entre ele e o IPSec.&lt;br /&gt;
* CONISLI 2005 - SPoP (Security Point of Presence) com OpenVPN - Como utilizar túneis encriptados do OpenVPN para acessar a Internet de forma segura, onde quer que esteja.&lt;br /&gt;
* SECOMP 2005 UNIFEI - TuxFrw.&lt;br /&gt;
&lt;br /&gt;
* Debconf19 2019 - [https://debconf19.debconf.org/talks/4-debian-na-vida-de-uma-operadora-de-telecom/ Debian na vida de uma operadora de Telecom], [https://www.youtube.com/watch?v=vQSTslUZy8k&amp;amp;list=PLYUtdmpYPTTJDtwgD8AtxzFJ9t_URhFMK&amp;amp;index=35 vídeo] e [https://salsa.debian.org/debconf-team/public/share/debconf19/raw/master/slides/4-debian-na-vida-de-uma-operadora-de-telecom.pdf?inline=false pdf].&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=5uOFtkplDts FiqueEmCasaUseDebian - CGNAT com NFTables] e [https://www.youtube.com/watch?v=Wz2IAg6MMlU SysAdmin apps].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Artigos desenvolvidos para a comunidade do Brasil Peering Fórum:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_na_pratica CGNAT na pratica].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Acesso_via_IPv6_Link-Local Acesso via IPv6 Link-Local].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/MANRS MANRS].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK CGNAT Bulk Port Allocation com DPDK].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Servidor_de_Logs Servidor de Logs].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/DNS_Recursivo_Anycast_Hyperlocal DNS Anycast com Hyperlocal].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Portas_de_Amplifica%C3%A7%C3%A3o_DDoS_e_Botnets Portas de Amplificação DDoS e Botnets]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Static_Loop_-_um_erro_que_pode_matar_seu_ISP/ITP Static Loop - um erro que pode matar seu ISP/ITP]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Recomenda%C3%A7%C3%B5es_sobre_Mitiga%C3%A7%C3%A3o_DDoS Recomendações sobre Mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Vazamento_de_prefixos_na_mitiga%C3%A7%C3%A3o_DDoS Vazamento de prefixos na mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Identificando_e_neutralizando_uma_Botnet Identificando e neutralizando uma Botnet]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tutorial:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://bit.ly/2saumHK Segurança de roteamento: MANRS (Mutually Agreed Norms for Routing Security) - Tutoriais NIC.br em 09/12/2019].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.manrs.org/about/advisory-group/members/ MANRS Advisory Group Member (2020-2021)]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=oahQkGx8urY &#039;&#039;&#039;Live sobre MANRS com Leonardo Furtado&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
Criação da Wiki ISPUP! em 24/12/2022.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 6 do NIC.br 28/04/2023&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;CONCEITOS E IMPLEMENTAÇÃO DE CGNAT&amp;quot;&#039;&#039;&#039;. Material [https://semanacap.bcp.nic.br/6-online/ aqui] e vídeo aula [https://www.youtube.com/watch?v=1q7J3NkQVSc aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 10 do NIC.br 01/07/2025&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;Teste para padrões técnicos modernos de Internet e segurança: IPv6, DNSSEC, TLS, HTTPS e HSTS&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;.&#039;&#039;&#039; Material [https://semanacap.bcp.nic.br/semana-de-capacitacao-online-edicao-10-2025/ aqui] e vídeo aula [https://www.youtube.com/watch?v=55RBnGQhi2o aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IX Fórum Regional Sudeste (Rio de Janeiro) 24/10/2025&#039;&#039;&#039; com a palestra &amp;quot;&#039;&#039;&#039;Segurança com o pé direito&#039;&#039;&#039;&amp;quot; pode ser baixada [https://regional.forum.ix.br/files/apresentacao/arquivo/2307/gondim.pdf aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP-ICANN Edição Especial DNS 19/12/2025&#039;&#039;&#039; com o painel &amp;quot;&#039;&#039;&#039;DNS em Ação: Como os provedores estão implantando as Boas Práticas&amp;quot;&#039;&#039;&#039; com &#039;&#039;&#039;apresentação&#039;&#039;&#039; [https://forumbcop.nic.br/files/apresentacao/arquivo/2428/DNS_KINDNS_Reduzido.pdf aqui] e vídeo [https://www.youtube.com/live/GnYK9UOLXr4?t=10257s aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP Fortaleza&#039;&#039;&#039; com a palestra: &amp;quot;&#039;&#039;&#039;Recomendações de segurança para provedores&amp;quot;&#039;&#039;&#039; com apresentação [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2487/Marcelo_Gondim_Recomendacoes_seguranca_provedores.pdf aqui] e vídeo [https://youtu.be/Qjgb7P3cG8k?t=9237 aqui]&#039;&#039;&#039;.&#039;&#039;&#039; Os arquivos anexos de configuração: [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2489/Marcelo_Gondim_filtros_edge_huawei.pdf filtros_edge_huawei], [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2490/spoofer.pdf spoofer] e [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2491/filtros_bng_huawei.pdf filtros_bng_huawei]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda recebida pelo NIC.br por contribuir com conhecimento palestrando na Semana de Infraestrutura da Internet no Brasil em 2025:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda1.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&#039;&#039;&#039;Moeda comemorativa de 5 anos recebida pelo NIC.br em 2025 por contribuir com conhecimento para a Semana de Capacitação e Camada 8:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda2.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda IX Fórum Fortaleza 2026:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178462504 o.jpg|esquerda|miniaturadaimagem|470x470px]]&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178206816 o.jpg|nenhum|miniaturadaimagem|447x447px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Webinar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Proteção e Mitigação de ataques DDoS em 10/09/2024 às 20:00 UTC -3. Site da chamada [https://gdg.community.dev/events/details/google-gdg-sinop-presents-webinar-ao-vivo-protecao-e-mitigacao-de-ataques-ddos/ aqui] e o vídeo da live no Youtube [https://www.youtube.com/live/7VIaoDQaLQE aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Podcast:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/live/x4fxtma4eyQ Segurança de Rede e Infraestrutura para 2025: Preparando os ISPs para o futuro!] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contatos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Telegram: &#039;&#039;&#039;@Marcelo_Gondim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WhatsApp: +55 (22) 99743-9060&lt;br /&gt;
&lt;br /&gt;
E-mail: &#039;&#039;&#039;gondim at gmail.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Linkedin: https://www.linkedin.com/in/marcelo-gondim-sysadmin/&lt;br /&gt;
&lt;br /&gt;
Meu Github: https://github.com/gondimcodes&lt;br /&gt;
==Mini-CV==&lt;br /&gt;
&#039;&#039;&#039;Marcelo Gondim&#039;&#039;&#039; começou sua carreira como desenvolvedor de software em COBOL e Clipper entre 1992 e 1995. Em 1996 foi responsável por desenvolver um sistema concorrente com o RENPAC da Embratel para acesso ao SISCOMEX e implantou a Internet para fins comerciais na empresa DATABRAS. Trabalhou como consultor e instrutor de GNU/Linux na Conectiva S/A em 2000. Em 2003 se tornou consultor de diversos Provedores de Internet na Região dos Lagos - RJ e onde acabou se tornando CTO da Nettel Telecomunicações (AS53135) com 42.000 assinantes. Implantou IPv6 iniciando em 2013 e se tornou participante do MANRS com diversas contribuições com artigos e palestras. Trabalhou como Especialista em Redes e SOC (Security Operations Center) na Brasil TecPar AS262907 entre 2022 e 2025, onde implementou boas práticas, tratamentos de incidentes relacionados ao ASN, desenvolveu as estratégias de Mitigação DDoS e uma Rede de DNS Recursivo Anycast espalhada pelo RS, RJ, SP, SC MT e MS, também certificada KINDNS. Fundador da empresa ISPFocus especializada em Tecnologia da Informação e boas práticas para ISPs.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1115</id>
		<title>Sobre mim</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Sobre_mim&amp;diff=1115"/>
		<updated>2026-04-01T20:05:11Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Marcelo Gondim da Cunha ===&lt;br /&gt;
[[Arquivo:Gondim paisagem.jpg|esquerda|miniaturadaimagem]]&lt;br /&gt;
&#039;&#039;&#039;Contribuições e trabalhos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Administração de Sistemas Unix-Like desde 1996.&lt;br /&gt;
* Consultor na Conectiva S/A - Unidade Rio em 2000.&lt;br /&gt;
* Autor do projeto TuxFrw - https://github.com/gondimcodes/tuxfrw e https://github.com/gondimcodes/tuxfrw-nft&lt;br /&gt;
* Administração de sistemas BSD pela FreeBSD Brasil em 2010.&lt;br /&gt;
* Direção do AS53135 - Nettel Telecomunicações entre 2003 e 2021 atingindo a marca de 41.000 assinantes. Gerando qualidade na entrega de serviços e implantando boas práticas como: &lt;br /&gt;
&lt;br /&gt;
a) IPv6.&lt;br /&gt;
&lt;br /&gt;
b) MANRS.&lt;br /&gt;
&lt;br /&gt;
c) RPKI.&lt;br /&gt;
&lt;br /&gt;
d) CPEs com firmware baseada na BCOP &amp;lt;nowiki&amp;gt;https://www.m3aawg.org/sites/default/files/lac-bcop-1-m3aawg-v1-portuguese-final.pdf&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SOC Specialist na Brasil TecPar (AS262907) de 2022 a 2025. Um milhão de clientes. Responsável pelas estratégias de mitigação anti-DDoS atendendo as Operações de RJ, SP, RS, SC, MT e MS. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Palestras ministradas:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Semana da Informática UERJ 2002 - TuxFrw.&lt;br /&gt;
* CONISLI 2003 - TuxFrw.&lt;br /&gt;
* CONISLI 2004 - Fazendo compras com Gentoo Linux - Palestra sobre a distribuição Linux e suas ferramentas fantásticas.&lt;br /&gt;
* CONISLI 2004 - OpenVPN - Palestra sobre como criar VPNs seguras com OpenVPN e diferenças entre ele e o IPSec.&lt;br /&gt;
* CONISLI 2005 - SPoP (Security Point of Presence) com OpenVPN - Como utilizar túneis encriptados do OpenVPN para acessar a Internet de forma segura, onde quer que esteja.&lt;br /&gt;
* SECOMP 2005 UNIFEI - TuxFrw.&lt;br /&gt;
&lt;br /&gt;
* Debconf19 2019 - [https://debconf19.debconf.org/talks/4-debian-na-vida-de-uma-operadora-de-telecom/ Debian na vida de uma operadora de Telecom], [https://www.youtube.com/watch?v=vQSTslUZy8k&amp;amp;list=PLYUtdmpYPTTJDtwgD8AtxzFJ9t_URhFMK&amp;amp;index=35 vídeo] e [https://salsa.debian.org/debconf-team/public/share/debconf19/raw/master/slides/4-debian-na-vida-de-uma-operadora-de-telecom.pdf?inline=false pdf].&lt;br /&gt;
&lt;br /&gt;
* [https://www.youtube.com/watch?v=5uOFtkplDts FiqueEmCasaUseDebian - CGNAT com NFTables] e [https://www.youtube.com/watch?v=Wz2IAg6MMlU SysAdmin apps].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Artigos desenvolvidos para a comunidade do Brasil Peering Fórum:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_na_pratica CGNAT na pratica].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Acesso_via_IPv6_Link-Local Acesso via IPv6 Link-Local].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/MANRS MANRS].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/CGNAT_Bulk_Port_Allocation_com_DPDK CGNAT Bulk Port Allocation com DPDK].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Servidor_de_Logs Servidor de Logs].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/DNS_Recursivo_Anycast_Hyperlocal DNS Anycast com Hyperlocal].&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Portas_de_Amplifica%C3%A7%C3%A3o_DDoS_e_Botnets Portas de Amplificação DDoS e Botnets]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Static_Loop_-_um_erro_que_pode_matar_seu_ISP/ITP Static Loop - um erro que pode matar seu ISP/ITP]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Recomenda%C3%A7%C3%B5es_sobre_Mitiga%C3%A7%C3%A3o_DDoS Recomendações sobre Mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Vazamento_de_prefixos_na_mitiga%C3%A7%C3%A3o_DDoS Vazamento de prefixos na mitigação DDoS]&lt;br /&gt;
* [https://wiki.brasilpeeringforum.org/w/Identificando_e_neutralizando_uma_Botnet Identificando e neutralizando uma Botnet]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tutorial:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://bit.ly/2saumHK Segurança de roteamento: MANRS (Mutually Agreed Norms for Routing Security) - Tutoriais NIC.br em 09/12/2019].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.manrs.org/about/advisory-group/members/ MANRS Advisory Group Member (2020-2021)]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=oahQkGx8urY &#039;&#039;&#039;Live sobre MANRS com Leonardo Furtado&#039;&#039;&#039;].&lt;br /&gt;
&lt;br /&gt;
Criação da Wiki ISPUP! em 24/12/2022.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 6 do NIC.br 28/04/2023&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;CONCEITOS E IMPLEMENTAÇÃO DE CGNAT&amp;quot;&#039;&#039;&#039;. Material [https://semanacap.bcp.nic.br/6-online/ aqui] e vídeo aula [https://www.youtube.com/watch?v=1q7J3NkQVSc aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semana de Capacitação 10 do NIC.br 01/07/2025&#039;&#039;&#039; - &amp;quot;&#039;&#039;&#039;Teste para padrões técnicos modernos de Internet e segurança: IPv6, DNSSEC, TLS, HTTPS e HSTS&#039;&#039;&#039;&amp;quot;&#039;&#039;&#039;.&#039;&#039;&#039; Material [https://semanacap.bcp.nic.br/semana-de-capacitacao-online-edicao-10-2025/ aqui] e vídeo aula [https://www.youtube.com/watch?v=55RBnGQhi2o aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IX Fórum Regional Sudeste (Rio de Janeiro) 24/10/2025&#039;&#039;&#039; com a palestra &amp;quot;&#039;&#039;&#039;Segurança com o pé direito&#039;&#039;&#039;&amp;quot; pode ser baixada [https://regional.forum.ix.br/files/apresentacao/arquivo/2307/gondim.pdf aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP-ICANN Edição Especial DNS 19/12/2025&#039;&#039;&#039; com o painel &amp;quot;&#039;&#039;&#039;DNS em Ação: Como os provedores estão implantando as Boas Práticas&amp;quot;&#039;&#039;&#039; com &#039;&#039;&#039;apresentação&#039;&#039;&#039; [https://forumbcop.nic.br/files/apresentacao/arquivo/2428/DNS_KINDNS_Reduzido.pdf aqui] e vídeo [https://www.youtube.com/live/GnYK9UOLXr4?t=10257s aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fórum BCOP Fortaleza&#039;&#039;&#039; com a palestra: &amp;quot;&#039;&#039;&#039;Recomendações de segurança para provedores&amp;quot;&#039;&#039;&#039; com apresentação [https://fortaleza.forumbcop.nic.br/files/apresentacao/arquivo/2487/Marcelo_Gondim_Recomendacoes_seguranca_provedores.pdf aqui] e vídeo [https://youtu.be/Qjgb7P3cG8k?t=9237 aqui]&#039;&#039;&#039;.&#039;&#039;&#039; Os arquivos anexos de configuração: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda recebida pelo NIC.br por contribuir com conhecimento palestrando na Semana de Infraestrutura da Internet no Brasil em 2025:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda1.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&#039;&#039;&#039;Moeda comemorativa de 5 anos recebida pelo NIC.br em 2025 por contribuir com conhecimento para a Semana de Capacitação e Camada 8:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Moeda2.jpg|nenhum|miniaturadaimagem|407x407px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moeda IX Fórum Fortaleza 2026:&#039;&#039;&#039;&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178462504 o.jpg|esquerda|miniaturadaimagem|470x470px]]&lt;br /&gt;
[[Arquivo:Frum-bcop-fortaleza-2026 55178206816 o.jpg|nenhum|miniaturadaimagem|447x447px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Webinar:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Proteção e Mitigação de ataques DDoS em 10/09/2024 às 20:00 UTC -3. Site da chamada [https://gdg.community.dev/events/details/google-gdg-sinop-presents-webinar-ao-vivo-protecao-e-mitigacao-de-ataques-ddos/ aqui] e o vídeo da live no Youtube [https://www.youtube.com/live/7VIaoDQaLQE aqui].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Podcast:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/live/x4fxtma4eyQ Segurança de Rede e Infraestrutura para 2025: Preparando os ISPs para o futuro!] &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contatos:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Telegram: &#039;&#039;&#039;@Marcelo_Gondim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WhatsApp: +55 (22) 99743-9060&lt;br /&gt;
&lt;br /&gt;
E-mail: &#039;&#039;&#039;gondim at gmail.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Linkedin: https://www.linkedin.com/in/marcelo-gondim-sysadmin/&lt;br /&gt;
&lt;br /&gt;
Meu Github: https://github.com/gondimcodes&lt;br /&gt;
==Mini-CV==&lt;br /&gt;
&#039;&#039;&#039;Marcelo Gondim&#039;&#039;&#039; começou sua carreira como desenvolvedor de software em COBOL e Clipper entre 1992 e 1995. Em 1996 foi responsável por desenvolver um sistema concorrente com o RENPAC da Embratel para acesso ao SISCOMEX e implantou a Internet para fins comerciais na empresa DATABRAS. Trabalhou como consultor e instrutor de GNU/Linux na Conectiva S/A em 2000. Em 2003 se tornou consultor de diversos Provedores de Internet na Região dos Lagos - RJ e onde acabou se tornando CTO da Nettel Telecomunicações (AS53135) com 42.000 assinantes. Implantou IPv6 iniciando em 2013 e se tornou participante do MANRS com diversas contribuições com artigos e palestras. Trabalhou como Especialista em Redes e SOC (Security Operations Center) na Brasil TecPar AS262907 entre 2022 e 2025, onde implementou boas práticas, tratamentos de incidentes relacionados ao ASN, desenvolveu as estratégias de Mitigação DDoS e uma Rede de DNS Recursivo Anycast espalhada pelo RS, RJ, SP, SC MT e MS, também certificada KINDNS. Fundador da empresa ISPFocus especializada em Tecnologia da Informação e boas práticas para ISPs.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Frum-bcop-fortaleza-2026_55178206816_o.jpg&amp;diff=1114</id>
		<title>Arquivo:Frum-bcop-fortaleza-2026 55178206816 o.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Frum-bcop-fortaleza-2026_55178206816_o.jpg&amp;diff=1114"/>
		<updated>2026-04-01T19:21:32Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Frum-bcop-fortaleza-2026 55178206816 o&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Frum-bcop-fortaleza-2026_55178462504_o.jpg&amp;diff=1113</id>
		<title>Arquivo:Frum-bcop-fortaleza-2026 55178462504 o.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Frum-bcop-fortaleza-2026_55178462504_o.jpg&amp;diff=1113"/>
		<updated>2026-04-01T19:20:49Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Frum-bcop-fortaleza-2026 55178462504 o&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1112</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1112"/>
		<updated>2026-02-07T23:23:51Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao2.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir a sua &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039; e depois o seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto em ambas é que será liberado o acesso.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 account    required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
 session    required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1111</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1111"/>
		<updated>2026-02-07T16:57:43Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao2.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir a sua &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039; e depois o seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto em ambas é que será liberado o acesso.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 account    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
 session    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1110</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1110"/>
		<updated>2026-02-07T16:53:21Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao2.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir a sua &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039; e depois o seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto em ambas é que será liberado o acesso.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
 account    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
 session    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt; service=shell&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1109</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1109"/>
		<updated>2026-02-06T16:14:30Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao2.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir a sua &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039; e depois o seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto em ambas é que será liberado o acesso.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1108</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1108"/>
		<updated>2026-02-06T16:13:00Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao2.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Tela_autenticacao2.png&amp;diff=1107</id>
		<title>Arquivo:Tela autenticacao2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Tela_autenticacao2.png&amp;diff=1107"/>
		<updated>2026-02-06T16:11:55Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1104</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1104"/>
		<updated>2026-02-06T15:58:52Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente e não esquecer de comentar a linha &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;.&lt;br /&gt;
 auth       required pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 auth       required pam_google_authenticator.so&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1103</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1103"/>
		<updated>2026-02-06T15:31:23Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, comente a linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039; e adicione antes:&lt;br /&gt;
 auth    required                        pam_radius_auth.so&lt;br /&gt;
 auth    required                        pam_google_authenticator.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente.&lt;br /&gt;
 auth       requisite  pam_google_authenticator.so&lt;br /&gt;
 auth       sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 account    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 session    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=P%C3%A1gina_principal&amp;diff=1102</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=P%C3%A1gina_principal&amp;diff=1102"/>
		<updated>2026-02-06T03:38:49Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Pascal.png|esquerda|semmoldura|554x554px]]&lt;br /&gt;
&lt;br /&gt;
= Bem vindo à Wiki ISPUP! =&lt;br /&gt;
Durante 29 anos trabalhando como &#039;&#039;&#039;sysadmin&#039;&#039;&#039; em ambientes &#039;&#039;&#039;Unix Like&#039;&#039;&#039; e com Redes em Provedores de Internet, acabei guardando algum conhecimento e essa Wiki é uma forma de disponibilizar para a comunidade, uma fonte de consulta de soluções para diversos problemas que encontrei ao longo da minha vida como profissional. Espero que te ajude assim como sempre me ajudou. Tenho muita documentação para postar aqui e por isso irei revisar e disponibilizar aos poucos. Vamos dar um UP! no seu ISP?&lt;br /&gt;
&lt;br /&gt;
Aqui veremos assuntos relacionados a &#039;&#039;&#039;Servidores GNU/Linux&#039;&#039;&#039;, &#039;&#039;&#039;Telecom&#039;&#039;&#039;, &#039;&#039;&#039;Serviços de Redes&#039;&#039;&#039;, &#039;&#039;&#039;Segurança da Informação&#039;&#039;&#039; e &#039;&#039;&#039;Boas Práticas&#039;&#039;&#039;. Os artigos e documentações serão voltados paras as comunidades &#039;&#039;&#039;ISP (Internet Service Provider)&#039;&#039;&#039;, &#039;&#039;&#039;ITP (Internet Transit Provider)&#039;&#039;&#039; e &#039;&#039;&#039;Debian&#039;&#039;&#039;.  &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Enquanto for &amp;quot;&#039;&#039;&#039;pequeno&#039;&#039;&#039;&amp;quot;, precisa pensar como um &amp;quot;&#039;&#039;&#039;grande&#039;&#039;&#039;&amp;quot;: precisa pensar nas boas práticas, se estruturar para o futuro e aí quando crescer e ficar &amp;quot;&#039;&#039;&#039;grande&#039;&#039;&#039;&amp;quot;, precisará pensar como um &amp;quot;&#039;&#039;&#039;pequeno&#039;&#039;&#039;&amp;quot;, para continuar melhorando a sua agilidade nos processos, na qualidade do atendimento e nos serviços entregues aos seus clientes.  &lt;br /&gt;
&lt;br /&gt;
As boas práticas trazem: &#039;&#039;&#039;segurança&#039;&#039;&#039;, &#039;&#039;&#039;credibilidade&#039;&#039;&#039;, &#039;&#039;&#039;estabilidade&#039;&#039;&#039; e &#039;&#039;&#039;qualidade&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;quot;UNIX is very simple, it just needs a genius to understand its simplicity.&amp;quot;&#039;&#039;&#039; Dennis Ritchie.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Índice ==&lt;br /&gt;
* [[Artigos Tecnicos|Artigos Técnicos]]&lt;br /&gt;
* [[Servicos de Redes e Servidores|Serviços de Redes e Servidores]]&lt;br /&gt;
* [[Dicas Tecnicas|Dicas Técnicas]]&lt;br /&gt;
* [[Links Uteis|Links úteis]]&lt;br /&gt;
* [[Sobre mim]]&lt;br /&gt;
&lt;br /&gt;
== Destaques ==&lt;br /&gt;
[[Autenticacao TOTP Radius Tacacs Debian|Autenticação TOTP + Radius/Tacacs no Debian]]&lt;br /&gt;
&lt;br /&gt;
[[SSH SERVER 2FA|SSH Server com Autenticação 2FA]]&lt;br /&gt;
&lt;br /&gt;
[[Certificado TLS com ACME-DNS e DNS-01]]&lt;br /&gt;
&lt;br /&gt;
[[RPKI|RPKI (Resource Public Key Infrastructure)]]&lt;br /&gt;
&lt;br /&gt;
[[Recomendacao Mitigacao DDoS|Recomendações sobre Mitigação DDoS]]&lt;br /&gt;
&lt;br /&gt;
[[DNS Recursivo Anycast HyperLocal|DNS Recursivo Anycast com Hyperlocal]]&lt;br /&gt;
&lt;br /&gt;
[[Static Loop|Static Loop - um erro que pode matar seu ISP/ITP]]&lt;br /&gt;
&lt;br /&gt;
[[Portas Amplificacao DDoS|Portas de Amplificação DDoS e Botnets]]&lt;br /&gt;
&lt;br /&gt;
[[Servidor Logs CGNAT|Servidor de logs CGNAT]]&lt;br /&gt;
&lt;br /&gt;
[[Template Servidor Debian|Template de Servidor Debian GNU/Linux]]&lt;br /&gt;
&lt;br /&gt;
[[Policy Based Routing|Policy Based Routing (PBR)]]&lt;br /&gt;
&lt;br /&gt;
[[Compilando Bash|Compilando Shell Scripts com o SHC]]&lt;br /&gt;
&lt;br /&gt;
[[PHPIPAM|DCIM/IPAM com phpIPAM]]&lt;br /&gt;
&lt;br /&gt;
[[MSMTP com OAuth2|MSMTP com OAuth2 no Debian 12]]&lt;br /&gt;
&lt;br /&gt;
[[Geolocalizacao|Geolocalização e a Internet]]&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Debian powered.png|miniaturadaimagem|83x83px]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1101</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1101"/>
		<updated>2026-02-06T03:33:44Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, antes da linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;, adicione:&lt;br /&gt;
 auth    requisite                       pam_google_authenticator.so&lt;br /&gt;
 auth    sufficient                      pam_radius_auth.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente.&lt;br /&gt;
 auth       requisite  pam_google_authenticator.so&lt;br /&gt;
 auth       sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 account    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 session    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Gostou deste artigo? Se lhe foi útil compartilhe também com seus colegas este conteúdo. Precisa de configurar um servidor Radius/Tacacs+ para autenticar usuários em seus sistemas e equipamentos? Nos procure em https://ispfocus.net.br ou através do QR Code abaixo.&lt;br /&gt;
[[Arquivo:Qrcode ispfocus.png|nenhum|miniaturadaimagem|283x283px]]&lt;br /&gt;
[[Categoria:Artigos Técnicos]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qrcode_ispfocus.png&amp;diff=1100</id>
		<title>Arquivo:Qrcode ispfocus.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qrcode_ispfocus.png&amp;diff=1100"/>
		<updated>2026-02-06T03:33:06Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Qrcode ispfocus&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1099</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1099"/>
		<updated>2026-02-06T03:29:05Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, antes da linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;, adicione:&lt;br /&gt;
 auth    requisite                       pam_google_authenticator.so&lt;br /&gt;
 auth    sufficient                      pam_radius_auth.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente.&lt;br /&gt;
 auth       requisite  pam_google_authenticator.so&lt;br /&gt;
 auth       sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 account    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 session    sufficient pam_tacplus.so server=10.254.254.6 secret=&amp;lt;senha_forte&amp;gt;&lt;br /&gt;
Acima o parâmetro &#039;&#039;&#039;server=&#039;&#039;&#039; é o IP do seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;secret=&#039;&#039;&#039; é a &#039;&#039;&#039;secret key&#039;&#039;&#039; utilizada no seu servidor &#039;&#039;&#039;Tacacs+&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1098</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1098"/>
		<updated>2026-02-06T03:25:43Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, antes da linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;, adicione:&lt;br /&gt;
 auth    requisite                       pam_google_authenticator.so&lt;br /&gt;
 auth    sufficient                      pam_radius_auth.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Caso necessite que o usuário se torne root utilizando &#039;&#039;&#039;sudo&#039;&#039;&#039;, faça a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; e adicione o usuário no &#039;&#039;&#039;grupo sudo&#039;&#039;&#039; com o comando: &#039;&#039;&#039;usermod -aG sudo &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;br /&gt;
Para configurarmos a autenticação usando &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, faremos a mesma configuração em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e &#039;&#039;&#039;/etc/pam.d/sudo-i&#039;&#039;&#039; só que um pouco diferente.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1097</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1097"/>
		<updated>2026-02-06T03:21:01Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, antes da linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;, adicione:&lt;br /&gt;
 auth    requisite                       pam_google_authenticator.so&lt;br /&gt;
 auth    sufficient                      pam_radius_auth.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Tacacs+ Server ==&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1096</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1096"/>
		<updated>2026-02-06T02:53:04Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Banner no SSH ==&lt;br /&gt;
Primeiramente é interessante comentar que ter um banner informando que o acesso só é permitido para pessoas autorizadas, é uma boa prática. Então aqui vai um exemplo de banner, basta criar o arquivo &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039; com o conteúdo abaixo e alterado para o nome da sua Organização e adicionar em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; com o parâmetro: &#039;&#039;&#039;Banner&#039;&#039;&#039; &#039;&#039;&#039;/etc/ssh/banner&#039;&#039;&#039;. Na sequência só reiniciar o serviço sshd com: &#039;&#039;&#039;systemctl restart sshd&#039;&#039;&#039;. &lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * Este acesso e unica e exclusivamente para pessoas autorizadas.              *&lt;br /&gt;
 * Voce esta prestes a acessar uma area Restrita/Privada, podendo conter       *&lt;br /&gt;
 * informacao confidencial e/ou privilegiada. Este acesso sera monitorado.     *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Se voce nao foi autorizado, desde ja fica notificado de abster-se a         *&lt;br /&gt;
 * divulgar, copiar, distribuir, examinar, de qualquer forma, utilizar a       *&lt;br /&gt;
 * informacao contida neste servidor, por ser ilegal, sujeitando o infrator as *&lt;br /&gt;
 * penas da lei.                                                               *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Precione &amp;lt;Ctrl-D&amp;gt; se voce NAO foi autorizado.                               *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
 *                                 ISPFocus                                    *&lt;br /&gt;
 * This access is solely and exclusively for authorized personnel.             *&lt;br /&gt;
 * You are about to access a Restricted/Private area, which may contain        *&lt;br /&gt;
 * confidential and/or privileged information. This access will be monitored.  *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * If you are not authorized, you are hereby notified to refrain from          *&lt;br /&gt;
 * disclosing, copying, distributing, reviewing, or otherwise using the        *&lt;br /&gt;
 * information contained on this server, as it is illegal and will subject     *&lt;br /&gt;
 * the violator to penalties under the law.                                    *&lt;br /&gt;
 *                                                                             *&lt;br /&gt;
 * Press &amp;lt;Ctrl-D&amp;gt; if you are NOT authorized.                                   *&lt;br /&gt;
 *******************************************************************************&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no servidor Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Altere em &#039;&#039;&#039;/etc/ssh/sshd&#039;&#039;&#039; para que esses parâmetros fiquem assim:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
 UsePAM yes&lt;br /&gt;
 PasswordAuthentication yes&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;br /&gt;
Para essa configuração precisaremos do módulo &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; só que ele não está mais presente nos pacotes do Debian. Nesse caso baixaremos o código fonte do &#039;&#039;&#039;Github&#039;&#039;&#039;, compilaremos e instalaremos no &#039;&#039;&#039;Debian&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Instalando os pacotes que precisaremos:&lt;br /&gt;
 # apt install git autoconf build-essential libtool automake libpam-dev libssl-dev gnulib&lt;br /&gt;
Baixando do repositório do &#039;&#039;&#039;Github&#039;&#039;&#039;:&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/kravietz/pam_tacplus.git&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Compilando e instalando o &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039;:&lt;br /&gt;
 # cd pam-tacplus&lt;br /&gt;
 # gnulib-tool --makefile-name=Makefile.gnulib --libtool --import fcntl crypto/md5 array-list list xlist getrandom realloc-posix explicit_bzero xalloc getopt-gnu&lt;br /&gt;
 # autoreconf -f -v -i&lt;br /&gt;
 # ./configure --libdir=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
 # make&lt;br /&gt;
 # make install&lt;br /&gt;
O módulo usa o serviço PAP no Tacacs+ para autenticação e por isso precisa configurar no seu servidor Tacacs+. Caso esteja usando um servidor Tacacs+ em um GNU/Linux,  precisará definir no arquivo de configuração &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039; se o &#039;&#039;&#039;pap&#039;&#039;&#039; usará usuários criados localmente no servidor pelo &#039;&#039;&#039;useradd&#039;&#039;&#039; ou se usará usuários no próprio arquivo &#039;&#039;&#039;tac_plus.conf&#039;&#039;&#039;. Abaixo mostro os 2 exemplos:&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = file /etc/passwd&lt;br /&gt;
 }&lt;br /&gt;
Neste exemplo acima o usuário foi criado no servidor Tacacs+ com o comando: &#039;&#039;&#039;useradd -s /bin/false &amp;lt;user&amp;gt;&#039;&#039;&#039; e depois setada a senha com: &#039;&#039;&#039;passwd &amp;lt;user&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
OU&lt;br /&gt;
 user = gondim {&lt;br /&gt;
      member = cgr&lt;br /&gt;
      pap = cleartext &amp;lt;senha_forte&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
Nesse último exemplo você precisará definir a senha do usuário no lugar de &#039;&#039;&#039;&amp;lt;senha_forte&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Alterando o PAM do Debian GNU/Linux para autenticar usando Google Authenticator e Radius Server ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039;, antes da linha com &#039;&#039;&#039;@include common-auth&#039;&#039;&#039;, adicione:&lt;br /&gt;
 auth    requisite                       pam_google_authenticator.so&lt;br /&gt;
 auth    sufficient                      pam_radius_auth.so&lt;br /&gt;
Nesse momento você poderá testar o &#039;&#039;&#039;SSH&#039;&#039;&#039; para o seu servidor e verá algo assim:&lt;br /&gt;
[[Arquivo:Tela autenticacao.png|nenhum|miniaturadaimagem|740x740px]]&lt;br /&gt;
Primeiro o sistema irá pedir seu &#039;&#039;&#039;token&#039;&#039;&#039; do &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; e somente se passar o correto é que será solicitada a &#039;&#039;&#039;senha cadastrada no seu Radius Server&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1094</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1094"/>
		<updated>2026-02-06T01:59:34Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Instalando o Google Authenticator no Debian ==&lt;br /&gt;
 # apt-get install libpam-google-authenticator -y&lt;br /&gt;
É necessário que o usuário seja criado localmente no sistema. Exemplo:&lt;br /&gt;
 # useradd -m -s /bin/bash gondim&lt;br /&gt;
Agora vamos gerar os dados para cadastro no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no smartphone do usuário &#039;&#039;&#039;gondim&#039;&#039;&#039;:&lt;br /&gt;
 # su - gondim&lt;br /&gt;
 $ google-authenticator -C -t -d -f -w 3 -Q UTF8 -r 3 -R 30&lt;br /&gt;
[[Arquivo:Qrcode.png|nenhum|miniaturadaimagem|916x916px]]&lt;br /&gt;
Quando executamos o comando acima, ele gera informações como neste exemplo. Nele temos o &#039;&#039;&#039;QR Code&#039;&#039;&#039; que facilita a configuração no &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;, temos a &#039;&#039;&#039;secret key&#039;&#039;&#039; que também pode ser usado para cadastro e os códigos de emergência para em caso de perda ou roubo do &#039;&#039;&#039;smartphone&#039;&#039;&#039;, o usuário ainda conseguir logar no sistema. &lt;br /&gt;
&lt;br /&gt;
Seguiremos agora com um exemplo de configuração para autenticação em Servidor Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Radius Server ==&lt;br /&gt;
 # apt install libpam-radius-auth&lt;br /&gt;
Edite o arquivo &#039;&#039;&#039;/etc/pam_radius_auth.conf&#039;&#039;&#039; e deixe configurado nele o apontamento para seu servidor Radius com a secret:&lt;br /&gt;
 # server[:port]             shared_secret      timeout (s)&lt;br /&gt;
 10.254.254.6 C5or4Zc49z2R 3&lt;br /&gt;
Obs.: no seu servidor Radius você precisará liberar em NAS o IP do seu servidor Debian, senão ele não terá autorização para acessar o Radius.&lt;br /&gt;
&lt;br /&gt;
== Instalando e configurando o módulo PAM para autenticação em Tacacs+ Server ==&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qrcode.png&amp;diff=1093</id>
		<title>Arquivo:Qrcode.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Arquivo:Qrcode.png&amp;diff=1093"/>
		<updated>2026-02-06T01:42:07Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;qrcode&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1092</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1092"/>
		<updated>2026-02-06T00:37:04Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Os comandos aqui serão executados em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas poderão ser adaptados para serem executados em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=SSH_SERVER_2FA&amp;diff=1091</id>
		<title>SSH SERVER 2FA</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=SSH_SERVER_2FA&amp;diff=1091"/>
		<updated>2026-02-06T00:35:08Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:SSH Server com Autenticação 2FA}}&lt;br /&gt;
&lt;br /&gt;
[[Arquivo:Criminal-bandit-hacker-scaled-1.jpg|nenhum|miniaturadaimagem|475x475px]]&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
Recentemente em um treinamento do &#039;&#039;&#039;Patrick Brandão&#039;&#039;&#039;, vimos o quanto o &#039;&#039;&#039;SSH&#039;&#039;&#039; (&#039;&#039;&#039;Secure Shell&#039;&#039;&#039;), pode ser usado dentro da segurança de acesso a sistemas. Desde túneis criptográficos, redirecionamentos de portas e até em uso de &#039;&#039;&#039;Zero Trust&#039;&#039;&#039;. Sabemos o quanto este serviço é importante para nós de Tecnologia da Informação e para Operadores de Redes. Então resolvi escrever esse pequeno artigo de como vocês podem configurar seus servidores GNU/linux para autenticarem &#039;&#039;&#039;SSH usando 2FA&#039;&#039;&#039; com o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;. Sim não é nada muito utilizado no nosso dia a dia, pois existem formas melhores e mais seguras como &#039;&#039;&#039;SSH-CA usando certificados digitais assinados&#039;&#039;&#039; e &#039;&#039;&#039;autenticação utilizando apenas chaves SSH&#039;&#039;&#039;. Mas se ainda assim preferirem uma autenticação utilizando &#039;&#039;&#039;usuário e senha&#039;&#039;&#039;, que vocês então implementem um 2FA no serviço SSH.&lt;br /&gt;
&lt;br /&gt;
== Ambiente de configuração ==&lt;br /&gt;
Como sou um defensor do Debian GNU/Linux, estaremos efetuando as configurações e testes abaixo em um Debian 12 (Bookworm) mas em teoria, pode ser aplicado em outras distribuições GNU/Linux. Para essa configuração precisaremos instalar apenas um pacote chamado &#039;&#039;&#039;libpam-google-authenticator&#039;&#039;&#039;.&lt;br /&gt;
 # apt install libpam-google-authenticator&lt;br /&gt;
&lt;br /&gt;
== Gerando os códigos de recuperação e o QR Code e/ou chave para cadastro manual do token ==&lt;br /&gt;
Se logue no usuário para o qual vai querer habilitar o token e rode:&lt;br /&gt;
 $ google-authenticator &lt;br /&gt;
 &lt;br /&gt;
 Do you want authentication tokens to be time-based (y/n) y&lt;br /&gt;
[[Arquivo:Qrcode ssh.png|nenhum|miniaturadaimagem|695x695px]]&lt;br /&gt;
Ele irá exibir um &#039;&#039;&#039;QR Code&#039;&#039;&#039; para ser lido com o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; ou se preferir uma &#039;&#039;&#039;secret key&#039;&#039;&#039; para ser cadastrado manualmente. Nesse momento já temos que ter o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; instalado no nosso &#039;&#039;&#039;smartphone&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Abrimos o app no smartphone e pressionamos o &#039;&#039;&#039;sinal de +&#039;&#039;&#039;. Na sequência escolhemos ler o &#039;&#039;&#039;QR Code&#039;&#039;&#039; ou inserir a chave que seria aquela &#039;&#039;&#039;secret key&#039;&#039;&#039;.&lt;br /&gt;
[[Arquivo:Qrcode6.png|nenhum|commoldura]]&lt;br /&gt;
Após escolhermos o &#039;&#039;&#039;QR Code&#039;&#039;&#039;, irá abrir a câmera do seu &#039;&#039;&#039;smartphone&#039;&#039;&#039;. Aponte para o QR Code e será configurado o &#039;&#039;&#039;token&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Abaixo temos o token sendo gerado.&lt;br /&gt;
[[Arquivo:Qrcode7.png|nenhum|commoldura]]&lt;br /&gt;
Voltamos para o nosso servidor e agora passamos o token para a aplicação, para efetuarmos a confirmação da configuração:&lt;br /&gt;
[[Arquivo:Qrcode3.png|nenhum|miniaturadaimagem|649x649px]]&lt;br /&gt;
Após confirmar, serão exibidos os 5 códigos de recuperação de emergência. Eles são importantes para recuperar os acessos caso perca seu smartphone. Cada código de recuperação só poderá ser usado uma única vez.&lt;br /&gt;
&lt;br /&gt;
Se precisar consultá-los, eles ficam armazenados no home do usuário no arquivo &#039;&#039;&#039;.google_authenticator&#039;&#039;&#039;:&lt;br /&gt;
[[Arquivo:Qrcode4.png|nenhum|miniaturadaimagem|651x651px]]&lt;br /&gt;
Na sequência ele irá perguntar se deseja proibir uso de múltiplo login, por segurança dizemos que sim. Depois ele pergunta sobre criação de tokens extras para compensar problemas de horários não sincronizados entre o cliente e o servidor. Nesse caso vamos dizer que não, porque é função nossa como sysadmin, configurar ajuste automático de horário no servidor usando &#039;&#039;&#039;NTP (Network Time Protocol)&#039;&#039;&#039;. Por último aplicamos um &#039;&#039;&#039;rate-limit&#039;&#039;&#039; no nosso sistema para 3 tentativas a cada 30 segundos. &lt;br /&gt;
[[Arquivo:Qrcode5.png|nenhum|miniaturadaimagem|649x649px]]&lt;br /&gt;
&lt;br /&gt;
== Configurando o sistema de autenticação do SSH para funcionar com o Google Authenticator ==&lt;br /&gt;
Em &#039;&#039;&#039;/etc/ssh/sshd_config&#039;&#039;&#039; vamos modificar o parâmetro abaixo de &#039;&#039;&#039;NO&#039;&#039;&#039; para &#039;&#039;&#039;YES&#039;&#039;&#039;:&lt;br /&gt;
 KbdInteractiveAuthentication yes&lt;br /&gt;
&#039;&#039;&#039;Em versões antigas do openssh-server o parâmetro era este abaixo&#039;&#039;&#039;: &lt;br /&gt;
 ChallengeResponseAuthentication yes&lt;br /&gt;
Reinicie o serviço SSH:&lt;br /&gt;
 # systemctl restart sshd&lt;br /&gt;
Na sequência edite o arquivo &#039;&#039;&#039;/etc/pam.d/sshd&#039;&#039;&#039; e adicione no final dele a instrução:&amp;lt;pre&amp;gt;&lt;br /&gt;
auth required pam_google_authenticator.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&#039;&#039;&#039;Cuidado! Não desconecte do servidor antes de testar se está funcionando ou que tenha acesso via console.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Para testarmos só fazermos um ssh para o servidor e irá acontecer algo como abaixo. Será pedida a senha do usuário e na sequência também &#039;&#039;&#039;será pedido o code do token&#039;&#039;&#039; gerado pelo &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039;. Acertando os dois, a sessão é completada.&lt;br /&gt;
 # ssh gondim@177.XXX.XXX.12 &lt;br /&gt;
 (gondim@177.XXX.XXX.12) Password: &lt;br /&gt;
 (gondim@177.XXX.XXX.12) Verification code: &lt;br /&gt;
 Linux AMA-RR-FLOW-01 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64&lt;br /&gt;
 &lt;br /&gt;
 The programs included with the Debian GNU/Linux system are free software;&lt;br /&gt;
 the exact distribution terms for each program are described in the&lt;br /&gt;
 individual files in /usr/share/doc/*/copyright.&lt;br /&gt;
 &lt;br /&gt;
 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent&lt;br /&gt;
 permitted by applicable law.&lt;br /&gt;
 You have new mail.&lt;br /&gt;
 Last login: Fri Jul 11 01:40:37 2025 from 177.XXX.XXX.30&lt;br /&gt;
 gondim@AMA-RR-FLOW-01:~$&lt;br /&gt;
Se quiser aplicar o mesmo bloqueio na &#039;&#039;&#039;console do servidor&#039;&#039;&#039;, basta incluir a mesma configuração só que em &#039;&#039;&#039;/etc/pam.d/login&#039;&#039;&#039;. Mas cuidado para não perder o acesso ao sistema. Não me responsabilizo por problemas gerados por este artigo.  :)&lt;br /&gt;
[[Categoria:Dicas Técnicas]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Certificado_TLS_com_ACME-DNS_e_DNS-01&amp;diff=1090</id>
		<title>Certificado TLS com ACME-DNS e DNS-01</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Certificado_TLS_com_ACME-DNS_e_DNS-01&amp;diff=1090"/>
		<updated>2026-02-06T00:34:52Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
== Diagrama exemplo ==&lt;br /&gt;
[[Arquivo:Acme-dns.drawio.png|semmoldura|685x685px]]&lt;br /&gt;
&lt;br /&gt;
== Introdução ==&lt;br /&gt;
Diversos sistemas e serviços que utilizamos na Internet fazem uso de certificados digitais para validar se uma fonte é legítima, também para criptografar a comunicação e assim garantir segurança e privacidade entre o visitante e o sistema ou a comunicação entre sistemas. Diversos serviços conhecidos utilizam os certificados digitais como: milhares de sites web via &#039;&#039;&#039;HTTPS&#039;&#039;&#039;, servidores de envio e recebimento de e-mails (&#039;&#039;&#039;MTA&#039;&#039;&#039;s), clientes de e-mail (&#039;&#039;&#039;MUA&#039;&#039;&#039;s) quando se comunicam com os MTAs, DNS quando utilizamos &#039;&#039;&#039;DNSSEC&#039;&#039;&#039; e qualquer outro sistema que necessite de certificado digital para operar com criptografia dos dados. Em um passado não tão distante, sites eram acessados de maneira insegura usando &#039;&#039;&#039;HTTP (80/tcp)&#039;&#039;&#039; e era muito comum enganar um visitante com um site falso para roubar-lhe os dados ou induzi-lo a executar algum &#039;&#039;&#039;malware&#039;&#039;&#039; hospedado. Um certificado serve para garantir que aquele domínio acessado é de fato legítimo e não fraudulento. Não garante que seus dados estarão seguros armazenados naquele sistema, mas isso é uma outra história. O sistema funciona com &#039;&#039;&#039;criptografia assimétrica&#039;&#039;&#039; onde temos um par de chaves, a &#039;&#039;&#039;chave pública&#039;&#039;&#039; e uma &#039;&#039;&#039;chave privada&#039;&#039;&#039;. Nós assinamos as coisas com nossa chave privada e os sistemas conseguem confirmar que é nosso através da nossa chave pública. Tá mas quem garante que eu, sou eu mesmo e não um impostor? Para resolver esse problema entra em ação as &#039;&#039;&#039;Autoridades Certificadoras (CA&#039;&#039;&#039;s&#039;&#039;&#039;)&#039;&#039;&#039;, elas assinam seu certificado atestando que você é quem diz ser. Existem diversas CAs no mundo mas a que vamos falar e utilizar aqui é a &#039;&#039;&#039;Let&#039;s Encrypt&#039;&#039;&#039;. Ela é uma opção gratuita e extremamente utilizada na Internet.&lt;br /&gt;
&lt;br /&gt;
== Como funciona a &#039;&#039;&#039;Let&#039;s Encrypt&#039;&#039;&#039; ==&lt;br /&gt;
Aqui vamos falar de assinatura de certificados para nossos domínios de Internet. Vamos dizer que você tenha registrado o domínio &#039;&#039;&#039;seudominio.com.br&#039;&#039;&#039; lá no &#039;&#039;&#039;Registro.br&#039;&#039;&#039;. O Registro.br sabe quem você é e possui seus dados, que foram passados durante o registro do domínio. Lá constam os servidores de DNS Autoritativos que são responsáveis pelos registros do seu domínio. Até aqui não temos nenhum certificado digital que garanta para os visitantes que o site visitado é realmente o seu site. Imagina que por um problema de DNS comprometido em algum ISP, seu cliente foi parar em um servidor que não é o seu e abrindo um site que não é o seu mas que é muito idêntico ao seu. Aqui vai entrar o seu certificado digital assinado pela CA, para salvar o seu cliente de ter seus dados comprometidos.&lt;br /&gt;
&lt;br /&gt;
A Let&#039;s Encrypt para assinar seu certificado também precisa confirmar que você é quem diz ser, não é mesmo? Ela faz isso confirmando que você é o controlador do domínio, que no nosso exemplo é o &#039;&#039;&#039;seudominio.com.br&#039;&#039;&#039;. Ela pode fazer isso de duas formas:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HTTP-01&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;DNS-01&#039;&#039;&#039;.&lt;br /&gt;
No modelo de confirmação &#039;&#039;&#039;HTTP-01&#039;&#039;&#039; é necessário que a Let&#039;s Encrypt acesse seu servidor através do FQDN para o qual você está solicitando o seu certificado digital. Estamos falando de uma conexão entrante (80/tcp) e que é possível quando existe uma rede pública de acesso. Mas e se você quisesse um certificado digital para um servidor privado seu? Um com &#039;&#039;&#039;IP 192.168.0.10&#039;&#039;&#039; e &#039;&#039;&#039;FC00::192:168:0:10&#039;&#039;&#039;. Aí nesse caso podemos tomar para uso a autenticação via &#039;&#039;&#039;DNS-01&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Usando DNS-01, a Let&#039;s Encrypt conseguirá confirmar a sua identidade através de um registro TXT de DNS contendo um desafio gerado pela Let&#039;s Encrypt e que provará que você é o detentor do domínio. Assim você poderá gerar certificados para qualquer IP da sua rede, sendo ele privado ou público. O único problema desse tipo de autenticação, é que precisaríamos de um DNS compatível com um cliente ACME e que permitisse inclusões e atualizações dos registros TXT com os desafios mas são pouquíssimos os DNS(s) Autoritativos que possuem essa capacidade. Felizmente temos uma outra solução bem fácil de implementar,  &#039;&#039;&#039;acme-dns&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Meu artigo será exatamente sobre o uso do &#039;&#039;&#039;DNS-01&#039;&#039;&#039; e o &#039;&#039;&#039;serviço acme-dns&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== ACME-DNS ==&lt;br /&gt;
O [https://github.com/joohoi/acme-dns#self-hosted &#039;&#039;&#039;acme-dns&#039;&#039;&#039;] é um micro servidor de DNS programado em &#039;&#039;&#039;Go&#039;&#039;&#039; por &#039;&#039;&#039;Joona Hoikkala&#039;&#039;&#039; e que também desenvolveu o &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039; que também iremos utilizar. O acme-dns terá a função de armazenar e atualizar os &#039;&#039;&#039;registros TXT de DNS&#039;&#039;&#039;, com os desafios gerados pela Let&#039;s Encrypt e este possui uma API HTTPS para se comunicar com o acme-dns-client. Assim, toda vez que necessitar de atualizar os certificados antes dos 3 meses de expiração, poderá ser feito automaticamente e veremos isso aqui.&lt;br /&gt;
&lt;br /&gt;
Vamos utilizar os seguintes programas neste artigo:&lt;br /&gt;
&lt;br /&gt;
* Certbot, o cliente ACME mais utilizado para solicitar os certificados digitais Let&#039;s Encrypt.&lt;br /&gt;
* ACME-DNS-CLIENT, o software utilizado com o certbot, para atualizar os registros TXT de DNS com os desafios corretos do seu servidor.&lt;br /&gt;
* ACME-DNS, o serviço de DNS que armazenará os desafios para o seu servidor.__FORCARTDC__&lt;br /&gt;
O funcionamento do conjunto &#039;&#039;&#039;acme-dns/acme-dns-client&#039;&#039;&#039; é bem simples, é necessário criarmos um &#039;&#039;&#039;subdomínio&#039;&#039;&#039; para a nossa gerência de desafios apontando para onde nosso &#039;&#039;&#039;servidor acme-dns&#039;&#039;&#039; ficará rodando. Vamos usar para isso um sistema &#039;&#039;&#039;GNU/Linux Debian&#039;&#039;&#039; mas você pode adaptar para outras distribuições que desejar. Abaixo nosso exemplo de configuração inicial no nosso &#039;&#039;&#039;DNS Autoritativo&#039;&#039;&#039;:&lt;br /&gt;
 auth.seudominio.com.br. IN NS auth.seudominio.com.br.&lt;br /&gt;
 auth.seudominio.com.br. IN A 198.18.0.1&lt;br /&gt;
 auth.seudominio.com.br. IN A 2001:db8::198:18:0:1&lt;br /&gt;
Acima estamos criando nosso &#039;&#039;&#039;subdomínio auth&#039;&#039;&#039; e apontando para os &#039;&#039;&#039;IPs fictícios 198.18.0.1 e 2001:db8:198:0:1&#039;&#039;&#039; que é onde estará rodando nosso servidor acme-dns. Esse serviço uma vez rodando, você poderá usá-lo para criar &#039;&#039;&#039;certificados TLS usando Let&#039;s Encrypt DNS-01&#039;&#039;&#039; para qualquer domínio e servidor seu, seja ele público ou privado.&lt;br /&gt;
&lt;br /&gt;
Como estaremos usando o Debian 12 (Bookworm) certifique-se de estar com o repositório backports abaixo, no seu &#039;&#039;&#039;/etc/apt/sources.list&#039;&#039;&#039;:&lt;br /&gt;
 deb &amp;lt;nowiki&amp;gt;http://deb.debian.org/debian&amp;lt;/nowiki&amp;gt; bookworm-backports main non-free-firmware contrib non-free&lt;br /&gt;
O &#039;&#039;&#039;Go&#039;&#039;&#039; precisaremos apenas para compilar o &#039;&#039;&#039;acme-dns&#039;&#039;&#039; e o &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039; e depois, se quiser, poderá desinstalá-lo.&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install golang-1.23 golang-github-mattn-go-sqlite3-dev git sqlite3 sqlite3-tools&lt;br /&gt;
 # export PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/go-1.23/bin&amp;quot;&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/joohoi/acme-dns&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 # cd acme-dns&lt;br /&gt;
 # export GOPATH=/tmp/acme-dns&lt;br /&gt;
 # go build&lt;br /&gt;
 # mv acme-dns /usr/local/bin&lt;br /&gt;
 # adduser --system --gecos &amp;quot;acme-dns Service&amp;quot; --disabled-password --group --home /var/lib/acme-dns acme-dns&lt;br /&gt;
 # mv acme-dns.service /etc/systemd/system/acme-dns.service&lt;br /&gt;
 # systemctl daemon-reload&lt;br /&gt;
 # systemctl enable acme-dns.service&lt;br /&gt;
Se quiser manter o Go funcionando, adicione na &#039;&#039;&#039;PATH&#039;&#039;&#039; em &#039;&#039;&#039;/etc/profile&#039;&#039;&#039; o caminho &#039;&#039;&#039;/usr/lib/go-1.23/bin&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Os comandos acima irão instalar o Go e um módulo pro SQLite3 para o Go, o SQLite3, irá baixar o projeto oficial do acme-dns, irá compilá-lo e jogar o binário &#039;&#039;&#039;acme-dns em /usr/local/bin&#039;&#039;&#039;, irá criar um usuário não privilegiado para ele e por fim colocará para rodar como um serviço no systemd.&lt;br /&gt;
&lt;br /&gt;
Agora falta pouco para termos rodando nosso acme-dns. Crie o diretório onde ficará a configuração do seu acme-dns:&lt;br /&gt;
 # mkdir -p /etc/acme-dns&lt;br /&gt;
Dentro desse diretório criaremos um arquivo chamado &#039;&#039;&#039;config.cfg&#039;&#039;&#039; e o conteúdo dele está configurado para o nosso exemplo, mas nesse caso é só você alterar as configurações para o seu uso em produção:&lt;br /&gt;
&lt;br /&gt;
Conteúdo de &#039;&#039;&#039;/etc/acme-dns/config.cfg&#039;&#039;&#039;:&lt;br /&gt;
 [general]&lt;br /&gt;
 # DNS interface. Note that systemd-resolved may reserve port 53 on 127.0.0.53&lt;br /&gt;
 # In this case acme-dns will error out and you will need to define the listening interface&lt;br /&gt;
 # for example: listen = &amp;quot;127.0.0.1:53&amp;quot;&lt;br /&gt;
 listen = &amp;quot;:53&amp;quot;&lt;br /&gt;
 # protocol, &amp;quot;both&amp;quot;, &amp;quot;both4&amp;quot;, &amp;quot;both6&amp;quot;, &amp;quot;udp&amp;quot;, &amp;quot;udp4&amp;quot;, &amp;quot;udp6&amp;quot; or &amp;quot;tcp&amp;quot;, &amp;quot;tcp4&amp;quot;, &amp;quot;tcp6&amp;quot;&lt;br /&gt;
 protocol = &amp;quot;both&amp;quot;&lt;br /&gt;
 # domain name to serve the requests off of&lt;br /&gt;
 domain = &amp;quot;auth.seudominio.com.br&amp;quot;&lt;br /&gt;
 # zone name server&lt;br /&gt;
 nsname = &amp;quot;auth.seudominio.com.br&amp;quot;&lt;br /&gt;
 # admin email address, where @ is substituted with .&lt;br /&gt;
 nsadmin = &amp;quot;noc.seudominio.com.br&amp;quot;&lt;br /&gt;
 # predefined records served in addition to the TXT&lt;br /&gt;
 records = [&lt;br /&gt;
     # domain pointing to the public IP of your acme-dns server &lt;br /&gt;
     &amp;quot;auth.seudominio.com.br. A 198.18.0.1&amp;quot;,&lt;br /&gt;
     &amp;quot;auth.seudominio.com.br. AAAA 2001:db8:198:18:0:1&amp;quot;,&lt;br /&gt;
     # specify that auth.example.org will resolve any *.auth.example.org records&lt;br /&gt;
     &amp;quot;auth.seudominio.com.br. NS auth.seudominio.com.br.&amp;quot;,&lt;br /&gt;
 ]&lt;br /&gt;
 # debug messages from CORS etc&lt;br /&gt;
 debug = false&lt;br /&gt;
  &lt;br /&gt;
 [database]&lt;br /&gt;
 # Database engine to use, sqlite3 or postgres&lt;br /&gt;
 engine = &amp;quot;sqlite3&amp;quot;&lt;br /&gt;
 # Connection string, filename for sqlite3 and postgres://$username:$password@$host/$db_name for postgres&lt;br /&gt;
 # Please note that the default Docker image uses path /var/lib/acme-dns/acme-dns.db for sqlite3&lt;br /&gt;
 connection = &amp;quot;/var/lib/acme-dns/acme-dns.db&amp;quot;&lt;br /&gt;
 # connection = &amp;quot;postgres://user:password@localhost/acmedns_db&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [api]&lt;br /&gt;
 # listen ip eg. 127.0.0.1&lt;br /&gt;
 ip = &amp;quot;0.0.0.0&amp;quot;&lt;br /&gt;
 # disable registration endpoint&lt;br /&gt;
 disable_registration = false&lt;br /&gt;
 # listen port, eg. 443 for default HTTPS&lt;br /&gt;
 port = &amp;quot;443&amp;quot;&lt;br /&gt;
 # possible values: &amp;quot;letsencrypt&amp;quot;, &amp;quot;letsencryptstaging&amp;quot;, &amp;quot;cert&amp;quot;, &amp;quot;none&amp;quot;&lt;br /&gt;
 tls = &amp;quot;letsencrypt&amp;quot;&lt;br /&gt;
 # only used if tls = &amp;quot;cert&amp;quot;&lt;br /&gt;
 tls_cert_privkey = &amp;quot;/etc/tls/example.org/privkey.pem&amp;quot;&lt;br /&gt;
 tls_cert_fullchain = &amp;quot;/etc/tls/example.org/fullchain.pem&amp;quot;&lt;br /&gt;
 # only used if tls = &amp;quot;letsencrypt&amp;quot;&lt;br /&gt;
 acme_cache_dir = &amp;quot;api-certs&amp;quot;&lt;br /&gt;
 # optional e-mail address to which Let&#039;s Encrypt will send expiration notices for the API&#039;s cert&lt;br /&gt;
 notification_email = &amp;quot;&amp;quot;&lt;br /&gt;
 # CORS AllowOrigins, wildcards can be used&lt;br /&gt;
 corsorigins = [&lt;br /&gt;
     &amp;quot;*&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 # use HTTP header to get the client ip&lt;br /&gt;
 use_header = false&lt;br /&gt;
 # header name to pull the ip address / list of ip addresses from&lt;br /&gt;
 header_name = &amp;quot;X-Forwarded-For&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [logconfig]&lt;br /&gt;
 # logging level: &amp;quot;error&amp;quot;, &amp;quot;warning&amp;quot;, &amp;quot;info&amp;quot; or &amp;quot;debug&amp;quot;&lt;br /&gt;
 loglevel = &amp;quot;debug&amp;quot;&lt;br /&gt;
 # possible values: stdout, TODO file &amp;amp; integrations&lt;br /&gt;
 logtype = &amp;quot;stdout&amp;quot;&lt;br /&gt;
 # file path for logfile TODO&lt;br /&gt;
 # logfile = &amp;quot;./acme-dns.log&amp;quot;&lt;br /&gt;
 # format, either &amp;quot;json&amp;quot; or &amp;quot;text&amp;quot;&lt;br /&gt;
 logformat = &amp;quot;text&amp;quot;&lt;br /&gt;
O arquivo já possui comentários das opções de configuração para ajudá-lo a personalizar mais o serviço mas não entraremos em detalhe. Só buscar na documentação do projeto. Acima configuramos ele para funcionar com nossos dados fictícios, estará funcionando tanto via &#039;&#039;&#039;IPv4&#039;&#039;&#039; quanto via &#039;&#039;&#039;IPv6&#039;&#039;&#039; apontados para &#039;&#039;&#039;auth.seudominio.com.br&#039;&#039;&#039;. Ele também já está configurado para solicitar para ele um certificado Let&#039;s Encrypt automaticamente.&lt;br /&gt;
&lt;br /&gt;
Após terminada a configuração acima, iniciaremos o serviço:&lt;br /&gt;
 # systemctl start acme-dns.service&lt;br /&gt;
Após iniciar o serviço teremos as seguintes portas up: &#039;&#039;&#039;53/udp&#039;&#039;&#039;, &#039;&#039;&#039;53/tcp&#039;&#039;&#039; e a &#039;&#039;&#039;443/tcp&#039;&#039;&#039;. Esta última porta é para a comunicação &#039;&#039;&#039;API&#039;&#039;&#039; entre o &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039; e o &#039;&#039;&#039;acme-dns&#039;&#039;&#039;. Para checar se o serviço está rodando:&lt;br /&gt;
 # systemctl status acme-dns&lt;br /&gt;
[[Arquivo:Acme-dns1.png|nenhum|miniaturadaimagem|1489x1489px]]&lt;br /&gt;
Importante! Para funcionar o serviço de DNS Autoritativo tem que estar configurado certinho. Depois que o acme-dns estiver rodando você pode checar assim. Lembre-se de fazer com seus dados reais.&lt;br /&gt;
 # host auth.seudominio.com.br&lt;br /&gt;
 auth.seudominio.com.br has address 198.18.0.1&lt;br /&gt;
 auth.seudominio.com.br has IPv6 address 2001:db8:198:18:0:1&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; apt update&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; apt install golang-1.23 golang-github-mattn-go-sqlite3-dev git sqlite3 sqlite3-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; export PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/go-1.23/bin&amp;quot;Se apresentar erro de &#039;&#039;&#039;NXDOMAIN&#039;&#039;&#039;, então algo não ficou bem configurado no seu &#039;&#039;&#039;DNS Autoritativo&#039;&#039;&#039;, ou &#039;&#039;&#039;na configuração do seu acme-dns&#039;&#039;&#039;. Dê uma revisada novamente aqui no artigo.&lt;br /&gt;
&lt;br /&gt;
Se tudo ocorreu bem, então você tem um &#039;&#039;&#039;serviço acme-dns&#039;&#039;&#039; rodando e pronto para armazenar os &#039;&#039;&#039;desafios TXT da Let&#039;s Encrypt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== CERTBOT e ACME-DNS-CLIENT ==&lt;br /&gt;
Agora vamos entrar na parte de como gerar um certificado TLS para o seu servidor, mesmo que ele possua apenas IP privado, sem abertura de portas e mais seguro. Para todo sistema que precisarmos gerar certificados, utilizaremos o &#039;&#039;&#039;certbot&#039;&#039;&#039; e do &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
No diagrama deste artigo dou como exemplo um servidor Web HTTPS e um outro com aplicação corporativa mas você poderá gerar certificados para qualquer ambiente.&lt;br /&gt;
&lt;br /&gt;
Mais uma vez nosso ambiente será um GNU/Linux Debian 12 (Bookworm).&lt;br /&gt;
&lt;br /&gt;
Primeiramente vamos precisar instalar o Go para compilar o acme-dns-client mas depois você poderá removê-lo se quiser. &#039;&#039;&#039;Não esqueça do repositório backports&#039;&#039;&#039;, como visto no início do artigo. Vamos seguir os passos abaixo:&lt;br /&gt;
 # apt update&lt;br /&gt;
 # apt install golang-1.23 certbot git&lt;br /&gt;
 # export PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/go-1.23/bin&amp;quot;&lt;br /&gt;
 # cd /usr/local/src&lt;br /&gt;
 # git clone &amp;lt;nowiki&amp;gt;https://github.com/acme-dns/acme-dns-client&amp;lt;/nowiki&amp;gt; ; cd acme-dns-client ; go get ; go build&lt;br /&gt;
 # mv acme-dns-client /usr/local/bin/&lt;br /&gt;
Pronto! Instalamos o &#039;&#039;&#039;certbot&#039;&#039;&#039;, cliente ACME para fazer as solicitações e atualizações dos nossos certificados para a Let&#039;s Encrypt e também instalamos nosso &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Registrando seu domínio e subdomínios que ira utilizar no seu servidor ==&lt;br /&gt;
Vamos supor que você tenha um ERP da empresa no IP 192.168.10.10 e que queira gerar o certificado para ele. Após fazer os passos acima, façamos nosso registro:&lt;br /&gt;
 # acme-dns-client register -d erp.seudominio.com.br -s &amp;lt;nowiki&amp;gt;https://auth.seudominio.com.br&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Esse comando acima vai registrar no seu acme-dns o registro para &#039;&#039;&#039;erp.seudominio.com.br&#039;&#039;&#039; e ele vai te vai solicitar que crie um desafio &#039;&#039;&#039;CNAME&#039;&#039;&#039; apontando para o seu acme-dns. No exemplo abaixo a saída vai ser parecida mas o &#039;&#039;&#039;CNAME&#039;&#039;&#039; diferente para você cadastrar no seu DNS Autoritativo. O &#039;&#039;&#039;acme-dns-client ficará aguardando e testando até que você gere esse registro CNAME&#039;&#039;&#039;. Aqui não optei por usar o registro &#039;&#039;&#039;CAA&#039;&#039;&#039; (Certification Authority Authorization) que seria para só autorizar determinada autoridade certificadora à assinar seu certificado.&lt;br /&gt;
 # &#039;&#039;&#039;acme-dns-client register -d erp.seudominio.com.br -s &amp;lt;nowiki&amp;gt;https://auth.seudominio.com.br&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
 [*] New acme-dns account for domain seudominio.com.br successfully registered!&lt;br /&gt;
 &lt;br /&gt;
 Do you want acme-dns-client to monitor the CNAME record change? [Y/n]: Y&lt;br /&gt;
 &lt;br /&gt;
 To finalize the setup, you need to create a CNAME record pointing from _acme-challenge.erp.seudominio.com.br &lt;br /&gt;
 to the newly created acme-dns domain 42fa6f9f-5a56-4985-bbd7-c8a0e0ce4e1b.auth.seudominio.com.br&lt;br /&gt;
 &lt;br /&gt;
 A correctly set up CNAME record should look like the following:&lt;br /&gt;
 &lt;br /&gt;
 _acme-challenge.erp.seudominio.com.br.   IN      CNAME   42fa6f9f-5a56-4985-bbd7-c8a0e0ce4e1b.auth.seudominio.com.br.&lt;br /&gt;
 &lt;br /&gt;
 Waiting for CNAME record to be set up for domain erp.seudominio.com.br&lt;br /&gt;
 Querying the authoritative nameserver every 15 seconds.&lt;br /&gt;
 &lt;br /&gt;
 [*] CNAME record is now correctly set up!&lt;br /&gt;
 &lt;br /&gt;
 A CAA record allows you to control additional certificate issuance safeguards. The currently supported&lt;br /&gt;
 version allows the domain owner to control which certificate authorities are allowed to issue certificates for the domain in question.&lt;br /&gt;
 The certificate authorities MUST check and respect the CAA records in the validation process.&lt;br /&gt;
 &lt;br /&gt;
 There&#039;s also a standard (&amp;lt;nowiki&amp;gt;RFC 8657&amp;lt;/nowiki&amp;gt;) that extends the CAA record to limit the issuance of certificates to a specific validation &lt;br /&gt;
 method and/or to a specific ACME account. While they can be tested using staging environment of Let&#039;s Encrypt for example,&lt;br /&gt;
 they&#039;re not enabled in the production yet. It is still be worthwhile to configure them so you&#039;ll be protected when the feature gets enabled.&lt;br /&gt;
 Do you wish to set up a CAA record now? [y/N]: N&lt;br /&gt;
Vejam como é interessante seu funcionamento: O Let&#039;s Encrypt para confirmar que você é o dono do domínio, ele procura pelo &#039;&#039;&#039;TXT&#039;&#039;&#039; com o desafio em &#039;&#039;&#039;_acme-challenge.seudominio.com.br&#039;&#039;&#039; só que ele não está no seu DNS Autoritativo e sim no seu servidor acme-dns. O que o &#039;&#039;&#039;CNAME&#039;&#039;&#039; faz é repassar a consulta para o domínio &#039;&#039;&#039;42fa6f9f-5a56-4985-bbd7-c8a0e0ce4e1b.auth.seudominio.com.br&#039;&#039;&#039; que está criado no seu &#039;&#039;&#039;acme-dns&#039;&#039;&#039;, que por sua vez contém o &#039;&#039;&#039;desafio TXT que a Let&#039;s Encrypt está procurando&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Lembra que no início do artigo criamos o subdomínio &#039;&#039;&#039;auth.seudomínio.com.br&#039;&#039;&#039; e apontamos tudo que for para ele, consultar no &#039;&#039;&#039;acme-dns&#039;&#039;&#039;? Ou seja &#039;&#039;&#039;42fa6f9f-5a56-4985-bbd7-c8a0e0ce4e1b&#039;&#039;&#039; é um subdomínio de &#039;&#039;&#039;auth.seudominio.com.br&#039;&#039;&#039;. É confuso para quem nunca configurou um serviço de DNS mas se você realmente não está conseguindo entender, procure dar uma estudada sobre DNS (Domain Name System).&lt;br /&gt;
&lt;br /&gt;
Após conseguirmos registrar o domínio acima, passamos para o uso com o &#039;&#039;&#039;certbot&#039;&#039;&#039;, para que possamos solicitar nosso certificado digital para a Let&#039;s Encrypt.&lt;br /&gt;
&lt;br /&gt;
== Usando o certbot com o acme-dns-client ==&lt;br /&gt;
Abaixo estamos solicitamos ao &#039;&#039;&#039;certbot&#039;&#039;&#039; ,usando o nosso &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039;, para gerar o certificado TLS para o &#039;&#039;&#039;erp.seudominio.com.br&#039;&#039;&#039;. O &#039;&#039;&#039;Let&#039;s Encrypt&#039;&#039;&#039; gerará um &#039;&#039;&#039;desafio TXT (DNS-01)&#039;&#039;&#039; para o &#039;&#039;&#039;erp.seudomínio.com.br&#039;&#039;&#039; e o &#039;&#039;&#039;acme-dns-client&#039;&#039;&#039; incluirá o registro no acme-dns fazendo com que a Let&#039;s Encrypt encontre o desafio e libere o certificado digital.&lt;br /&gt;
 # &#039;&#039;&#039;certbot certonly --manual --preferred-challenges dns --manual-auth-hook &#039;/usr/local/bin/acme-dns-client&#039; -d erp.seudominio.com.br&#039;&#039;&#039;&lt;br /&gt;
 Saving debug log to /var/log/letsencrypt/letsencrypt.log&lt;br /&gt;
 Enter email address (used for urgent renewal and security notices)&lt;br /&gt;
  (Enter &#039;c&#039; to cancel): noc@seudominio.com.br&lt;br /&gt;
 &lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
 Please read the Terms of Service at&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf&amp;lt;/nowiki&amp;gt;. You must&lt;br /&gt;
 agree in order to register with the ACME server. Do you agree?&lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
 (Y)es/(N)o: Y&lt;br /&gt;
 &lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
 Would you be willing, once your first certificate is successfully issued, to&lt;br /&gt;
 share your email address with the Electronic Frontier Foundation, a founding&lt;br /&gt;
 partner of the Let&#039;s Encrypt project and the non-profit organization that&lt;br /&gt;
 develops Certbot? We&#039;d like to send you email about our work encrypting the web,&lt;br /&gt;
 EFF news, campaigns, and ways to support digital freedom.&lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
 (Y)es/(N)o: N&lt;br /&gt;
 Account registered.&lt;br /&gt;
 Requesting a certificate for erp.seudominio.com.br&lt;br /&gt;
 &lt;br /&gt;
 Successfully received certificate.&lt;br /&gt;
 Certificate is saved at: /etc/letsencrypt/live/erp.seudominio.com.br/fullchain.pem&lt;br /&gt;
 Key is saved at:         /etc/letsencrypt/live/erp.seudominio.com.br/privkey.pem&lt;br /&gt;
 This certificate expires on 2025-07-22.&lt;br /&gt;
 These files will be updated when the certificate renews.&lt;br /&gt;
 Certbot has set up a scheduled task to automatically renew this certificate in the background.&lt;br /&gt;
 &lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
 If you like Certbot, please consider supporting our work by:&lt;br /&gt;
  * Donating to ISRG / Let&#039;s Encrypt:   &amp;lt;nowiki&amp;gt;https://letsencrypt.org/donate&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
  * Donating to EFF:                    &amp;lt;nowiki&amp;gt;https://eff.org/donate-le&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
Os certificados são gerados em /etc/letsencrypt e aí só usá-los em suas aplicações.  Para atualizar automaticamente os certificados basta colocar algo assim em seu &#039;&#039;&#039;/etc/crontab&#039;&#039;&#039;:&lt;br /&gt;
 00 00   1 * *   root    /usr/bin/certbot renew --post-hook=&amp;quot;/usr/bin/systemctl reload nginx.service&amp;quot;&lt;br /&gt;
Acima estamos renovando o certificado todo dia 01 de cada mês às 00:00 e na sequência recarregando o nginx para conter o novo certificado. Você pode adaptar para a sua realidade.&lt;br /&gt;
&lt;br /&gt;
Espero que seja útil este artigo e que agora não tenhamos mais que usar certificados TLS auto-assinados que são feios, não passam segurança e não confirmam a identidade de quem está fornecendo o serviço. Coloque certificado TLS válido em todos os seus serviços e mantenha as boas práticas em dia.&lt;br /&gt;
&lt;br /&gt;
Essa documentação foi útil? Compartilhe, divulgue e ajude outras pessoas. Meus contatos podem ser vistos [[Sobre mim|aqui]].&lt;br /&gt;
[[Categoria:Serviços de Redes e Servidores]]&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1089</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1089"/>
		<updated>2026-02-06T00:34:25Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Tudo isso será feito em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas pode ser adaptado para ser executado em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
	<entry>
		<id>https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1088</id>
		<title>Autenticacao TOTP Radius Tacacs Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.ispup.com.br/w/index.php?title=Autenticacao_TOTP_Radius_Tacacs_Debian&amp;diff=1088"/>
		<updated>2026-02-06T00:33:37Z</updated>

		<summary type="html">&lt;p&gt;Gondim: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Arquivo:Ssh_totp_radius_tacacs.png|semmoldura|482x482px]]{{DISPLAYTITLE:Autenticação TOTP + Radius/Tacacs no Debian}}&lt;br /&gt;
__TOC__&lt;br /&gt;
== Descrição ==&lt;br /&gt;
A administração remota de servidores &#039;&#039;&#039;GNU/Linux&#039;&#039;&#039; é algo que precisamos estar sempre atentos com a segurança. Filtros de pacotes para bloquear e/ou liberar acessos, ajustes para serviços não ficarem expostos sem necessidade, uso de IPs privados quando possível, aplicar atualizações quando disponíveis, monitoramento dos logs e file system são coisas básicas para todo sysadmin. Boa parte destas tarefas necessitam de acesso remoto aos servidores via &#039;&#039;&#039;SSH&#039;&#039;&#039; e esse serviço precisa ser bem cuidado para que seu servidor não seja comprometido. Outro fator importante é quando administra diversos servidores em uma empresa juntamente com outros sysadmins e em algum momento alguém é desligado da empresa ou entrou de férias. Imagina ter que entrar em cada servidor para remover ou bloquear os acessos.  Imagina fazer isso com 100, 500, 1000 VMs. Neste artigo iremos configurar um servidor Debian para autenticar via &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; e ainda usar 2FA com Google Authenticator. O &#039;&#039;&#039;Radius&#039;&#039;&#039; e o &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; darão controle para administração centralizada da autenticação dos usuários e o &#039;&#039;&#039;Google Authenticator&#039;&#039;&#039; adiciona uma camada de segurança no acesso &#039;&#039;&#039;SSH&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Pré-requisitos ==&lt;br /&gt;
Para que nosso ambiente funcione precisaremos:&lt;br /&gt;
&lt;br /&gt;
* Um servidor &#039;&#039;&#039;Radius&#039;&#039;&#039; ou &#039;&#039;&#039;Tacacs+&#039;&#039;&#039; já em produção. Melhor ainda se estiverem em &#039;&#039;&#039;HA (High Availability)&#039;&#039;&#039;, pois como estamos lidando com acessos críticos de equipamentos e servidores, precisamos garantir que em caso de falha no autenticador principal, um secundário assuma essa função e a operação não seja impactada.&lt;br /&gt;
* O servidor precisar ter acesso sainte para a &#039;&#039;&#039;Internet&#039;&#039;&#039;, pode ser através de &#039;&#039;&#039;NAT&#039;&#039;&#039;. Se faz necessário para instalação dos pacotes e download do projeto &#039;&#039;&#039;pam_tacplus&#039;&#039;&#039; via &#039;&#039;&#039;Github&#039;&#039;&#039; caso use autenticação via &#039;&#039;&#039;Tacacs+.&#039;&#039;&#039;&lt;br /&gt;
* Tudo isso será feito em um &#039;&#039;&#039;Debian 13 (Trixie)&#039;&#039;&#039; mas pode ser adaptado para ser executado em outras &#039;&#039;&#039;distribuições GNU/Linux&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Gondim</name></author>
	</entry>
</feed>