
Este módulo puppet fornece configurações seguras de ssh-client e ssh-server.
truecbc_required = false - true se CBC for necessário para cifras. Isso geralmente só é necessário se mecanismos M2M mais antigos precisarem se comunicar via SSH e não tiverem nenhuma das cifras seguras configuradas habilitadas. CBC é uma alternativa fraca. Qualquer coisa mais fraca deve ser evitada e, portanto, não está disponível.weak_hmac = false - true se mecanismos HMAC mais fracos forem necessários. Isso geralmente só é necessário se mecanismos M2M mais antigos precisarem se comunicar via SSH e não tiverem nenhum dos HMACs seguros configurados habilitados.weak_kex = false - true se mecanismos de Troca de Chaves (KEX) mais fracos forem necessários. Isso geralmente só é necessário se mecanismos M2M mais antigos precisarem se comunicar via SSH e não tiverem nenhum dos KEXs seguros configurados habilitados.allow_root_with_key = false - false para desabilitar o login root por completo. Defina como true para permitir que root faça login via mecanismo baseado em chave.ports = [ 22 ] - portas nas quais o ssh-server deve escutar e às quais o ssh-client deve se conectarlisten_to = [ "0.0.0.0" ] - um ou mais endereços IP, nos quais o ssh-server deve escutar. O padrão é vazio, mas deve ser configurado por motivos de segurança!remote_hosts - um ou mais hosts, aos quais o ssh-client pode se conectar. O padrão é vazio, mas deve ser configurado por motivos de segurança!allow_tcp_forwarding = false - defina como true para permitir o encaminhamento TCPallow_agent_forwarding = false - defina como true para permitir o encaminhamento de Agentuse_pam = false para desabilitar a autenticação PAMclient_options = {} - defina valores no hash para substituir as configurações do móduloserver_options = {} - defina valores no hash para substituir as configurações do móduloApós adicionar este módulo, você pode usar a classe:
class { 'ssh_hardening': }
Isso instalará o ssh-server e o ssh-client. Você pode alternativamente escolher apenas um deles via:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
Você deve configurar os atributos principais:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
O valor padrão para listen_to é 0.0.0.0. É altamente recomendável alterar esse valor.
As opções padrão serão mescladas com as opções passadas pelos parâmetros client_options e server_options.
Se uma opção for definida tanto como padrão quanto via parâmetro de opções, esta última prevalecerá.
O exemplo a seguir habilitará o X11Forwarding, que está desabilitado por padrão:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
Para testes locais, você pode usar vagrant e Virtualbox ou VMWare para executar testes localmente. Você precisará instalar o Virtualbox e o Vagrant no seu sistema. Consulte Vagrant Downloads para obter um pacote vagrant adequado ao seu sistema. Para todos os nossos testes, usamos test-kitchen. Se você não está familiarizado com test-kitchen, dê uma olhada no guia deles.
Em seguida, instale o test-kitchen:
# Instalar dependências
gem install bundler
bundle install
# Buscar testes
bundle exec thor kitchen:fetch-remote-tests
# Verificações de lint
bundle exec rake lint
# Verificações de spec
bundle exec rake spec
# teste rápido em uma máquina
bundle exec kitchen test default-ubuntu-1204
# teste em máquinas baseadas em Debian
bundle exec kitchen test
# para desenvolvimento
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Para mais informações, consulte test-kitchen
Não consigo fazer login na minha conta. Registrei a chave do cliente, mas mesmo assim não me deixa entrar.
Se você já esgotou todos os problemas típicos (firewall, rede, chave ausente, chave errada, conta desabilitada etc.), pode ser que sua conta esteja bloqueada. A maneira mais rápida de descobrir é olhar o hash da senha do seu usuário:
sudo grep myuser /etc/shadow
Se o hash incluir um !, sua conta está bloqueada:
myuser:!:16280:7:60:7:::
A maneira correta de resolver isso é desbloquear a conta (passwd -u myuser). Se o usuário não tiver senha, você pode desbloqueá-la via:
usermod -p "*" myuser
Alternativamente, se você pretende usar PAM, você o habilitou via use_pam = true. O PAM permitirá que usuários bloqueados entrem com chaves.
Por que meu aplicativo não se conecta mais via SSH?
Sempre olhe primeiro os arquivos de log e, se possível, a negociação entre cliente e servidor que é concluída ao conectar.
Vimos alguns problemas em aplicativos (baseados em python e ruby) que se devem ao uso de um conjunto de criptografia desatualizado. Isso colide com este módulo de endurecimento, que reduziu a lista de cifras, códigos de autenticação de mensagem (MACs) e algoritmos de troca de chaves (KEX) para uma seleção mais segura.
Se você achar que isso não é suficiente, sinta-se à vontade para ativar cbc_required para cifras, weak_hmac para MACs e weak_kex para KEX.
Licenciado sob a Apache License, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em
http://www.apache.org/licenses/LICENSE-2.0
Salvo disposição em contrário da lei aplicável ou acordo por escrito, o software distribuído sob a Licença é distribuído "COMO ESTÁ", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para os termos específicos que regem as permissões e limitações sob a Licença.