Hands-On · Privileged Access Management

PAM Open Source na prática com JumpServer Community

Montei uma camada dedicada para intermediar acessos SSH e RDP, separar administração de operação, reduzir conexões diretas e registrar evidências das sessões privilegiadas.

Oracle Linux SSH RDP pfSense Auditoria Menor privilégio
Escopo real do laboratório O portal ficou disponível apenas na rede administrativa PAM-NET.
Roteiro do artigo

Da segmentação de rede ao acesso SSH e RDP auditável em um portal único.

01

O problema que um PAM resolve

Controlar acesso administrativo não deveria depender de senhas compartilhadas, conexões SSH ou RDP abertas para qualquer origem e contas privilegiadas usadas sem histórico claro. Um PAM cria uma camada entre o usuário e o ativo: define quem pode entrar, qual conta pode ser utilizada, em qual servidor e por quanto tempo.

Neste laboratório, usei o JumpServer Community Edition para construir esse fluxo em uma estrutura pequena, mas realista. O objetivo não foi entregar uma arquitetura corporativa completa ou altamente disponível. Foi provar, na prática, o ciclo de segmentar, autorizar, acessar e auditar.

IDENTIDADE

Conta certa

O usuário operacional não recebe a senha do ativo. Ele usa uma autorização criada dentro do PAM.

ACESSO

Caminho controlado

SSH e RDP passam pela plataforma, em vez de depender de uma conexão administrativa direta e dispersa.

EVIDÊNCIA

Sessão rastreável

Usuário, ativo, conta, horário, gravação e comandos ficam disponíveis para auditoria.

02

Arquitetura do laboratório

Separei o ambiente em duas redes. A PAM-NET recebeu o servidor do JumpServer. A ASSETS-NET concentrou os ativos protegidos. O pfSense fez a segmentação entre essas redes e controlou o tráfego necessário para o laboratório.

01 Administração Host de gerenciamento
→
02 PAM-NET pam-01 · 10.77.10.10
→
03 pfSense Segmentação de rede
→
04 ASSETS-NET linux-01 + win-01
Componente Função Endereço
Host administrativo Estação de administração do laboratório 10.77.10.1
pam-01 Oracle Linux dedicado ao JumpServer 10.77.10.10
linux-01 Ativo Linux protegido por SSH 10.77.20.20
win-01 Ativo Windows protegido por RDP 10.77.20.3
pfSense Gateway e segmentação entre as redes 10.77.10.254 / 10.77.20.254
03

Preparando o servidor PAM

Preparei uma VM minimalista com Oracle Linux, sem interface gráfica e com o hostname pam-01. A máquina ficou dedicada à camada de acesso privilegiado, separada dos servidores que seriam protegidos.

Hostnamepam-01

Primeiro nó da camada administrativa.

RedePAM-NET

Segmento dedicado ao JumpServer.

IP estático10.77.10.10/24

Endereço estável para regras e inventário.

SegurançaSELinux + firewalld

Mantidos ativos desde a preparação.

Defini o endereço de rede manualmente para evitar alterações após reinicializações e simplificar as regras de firewall, o cadastro do ativo e a documentação do ambiente. Também mantive o SELinux em modo Enforcing e o firewalld ativo.

03.01

Registrando a linha de base do servidor

Antes de instalar qualquer componente, registrei hostname, endereçamento, DNS, recursos disponíveis e o estado das camadas básicas de proteção.

oracle-linux · baseline
printf 'n== HOSTNAME ==n'; hostnamectl --static
printf 'n== REDE ==n'; ip -br addr; ip route
printf 'n== DNS ==n'; cat /etc/resolv.conf
printf 'n== RECURSOS ==n'; nproc; free -h; df -h /
printf 'n== SEGURANÇA ==n'; getenforce; systemctl is-active firewalld
04

Instalação verificável do JumpServer

Em vez de executar um comando remoto sem revisar seu conteúdo, baixei o bootstrap oficial, restrin­gi suas permissões e registrei um hash local. O objetivo foi ter visibilidade sobre o arquivo utilizado naquele momento no laboratório.

04.01

Baixando e revisando o bootstrap

jumpserver · bootstrap
mkdir -p /opt/jumpserver-install && 
cd /opt/jumpserver-install && 
curl -fL --proto '=https' --tlsv1.2 
  -o quick_start.sh 
  https://github.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh && 
chmod 700 quick_start.sh && 
sha256sum quick_start.sh && 
nl -ba quick_start.sh

O script analisado funciona como bootstrap: verifica dependências, baixa um segundo pacote, extrai o instalador e chama o utilitário jmsctl.sh. Por isso, revisar apenas esse primeiro arquivo não descreve toda a cadeia de instalação.

04.02

Baixando o instalador principal e registrando o hash

Como eu optei por não executar o bootstrap diretamente, baixei o pacote principal de forma manual, registrei o SHA-256 e listei o conteúdo antes de extrair qualquer arquivo.

jumpserver · installer v4.10.16
cd /opt && 
curl -fL --proto '=https' --tlsv1.2 
  -o jumpserver-installer-v4.10.16.tar.gz 
  https://github.com/jumpserver/installer/releases/download/v4.10.16/jumpserver-installer-v4.10.16.tar.gz && 
sha256sum jumpserver-installer-v4.10.16.tar.gz && 
tar -tzf jumpserver-installer-v4.10.16.tar.gz | sed -n '1,80p'
SHA-256 registrado no laboratório f55e32c07f9e9139481d0511394bbe73160a5bfaa055efab40683c454e57c4d8b

O hash não substitui uma assinatura oficial publicada pelo fabricante. Ele registra exatamente qual arquivo foi usado no laboratório e ajuda a manter o procedimento reproduzível.

04.03

Extraindo e iniciando a implantação

Depois da revisão, extraí o instalador em /opt. A estrutura resultante inclui o jmsctl.sh, scripts de gerenciamento, arquivos de configuração e manifestos utilizados pelos containers.

jumpserver · extract + install
cd /opt && 
tar -xzf jumpserver-installer-v4.10.16.tar.gz && 
cd /opt/jumpserver-installer-v4.10.16 && 
ls -lah

# Como o bootstrap não foi executado neste fluxo manual:
dnf -y install wget

./jmsctl.sh install

Durante o assistente, mantive diretório persistente padrão em /data/jumpserver, PostgreSQL e Redis internos, portas padrão, idioma em inglês e fuso America/Sao_Paulo. Para este laboratório, essa escolha reduziu complexidade e foi suficiente para poucas conexões simultâneas.

jumpserver · start
cd /opt/jumpserver-installer-v4.10.16 && ./jmsctl.sh start
05

Separando administração e operação

Depois de concluir a instalação, mantive a conta administrativa apenas para configurar a plataforma: cadastrar ativos, armazenar contas de acesso e criar regras. Em paralelo, criei a conta operacional llucio sem privilégios administrativos.

A intenção foi simples: o administrador define a política; o usuário operacional utiliza somente os recursos já autorizados. O fato de uma conta conseguir entrar no JumpServer não deve significar que ela pode cadastrar um servidor, alterar uma regra ou navegar livremente pelos ativos.

06

Protegendo o acesso SSH ao Linux

Antes de cadastrar uma credencial no JumpServer, criei no linux-01 uma conta administrativa exclusiva para o PAM. Em vez de utilizar root como credencial operacional, usei pam-linux-admin e concedi privilégio administrativo pelo grupo wheel.

06.01

Criando uma conta administrativa nomeada

linux-01 · named admin account
id pam-linux-admin >/dev/null 2>&1 || useradd -m -s /bin/bash pam-linux-admin
usermod -aG wheel pam-linux-admin
passwd pam-linux-admin

printf 'n== USUÁRIO ==n'
id pam-linux-admin

printf 'n== GRUPO WHEEL ==n'
getent group wheel

printf 'n== PRIVILÉGIOS SUDO ==n'
sudo -l -U pam-linux-admin

Essa abordagem cria uma conta administrativa rastreável no servidor. O JumpServer passa a usar uma credencial nomeada, e não uma conta genérica de uso cotidiano.

06.02

Restringindo SSH para o caminho autorizado

Depois de validar a conexão inicial do pam-01 para o linux-01, removi a liberação genérica de SSH e mantive uma regra específica aceitando a porta 22 apenas a partir do IP do servidor PAM.

linux-01 · firewalld rich rule
sudo firewall-cmd --permanent --zone=public 
  --add-rich-rule='rule family="ipv4" source address="10.77.10.10/32" service name="ssh" accept'

sudo firewall-cmd --permanent --zone=public --remove-service=ssh && 
sudo firewall-cmd --reload && 
sudo firewall-cmd --zone=public --list-all
TESTE A Host administrativo O teste TCP direto para 10.77.20.20:22 falhou por conta da segmentação entre redes.
TESTE B win-01 na ASSETS-NET O ping respondeu, mas o TCP/22 falhou. Como os dois hosts estavam na mesma rede dos ativos, a evidência aponta para a restrição aplicada pelo próprio firewalld do Linux.
07

Cadastro, autorização e acesso ao Linux

Com o ativo linux-01 e a conta pam-linux-admin cadastrados, testei a conexão SSH pela própria interface do JumpServer. A sessão foi aberta no navegador sem solicitar que o usuário digitasse a senha do servidor.

07.01

Validando identidade do ativo e da conta

jumpserver · web terminal
hostnamectl --static
whoami

O resultado confirmou linux-01 e pam-linux-admin. A sessão também exibiu o ativo, a conta usada, o horário e a marca d’água associada ao usuário conectado.

Depois, criei uma regra de autorização específica para o usuário operacional llucio. A autorização vinculou um usuário, um ativo, uma conta e um protocolo:

1Usuário: llucio
2Ativo: linux-01 · 10.77.20.20
3Conta: pam-linux-admin
4Protocolo: SSH, somente com a permissão de conexão.

Para respeitar o menor privilégio, deixei desabilitadas as funções de transferência de arquivos, clipboard e compartilhamento de sessão. A regra liberou apenas a conexão SSH necessária para o objetivo do laboratório.

08

Auditoria: sessões, reprodução e comandos

O acesso via PAM não termina quando a aba do navegador é fechada. O JumpServer registrou a sessão do usuário operacional com dados como usuário, ativo, conta, protocolo, horário de início e opções para reprodução e download.

SESSÃO

Quem entrou?

Usuário, ativo, conta, protocolo, data e hora ficam associados à conexão realizada.

REPRODUÇÃO

O que aconteceu?

A gravação ajuda a revisar o que ocorreu em uma sessão privilegiada sem depender apenas de memória ou relato.

COMANDOS

Qual ação foi executada?

A trilha de comandos vincula ação, usuário, conta, ativo, sessão e horário.

09

Protegendo o acesso RDP ao Windows Server

Para complementar o cenário Linux, adicionei o win-01 ao laboratório. O ativo recebeu o endereço 10.77.20.3 e foi cadastrado no JumpServer utilizando a plataforma Windows-TLS.

No laboratório, esse perfil permitiu abrir a sessão RDP pelo navegador. A escolha não deve ser tratada como uma regra universal: em produção, o perfil precisa ser validado contra a configuração RDP, a política TLS e os requisitos do Windows que será gerenciado.

O fluxo foi o mesmo aplicado ao Linux: o usuário operacional recebeu uma autorização específica, visualizou somente o ativo liberado e abriu a sessão intermediada pelo JumpServer. O acesso RDP não foi tratado como exceção ao modelo de controle.

10

O que o laboratório validou — e o que ainda falta em produção

Ao final, o laboratório validou um caminho completo de acesso privilegiado com o JumpServer Community Edition:

✓Segmentação entre a rede administrativa do PAM e a rede dos ativos.
✓Conta Linux nomeada com privilégio administrativo controlado via sudo.
✓SSH direto restrito para aceitar somente o pam-01.
✓Autorização específica por usuário, ativo, conta e protocolo.
✓Sessão SSH pelo navegador para o linux-01.
✓Sessão RDP pelo navegador para o win-01.
✓Registro de sessões, reprodução e comandos associados.

O JumpServer complementa a arquitetura de segurança; ele não substitui os demais controles. Em produção, eu consideraria obrigatórios:

IDENTIDADE

MFA e diretório corporativo

Integração com Active Directory, LDAP ou SSO; MFA obrigatório para usuários administrativos e operacionais.

OPERAÇÃO

Backups e monitoramento

Backup testado dos dados persistentes, envio de logs ao SIEM e revisão periódica de contas e permissões.

EXPOSIÇÃO

Acesso externo planejado

Quando necessário, publicar por uma arquitetura própria de VPN ou ZTNA, com identidade, MFA e regras restritivas. Não expor o portal administrativo diretamente na Internet.

11

Conclusão

O principal resultado deste laboratório não foi simplesmente abrir um SSH ou uma sessão RDP pelo navegador.

Foi transformar acessos privilegiados em atividades controladas, identificadas e auditáveis. O usuário operacional passou a ver apenas o que foi autorizado; a conta administrativa usada no servidor deixou de precisar ser revelada; e a plataforma passou a registrar evidências de como cada acesso aconteceu.

Próximo passo

O PAM funciona melhor quando se torna parte do processo, não um atalho opcional.

Comece com poucos ativos críticos, contas nomeadas e regras simples. Depois evolua para MFA, aprovação, expiração de acesso, integração corporativa, rotação de credenciais e monitoramento contínuo.

Falar com o Perito Lucio →
Análise por

Especialista em Cyber Security e Digital Forensics, atua com investigação digital, resposta a incidentes, gestão de vulnerabilidades, pentest autorizado e proteção de ambientes online. Este laboratório transforma evidência técnica em clareza prática para decisões reais.

Cyber Security Digital Forensics Threat Investigation Resposta a Incidentes