
Este módulo de Puppet proporciona configuraciones seguras de ssh-client y ssh-server.
truecbc_required = false - true si se requiere CBC para los cifrados. Esto suele ser necesario únicamente si mecanismos M2M antiguos necesitan comunicarse con SSH y no tienen habilitado ninguno de los cifrados seguros configurados. CBC es una alternativa débil. Cualquier cosa más débil debe evitarse y, por tanto, no está disponible.weak_hmac = false - true si se requieren mecanismos HMAC más débiles. Esto suele ser necesario únicamente si mecanismos M2M antiguos necesitan comunicarse con SSH y no tienen habilitado ninguno de los HMAC seguros configurados.weak_kex = false - true si se requieren mecanismos de intercambio de claves (KEX) más débiles. Esto suele ser necesario únicamente si mecanismos M2M antiguos necesitan comunicarse con SSH y no tienen habilitado ninguno de los KEX seguros configurados.allow_root_with_key = false - false para deshabilitar el inicio de sesión de root por completo. Establecer a true para permitir que root inicie sesión mediante mecanismos basados en claves.ports = [ 22 ] - puertos a los que ssh-server debe escuchar y a los que ssh-client debe conectarselisten_to = [ "0.0.0.0" ] - una o más direcciones IP a las que ssh-server debe escuchar. El valor predeterminado está vacío, pero debe configurarse por razones de seguridad.remote_hosts - uno o más hosts a los que ssh-client puede conectarse. El valor predeterminado está vacío, pero debe configurarse por razones de seguridad.allow_tcp_forwarding = false - establecer a true para permitir el reenvío TCPallow_agent_forwarding = false - establecer a true para permitir el reenvío de agenteuse_pam = false para deshabilitar la autenticación PAMclient_options = {} - establezca valores en el hash para sobrescribir la configuración del móduloserver_options = {} - establezca valores en el hash para sobrescribir la configuración del móduloDespués de añadir este módulo, puede usar la clase:
class { 'ssh_hardening': }
Esto instalará ssh-server y ssh-client. Alternativamente, puede elegir solo uno mediante:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
Debe configurar los atributos principales:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
El valor predeterminado de listen_to es 0.0.0.0. Se recomienda encarecidamente cambiar este valor.
Las opciones predeterminadas se fusionarán con las opciones pasadas mediante los parámetros client_options y server_options.
Si una opción está establecida tanto como predeterminada como mediante el parámetro de opciones, esta última prevalecerá.
El siguiente ejemplo habilitará X11Forwarding, que está deshabilitado por defecto:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
Para pruebas locales puede usar vagrant y Virtualbox o VMWare para ejecutar pruebas localmente. Deberá instalar Virtualbox y Vagrant en su sistema. Consulte Vagrant Downloads para obtener un paquete de vagrant adecuado para su sistema. Para todas nuestras pruebas usamos test-kitchen. Si no está familiarizado con test-kitchen, consulte su guía.
A continuación, instale test-kitchen:
# Install dependencies
gem install bundler
bundle install
# Fetch tests
bundle exec thor kitchen:fetch-remote-tests
# Do lint checks
bundle exec rake lint
# Do spec checks
bundle exec rake spec
# fast test on one machine
bundle exec kitchen test default-ubuntu-1204
# test on Debian-based machines
bundle exec kitchen test
# for development
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Para más información consulte test-kitchen
No puedo iniciar sesión en mi cuenta. He registrado la clave del cliente, pero aun así no me deja entrar.
Si ha agotado todos los problemas típicos (firewall, red, clave faltante, clave incorrecta, cuenta deshabilitada, etc.), puede que su cuenta esté bloqueada. La forma más rápida de averiguarlo es mirar el hash de la contraseña de su usuario:
sudo grep myuser /etc/shadow
Si el hash incluye un !, su cuenta está bloqueada:
myuser:!:16280:7:60:7:::
La forma correcta de resolver esto es desbloquear la cuenta (passwd -u myuser). Si el usuario no tiene contraseña, puede desbloquearla mediante:
usermod -p "*" myuser
Alternativamente, si tiene intención de usar PAM, puede habilitarlo mediante use_pam = true. PAM permitirá que los usuarios bloqueados accedan con claves.
¿Por qué mi aplicación ya no se conecta mediante SSH?
Mire siempre primero los archivos de registro y, si es posible, la negociación entre cliente y servidor que se completa al conectar.
Hemos visto algunos problemas en aplicaciones (basadas en python y ruby) debidos a su uso de un conjunto criptográfico obsoleto. Esto choca con este módulo de endurecimiento, que ha reducido la lista de cifrados, códigos de autenticación de mensajes (MAC) y algoritmos de intercambio de claves (KEX) a una selección más segura.
Si considera que esto no es suficiente, no dude en activar cbc_required para los cifrados, weak_hmac para los MAC y weak_kex para los KEX.
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede usar este archivo excepto en cumplimiento de la Licencia. Puede obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
Salvo que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y las limitaciones bajo la Licencia.