
Dieses Puppet-Modul stellt sichere ssh-client- und ssh-server-Konfigurationen bereit.
cbc_required = false - true, wenn CBC für Ciphers erforderlich ist. Dies ist in der Regel nur notwendig, wenn ältere M2M-Mechanismen mit SSH kommunizieren müssen, die keinen der konfigurierten sicheren Ciphers aktiviert haben. CBC ist eine schwache Alternative. Alles Schwächere sollte vermieden werden und ist daher nicht verfügbar.weak_hmac = false - true, wenn schwächere HMAC-Mechanismen erforderlich sind. Dies ist in der Regel nur notwendig, wenn ältere M2M-Mechanismen mit SSH kommunizieren müssen, die keinen der konfigurierten sicheren HMACs aktiviert haben.weak_kex = false - true, wenn schwächere Key-Exchange-Mechanismen (KEX) erforderlich sind. Dies ist in der Regel nur notwendig, wenn ältere M2M-Mechanismen mit SSH kommunizieren müssen, die keinen der konfigurierten sicheren KEXs aktiviert haben.allow_root_with_key = false - false, um Root-Login vollständig zu deaktivieren. Auf true setzen, um Root-Login über schlüsselbasierte Mechanismen zu erlauben.ports = [ 22 ] - Ports, auf denen der ssh-server lauschen und zu denen sich der ssh-client verbinden solllisten_to = [ "0.0.0.0" ] - eine oder mehrere IP-Adressen, auf denen der ssh-server lauschen soll. Standard ist leer, sollte aber aus Sicherheitsgründen konfiguriert werden!remote_hosts - ein oder mehrere Hosts, zu denen sich der ssh-client verbinden kann. Standard ist leer, sollte aber aus Sicherheitsgründen konfiguriert werden!allow_tcp_forwarding = false - auf true setzen, um TCP-Forwarding zu erlaubenallow_agent_forwarding = false - auf true setzen, um Agent-Forwarding zu erlaubenuse_pam = false, um die PAM-Authentifizierung zu deaktivierenclient_options = {} - Werte im Hash setzen, um die Einstellungen des Moduls zu überschreibenserver_options = {} - Werte im Hash setzen, um die Einstellungen des Moduls zu überschreibenNach dem Hinzufügen dieses Moduls können Sie die Klasse verwenden:
class { 'ssh_hardening': }
Dies installiert ssh-server und ssh-client. Alternativ können Sie nur eines davon auswählen:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
Sie sollten die Kernattribute konfigurieren:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
Der Standardwert für listen_to ist 0.0.0.0. Es wird dringend empfohlen, den Wert zu ändern.
Standardoptionen werden mit den Optionen zusammengeführt, die über die Parameter client_options und server_options übergeben werden.
Wenn eine Option sowohl als Standard als auch über den Optionsparameter gesetzt ist, gewinnt letztere.
Das folgende Beispiel aktiviert X11Forwarding, das standardmäßig deaktiviert ist:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
Für lokale Tests können Sie Vagrant und Virtualbox oder VMWare verwenden, um Tests lokal auszuführen. Sie müssen Virtualbox und Vagrant auf Ihrem System installieren. Siehe Vagrant Downloads für ein für Ihr System geeignetes Vagrant-Paket. Für alle unsere Tests verwenden wir test-kitchen. Wenn Sie mit test-kitchen nicht vertraut sind, werfen Sie bitte einen Blick auf deren Anleitung.
Installieren Sie als Nächstes test-kitchen:
# Abhängigkeiten installieren
gem install bundler
bundle install
# Tests abrufen
bundle exec thor kitchen:fetch-remote-tests
# Lint-Prüfungen durchführen
bundle exec rake lint
# Spec-Prüfungen durchführen
bundle exec rake spec
# Schneller Test auf einer Maschine
bundle exec kitchen test default-ubuntu-1204
# Test auf Debian-basierten Maschinen
bundle exec kitchen test
# Für die Entwicklung
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Weitere Informationen finden Sie unter test-kitchen
Ich kann mich nicht bei meinem Konto anmelden. Ich habe den Client-Schlüssel registriert, aber es lässt mich trotzdem nicht rein.
Wenn Sie alle typischen Probleme ausgeschlossen haben (Firewall, Netzwerk, fehlender Schlüssel, falscher Schlüssel, deaktiviertes Konto usw.), könnte Ihr Konto gesperrt sein. Der schnellste Weg, dies herauszufinden, ist ein Blick auf den Passwort-Hash Ihres Benutzers:
sudo grep myuser /etc/shadow
Wenn der Hash ein ! enthält, ist Ihr Konto gesperrt:
myuser:!:16280:7:60:7:::
Der richtige Weg, dies zu lösen, ist das Entsperren des Kontos (passwd -u myuser). Wenn der Benutzer kein Passwort hat, können Sie es wie folgt entsperren:
usermod -p "*" myuser
Alternativ, wenn Sie PAM verwenden möchten, haben Sie es über use_pam = true aktiviert. PAM erlaubt gesperrten Benutzern den Zugang mit Schlüsseln.
Warum verbindet sich meine Anwendung nicht mehr über SSH?
Schauen Sie immer zuerst in die Logdateien und, wenn möglich, auf die Aushandlung zwischen Client und Server, die beim Verbindungsaufbau stattfindet.
Wir haben einige Probleme in Anwendungen (basierend auf Python und Ruby) gesehen, die auf deren Verwendung eines veralteten Krypto-Sets zurückzuführen sind. Dies kollidiert mit diesem Härtungsmodul, das die Liste der Ciphers, Message Authentication Codes (MACs) und Key-Exchange-Algorithmen (KEX) auf eine sicherere Auswahl reduziert hat.
Wenn Sie feststellen, dass dies nicht ausreicht, können Sie gerne cbc_required für Ciphers, weak_hmac für MACs und weak_kex für KEX aktivieren.
Lizenziert unter der Apache License, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die unter der Lizenz verteilte Software auf einer "WIE BESEHEN"-BASIS verteilt, OHNE GEWÄHRLEISTUNG ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. Weitere Einzelheiten finden Sie in der Lizenz für die spezifischen Berechtigungen und Beschränkungen.