Arquivo Esxi ssh config muda para tornar não permanente e permanente

2

Eu tenho servidor dedicado com esxi. Eu adicionei um usuário extra ao esxi e adicionei suas chaves em /etc/keys/keys-user/authorized_keys

Em seguida, reiniciei o servidor e a pasta de chaves desapareceu. Então eu acho que eu preciso copiar as chaves em algum armazenamento persistente e, em seguida, colocar o comando em /etc/rc.local.d/local.sh , mas eu vi que até mesmo esse arquivo é reescrito após a reinicialização. então minhas perguntas são

  1. Em qual arquivo eu preciso escrever para que ele persista com a reinicialização
  2. Agora quero desabilitar a autenticação de senha. Eu sei que posso fazer isso no sshd_config. mas eu quero que seja não permanente. Quer dizer, eu quero desativá-lo manualmente e se eu reiniciar, então eu quero que ele seja redefinido de volta para o arquivo original com autenticação habilitada

UPADTE Eu tenho regras de configuração de firewall que só o meu ip em casa tem acesso ao esxi e nada mais. Agora, para que apenas no caso eu não seja capaz de se conectar e, em seguida, o que eu quero é ssh e desativar o firewall por algum tempo e pode ser mudar a regra de firewall para novo ip e, em seguida, reativar o firewall. é por isso que eu queria acesso ssh. Poucos dias atrás eu tive conta root bloqueada por causa de alguém força bruta. Então, apenas no caso eu quero ter usuário extra que eu posso ssh para corrigir o problema. Eu habilitei a autenticação baseada em chave ssk, mas é pública. então eu quero restringir ssh apenas para ip em casa e em caso de emergência, se o meu ip muda, então eu posso reiniciar esxi para que o trabalho de autenticação baseada em senha e, em seguida, eu posso consertar o firewall. Eu sou usuário doméstico, portanto não posso me dar ao firewall de hardware em esxi.

Eu tenho pfsense para máquinas internas. Eu não tenho nenhum site público apenas o meu material de laboratório. Eu não quero colocar o esxi atrás do pfsense porque se algo está errado no pfsense então eu serei bloqueado e não terei como reinstalar tudo

    
por user3214546 22.02.2017 / 00:16

1 resposta

3

1. Chaves SSH persistentes

Na minha experiência, o /etc/rc.local.d/local.sh é realmente persistente durante as reinicializações. Vale a pena mencionar que o arquivo só é salvo uma vez e por hora ou durante um desligamento normal (consulte Com que frequência o ESXi escreve no disco de inicialização? ).

Portanto, uma razão pela qual a alteração não é salva pode ser, se você fizer uma reinicialização forçada ou um ciclo de energia, em vez de reboot .

Você pode ver se o sistema salva a alteração emitindo /sbin/auto-backup.sh , o que salva o arquivo imediatamente no bootbank (veja Como persistir alterações de configuração no ESXi 4.x / 5.x , que ainda se aplica à v6.x).

2. Desativar autenticação de senha

Meu ESXi também está em uma rede pública. Em /etc/ssh/sshd_config eu mudei

PermitRootLogin yes

para

PermitRootLogin prohibit-password
PubkeyAuthentication yes

Isso já reduz a chance de que o usuário root seja bloqueado para tentativas inválidas de senha (já que as senhas não são permitidas para usuários root em primeiro lugar). Além disso, a autenticação baseada em chave é considerada muito mais segura (se você mantiver as chaves com segurança!) Do que a senha auth.

Se você quiser desabilitar completamente a autenticação por senha, também precisará definir

UsePAM no
PasswordAuthentication no

No entanto, essas alterações são permanentes (como /etc/ssh/sshd_config é salvo com /sbin/auto-backup.sh ) e imediato (não é reiniciado se sshd, já que o sshd é lançado pelo inetd ). Assim, não há como mudanças não permanentes aqui.

3. Firewall

Se você ainda quiser alterar as regras de firewall, poderá criar um arquivo ssha_from_anywhere.xml com conteúdo

<ConfigRoot>
  <service id='1000'>
    <id>sshServer</id>
    <rule id='0000'>
      <direction>inbound</direction>
      <protocol>tcp</protocol>
      <porttype>dst</porttype>
      <port>22</port>
    </rule>
    <enabled>true</enabled>
    <required>true</required>
  </service>
</ConfigRoot>

em um armazenamento persistente e copie-o para /etc/vmware/firewall/ durante a inicialização (novamente em /etc/rc.local.d/local.sh ). Em seguida, altere sua regra de firewall existente com o vSphere Client para permitir apenas o seu endereço local.

Quando o sistema for reinicializado, a porta ssh estará aberta ao mundo. Em seguida, você precisaria fazer login e excluir o /etc/vmware/firewall/ssha_from_anywhere.xml e recarregar o firewall:

esxcli network firewall refresh

No entanto, antes de fazer isso, você teria que ajustar o endereço IP que tem permissão para se conectar ao ssh. Você provavelmente desejaria fazer isso no cliente vSphere novamente, ou diretamente em /etc/vmware/firewall/service.xml . No primeiro caso (se você não desativou a interface do cliente vSphere), todo o procedimento parece sem sentido, já que você poderia simplesmente efetuar login com o cliente vSphere e alterar o endereço IP.

As alterações feitas no vSphere Client são refletidas no arquivo /etc/vmware/esx.conf , por exemplo,

/firewall/services/sshServer/allowedip[0000]/ipstr = "192.168.1.1"
/firewall/services/sshServer/allowedip[0001]/ipstr = "192.168.2.0/24"

Embora eu saiba que esse arquivo é mantido durante as reinicializações, não sei como as alterações são ativadas. Talvez você possa editar o arquivo e, em seguida, reboot ? E após essa segunda reinicialização, remova /etc/vmware/firewall/ssha_from_anywhere.xml e recarregue o firewall.

Fontes

Boa sorte!
Martin

    
por 15.05.2017 / 10:00