Skip to main content

Proxmox VE - 7.2-3



Introdução


O

Gerenciando usuário


O Proxmox VE oferece suporte a várias fontes de autenticação, como o Linux PAM (usando usuários ativos do Linux para fazer a autenticação e um servidor de autenticação Proxmox VE integrado (onde o usuário existe apenas no Proxmox), ainda é possível usar LDAP, Microsoft Active Directory e OpenID Connect para obter os usuários.


O Proxmox guarda os atributos dos usuários em /etc/pve/user.cfg (As senhas não ficam aqui), os usuários são associados aos domínios de autenticação, portanto, um usuário é identificado internamente no Proxmox por seu nome de usuário mais o domínio, ficando no formato <userid>@<realm>.


Ainda é possível adicionar um segundo fator de autenticação para o usuários, para aqueles que possuem chaves Yubikey é possível utilizar ela com o Proxmox.



Usuário Administrador


O usuário root é o usuário administrador e loga via PAM, infelizmente não podemos excluir ou sequer renomear esse usuário, nem mesmo remover as permissões dele, mas podemos desativar ele.


A desativação de uma conta pode acontecer de duas formas, a mais simples é via Web GUI, onde nós editamos a conta e demarcamos a opção enabled ou habilitado. Para a segunda forma nós devemos editar o arquivo /etc/pve/user.cfg e devemos mudar de 1 para zero, veja um exemplo abaixo:

## Exemplo da configuração de usuário ativo:
user:root@pam:1:0::::::
user:joao@pve:1:0::::::

## Exemplo da configuração de usuário inativo:
user:root@pam:0:0::::::
user:joao@pve:0:0::::::

Após desativar o usuário root não será mais possível logar no servidor Proxmox via Web Shell e também não vamos conseguir mudar as senhas de usuários que residam no Sistemas Linux via Web GUI.



Grupos


Cada usuário pode ser membro de um ou vários grupos. Os grupos trazem uma maneira mais fácil de organizar as permissões de acesso. É muito preferível conceder permissões a grupos em vez de usuários individuais, pois dessa forma, você obterá uma lista de controle de acesso muito mais fácil de gerenciar.



Authentication Realms


Como os usuários do Proxmox são apenas contrapartes para usuários existentes em algum realm externo, os realms devem ser configurados em /etc/pve/domains.cfg. Os seguintes domínios (métodos de autenticação) estão disponíveis:

  • Linux PAM Standard Authentication

    Linux PAM é uma estrutura para autenticação de usuário usando o sistema.


  • Proxmox VE Authentication Server

    Este método usa um armazenamento de senhas do tipo Unix, que guarda as senhas em formato de hash, a localização do arquivo é /etc/pve/priv/shadow.cfg. As senhas são criptografadas usando o algoritmo de hash SHA-256. Nesse método, os usuários são totalmente gerenciados pelo Proxmox e podem alterar suas próprias senhas por meio da GUI (não sendo necessário ter um usuário correspondente no sistema Linux).


  • LDAP

    O LDAP (Lightweight Directory Access Protocol) é um protocolo aberto e multiplataforma para autenticação usando serviços de diretório. OpenLDAP é uma implementação popular de código aberto do protocolo LDAP.


  • Microsoft Active Directory (AD)

    O Microsoft Active Directory (AD) é um serviço de diretório para redes de domínio do Windows e tem suporte como um domínio de autenticação para o Proxmox VE. Ele suporta LDAP como um protocolo de autenticação.


  • OpenID Connect

    O OpenID Connect é implementado como uma camada de identidade sobre o protocolo OATH 2.0. Ele permite que os clientes verifiquem a identidade do usuário, com base na autenticação realizada por um servidor de autorização externo.



Gerenciando usuários via CLI


Vamos ver como estar gerenciando os usuários e grupos via linha de comando.

ComandoDescrição
pveum user listLista os usuários.
pveum useradd fulano@pve --email fulano@teste --lastname Dias --comment "Usuário somente do Proxmox"Adiciona um novo usuário.
pveum passwd fulano@pveAdiciona/Muda a senha do usuário.
pveum usermod fulano@pve --enable 0Desativa o usuário.
pveum user delete fulano@pveRemove um usuário.
pveum group listLista os grupos.
pveum group add TaskForce141 --comment codAdiciona um grupo.
pveum group delete TaskForce141Remove um grupo.
pveum usermod fulano@pve --append --group FullAccess,TaskForce141Adiciona o usuário em dois grupos grupo.
pveum usermod fulano@pve --group TaskForce141Remove o usuário do grupo FullAccess, na verdade readiciona ele ao grupo informado, mas remove de outros que nao forem informados.
pveum usermod ou pveum user modifyEdita informações sobre o usuário.

# Criando usuário:
$ sudo pveum useradd fulano@pve --email fulano@teste --lastname Dias --comment "Usuário somente do Proxmox"

# Definir a senha do usuário:
$ sudo pveum passwd fulano@pve
Enter new password: ********
Retype new password: ********

# Desativa o usuário:
$ sudo pveum usermod fulano@pve --enable 0

# Adicionando o usuário dentro de um grupo:
$ sudo pveum usermod fulano@pve --group TaskForce141

# Listando os usuários do sistemas proxmox:
$ sudo pveum user list
┌────────────┬────────────────────────────┬──────────────┬────────┬────────┬───────────┬────────┬──────┬──────────┬────────────┬────────┐
│ userid │ comment │ email │ enable │ expire │ firstname │ groups │ keys │ lastname │ realm-type │ tokens │
╞════════════╪════════════════════════════╪══════════════╪════════╪════════╪═══════════╪════════╪══════╪══════════╪════════════╪════════╡
│ admin@pve │ │ │ 10 │ adm │ │ │ │ pve │ │
├────────────┼────────────────────────────┼──────────────┼────────┼────────┼───────────┼────────┼──────┼──────────┼────────────┼────────┤
│ fulano@pve │ Usuário somente do Proxmox │ fulano@teste │ 00 │ │ │ │ Dias │ pve │ │
├────────────┼────────────────────────────┼──────────────┼────────┼────────┼───────────┼────────┼──────┼──────────┼────────────┼────────┤
│ joao@pam │ │ │ 10 │ joao │ │ │ │ pam │ │
├────────────┼────────────────────────────┼──────────────┼────────┼────────┼───────────┼────────┼──────┼──────────┼────────────┼────────┤
│ root@pam │ │ │ 10 │ │ │ │ │ pam │ │
└────────────┴────────────────────────────┴──────────────┴────────┴────────┴───────────┴────────┴──────┴──────────┴────────────┴────────┘

# Adicionando um grupo:
$ sudo pveum group add TaskForce141 --comment cod

# Listando os grupos:
$ sudo pveum group list
┌──────────────┬────────────────────────────┬──────────────────────┐
│ groupid │ comment │ users
╞══════════════╪════════════════════════════╪══════════════════════╡
│ FullAccess │ │ admin@pve,fulano@pve │
├──────────────┼────────────────────────────┼──────────────────────┤
│ NoAccess │ Only users without Access. │ │
├──────────────┼────────────────────────────┼──────────────────────┤
│ TaskForce141 │ cod │ fulano@pve │
└──────────────┴────────────────────────────┴──────────────────────┘


Tornando seguro o uso em produção


Após instalar o Proxmox faça:

# Desative o acesso root via SSH;

# Adicione um usuário administrador:
## Datacenter -> Permissions -> Users -> Add
### Username: Admin
### Realm: Proxmox VE Authentication Server

# Crie uma regra para dar permissão de administrador ao novo usuário:
## Datacenter -> Permissions -> Users -> Add -> User permission
### User: Admin
### Role: Administrator
### Path: /

# Desative o usuário Root:
## Datacenter -> Permissions -> Users
## Edite o usuário root e desmarque a opção 'Enabled'.

# Crie um usuário para logar no sistema (o único disponível por padrao é o root);

Após fazer isso não será mais possível logar no servidor Proxmox via Web Shell e mudar senhas de usuários que residam no Sistemas Linux.



Firewall e Segurança


O Firewall do Proxmox node é gerenciado via acesso Web, mas pode ser gerenciado via CLI também. E todas as regras criadas após a instalação ficam armazenadas em /etc/pve/firewall/cluster.fw.


O Proxmox trabalha com o conceito de zonas, como podemos ver abaixo:

  • Datacenter

    As regras definidas nessa zona vão definir o tráfego entrante e sainte para todos os Hosts e VM.

    Entenda como Host outros servidores Proxmox, outra nomeclatura bastante vista é Cluster node (nó de Cluster).


  • Host

    As regras definidas nessa zona vão definir o tráfego entrante e sainte apenas para um Hosts e suas VMs, nesse caso a regra é definida especificamente para um servidor Proxmox.

    Entenda como Host outros servidores Proxmox, outra nomeclatura bastante vista é Cluster node (nó de Cluster).


  • VM

    As regras definidas nessa zona vão definir o tráfego entrante e sainte para uma VM.


As regras em Datacenter e Host são aplicadas em cascatas, isso significa que tudo abaixo delas serão influenciados pela regras aplicadas, com exceção da VM, já que não existe nada abaixo dela. A imagem abaixo respresenta como as regras são aplicadas e abrange seus respectivos níveis.

proxmox-firewall



Security Group


O SG (Segurity Group) é usado para agrupar várias regras de Firewall dentro de apenas uma, é como se fosse um pacote cheio de regras dentro dele. A aplicação desse tipo de regra é útil quando muitas VMs (mas não todas 😉) necessitam de regras iguais, nesses casos apenas criamos um SG, aplicamos as regras dentro deles e aplicamos esse SG nas VMs.


O uso do SG não se restringe apenas as VMs, pode ser adicionado ao Datacenter e Hosts também, mas sua criação é realizada apenas na sessão Datacenter.


Criar um SG:

  1. Clique em Datacenter -> Firewall -> Security Group -> Create para criar um SG;
  2. Agora clique no SG criado e poderá adicionar regras dentro dele, veja a imagem abaixo como exemplo. proxmox-fw-sg
  3. Habilite o SG criado, pode ser em Datacenter, Host ou nas VMs, faça o teste com o Datacenter: Datacenter -> Firewall -> Insert: Security Group e adicione o SG criado.
  4. Não se esqueça de habilitar o Firewall em Datacenter -> Firewall -> Options e mude a opção Firewall para yes.


IPSet


Usado para mapear endereços IP para nomes ou até mesmo criar grupos de endereços IP que poderão ser usados para aplicação de regras.



Máquina Virtual


No Proxmox podemos criar uma máquina virtual (KVM VM) de algumas maneiras:

  • A partir de uma imagem ISO;
  • A partir de um template;
  • Usando um boot via PXE.


Máquina Virtual usando ISO


No Vamos ver como criar uma imagem usando a ISO e template. Para a ISO primeiro devemos fazer o upload da imagem para o servidor Proxmox. Para efeitos práticos o meu servidor Proxmox se chama mypve.


Primeiro acesse: Datacenter -> mypve -> local (mypve) -> ISO Images -> Upload

Faça o upload da imagem ISO!



Storage


Um armazenamento é onde vão residir as imagens de disco virtual para as máquinas virtuais. O armazenamento pode ser local, configurado com discos conectados diretamente ao servidor ou pode ser um armazenamento compartilhado com centenas de discos (armazenamento em rede), a principal responsabilidade de um armazenamento é manter imagens de discos virtuais, modelos, backups e assim por diante. No Proxmox temos suporte para alguns tipos de armazenamentos, como NFS, Ceph, GlusterFS, ZFS e iSCSI.


Diferentes tipos de armazenamento armazenam diferentes tipos de dados, por exemplo, um armazenamento local pode conter qualquer tipo de dados, como imagens de disco, modelos ISO/contêiner, arquivos de backup e assim por diante. Um armazenamento Ceph, por outro lado, pode conter apenas uma imagem de disco no formato .raw.



Storage Local


Qualquer armazenamento que esteja no próprio nó (servidor Proxmox) usando discos conectados diretamente ao servidor é um armazenamento local. Se o próprio nó falhar, o armazenamento se tornará completamente inacessível. A migração ao vivo de uma VM é impossível quando as VMs são armazenadas em um armazenamento local porque, durante a migração, o disco virtual da VM precisa ser copiado inteiramente para outro nó.

Uma VM só pode ser migrada ao vivo quando houver vários nós Proxmox em um cluster e o disco virtual estiver armazenado em um armazenamento compartilhado acessado por todos os nós do cluster.



Storage Compartilhado


Um armazenamento compartilhado é aquele que está disponível para todos os nós em um cluster por meio de alguma forma de mídia de rede, ou seja, o disco reside fisicamente num servidor que está na rede, apesar dele aparecer ou ser mapeado como um disco local.



Propriedades de armazenamento


O proxmox usa propriedades de armazenamento para diferentes tipos de armazenamento, é como se fosse uma regra que informa como aquele armazenamento deve se comportar.

PropriedadeDescrição
nodesLista de nomes de nós de cluster em que esse armazenamento pode ser usado/acessível. Pode-se usar essa propriedade para restringir o acesso de armazenamento a um conjunto limitado de nós.
contentUm armazenamento pode suportar vários tipos de conteúdo, por exemplo, imagens de disco virtual, imagens iso de cdrom, modelos de contêiner ou diretórios raiz de contêiner. Nem todos os tipos de armazenamento são compatíveis com todos os tipos de conteúdo. Pode-se definir essa propriedade para selecionar para que esse armazenamento é usado.
imagesImagens de VM KVM-Qemu.
rootdirPermitir armazenar dados do contêiner.
vztmplModelos de contêiner.
backupArquivos de backup (vzdump).
isoImagens ISO
snippetsArquivos de trecho, por exemplo, scripts de gancho de convidado
sharedarcar o armazenamento como compartilhado.
disableVocê pode usar esse sinalizador para desabilitar completamente o armazenamento.
maxfilesbsoleto, por favor, use os backups de remoção. Número máximo de arquivos de backup por VM. Use 0 para ilimitado.
prune-backupsOpções de retenção para backups. Para obter detalhes, consulte Retenção de backup.
formatFormato de imagem padrão (raw|qcow2|vmdk)
preallocationModo de pré-alocação (off|metadata|falloc|full) para imagens raw e qcow2 em armazenamentos baseados em arquivo. O padrão são metadados, que são tratados como desativados para imagens raw. Ao usar armazenamentos de rede em combinação com imagens qcow2 grandes, o uso de off pode ajudar a evitar tempos limite.


iSCSI


Vamos ver como configurar um sotrage usando o iSCSI.


Primeiro veja os IQN disponíveis:

# Descubra os Targets (lun) disponível (se quiser omitir a porta é possível):
root@mypve:~# iscsiadm -m discovery -t st -p 192.168.122.60
192.168.122.60:3260,1 iqn.2022-07.iscsi-test.linux-ubuntu20:target1

root@mypve:~# pvesm scan iscsi 192.168.122.60
192.168.122.60:3260,1 iqn.2022-07.iscsi-test.linux-ubuntu20:target1

Primeiro acesse: Datacenter -> Storage -> Add -> iSCSI e depois preencha as informações como abaixo.

iscsi-proxmox

Note que usar as LUNs diretamente não é uma prática recomendada, apesar da opção estar dosponível. Isso pode causar um erro no disposotivo iSCSI quando acessado diretamente.


Só por curiosidade da para obter o ID do storage iSCSI.

# Aprenda o ID da storage:
root@mypve:~# pvesm list mystorage
Volid Format Type Size VMID
mystorage:0.0.1.scsi-360000000000000000e00000000010001 raw images 32212254720

Observe que o armazenamento iSCSI não pode ser usado sozinho. Ele é meramente apresentado como um dispositivo de bloco ou um disco rígido virtual vazio. Nenhum arquivo pode ser armazenado em um armazenamento iSCSI conectado. Ele só pode ser usado para criar um armazenamento LVM usando destinos iSCSI como dispositivos subjacentes.


O Gerenciamento de Volume Lógico (LVM) fornece um método de alocação de espaço de armazenamento usando uma ou mais partições ou unidades de disco como armazenamento base subjacente. O armazenamento LVM requer que um armazenamento básico seja configurado e funcione corretamente. Podemos criar armazenamento LVM com dispositivos locais como suporte ou suporte de rede com dispositivos iSCSI. O LVM permite espaço de armazenamento escalável, pois o armazenamento base pode estar no mesmo nó ou em um diferente. O armazenamento LVM suporta apenas o formato de imagem de disco virtual RAW. Só podemos armazenar imagens de disco virtual ou contêineres no armazenamento LVM.