Ich zeige euch wie man einen SSH-Zugang auf einem Server mit einer einfachen 2-Faktor-Authentifizierung (Im Text 2FA) noch verschärfen kann.
Ich habe als Referenz mein Ubuntu 18.04 Server benutzt. Diese Anleitung sollte auch auf Debian funktionieren und abwärtskompatibel sein.
1. Vorbereitungen
2. Installation
3. 2FA für Benutzer einrichten
4. 2FA für login einschalten
1. Vorbereitungen:
- Wir benötigen einen SSH-Zugriff mit sudo Rechten auf den zu sichernden Server
- Wir benötigen eine Authentification App auf unserem Smartphone für QR Code wie Google Authentificator oder Authy (Ich empfehle Authy)
2. Installation:
Die Installation ist einfach. Wir benötigen das Google PAM Modul. Dieses kann für Authy und Google-Authentificator benutzt werden.
Das Modul installieren wir mit folgendem Befehl:
sudo apt-get install libpam-google-authenticator
Wenn die Installation erfolgreich abgeschlossen ist, können wir die 2FA für die Benutzer aktivieren.
3. 2FA für Benutzer einrichten:
Dieser Schritt muss in der Bash vom Benutzer ausgeführt werden, damit die PAM-Authentification für diesen Benutzer aktiviert ist. Anschliessend führen wir folgenden Befehl aus:
Wir werden nun gefragt, ob wir einen zeitbasierten Token oder einen statischen Token wollen. Wir benutzen den time-based, und bestätigen mit y:
Do you want authentication tokens to be time-based (y/n) y
Nun sehen wir folgende Informationen:
QR-Code: Diesen QR-Code müssen wir mit unserer 2FA-App (Authy) abscannen, um die Synchronisation zu aktivieren.
Secret Key: Diesen Key kann man alternativ in der Auth-App eintragen, wenn man keine QR-Codes benutzen will/kann.
Verfication Code: der Erste sechsstellige Code der generiert wurde.
Emergency-scratch-codes: auch bekannt als Back-up Codes. Sie werden benötigt um bei Verlust der App (defektes Smartphone usw) die 2FA wieder zu aktivieren. Sicher aufbewahren!
Nachdem wir auf unserem Smartphone die PAM für den Benutzer eingerichtet haben, müssen wir noch weitere Fragen beantworten.
Hier wird nachgefragt, ob wir unser .google_authentificator file ersetzen bzw. erstellen wollen. Wir bestätigen mit y.
Do you want me to update your "~/.google_authenticator" file (y/n) y
Die folgenden Fragen müssen nach eigenem Ermessen beantwortet werden. Ich habe mich für den Standard entschieden.
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n
If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
4. 2FA für login einschalten:
Beim SSH-Deamon muss die PAM aktiviert werden, sonst kann man sich nicht mehr in der Shell einlogen
Um die PAM-Abfrage zu aktiviern öffnen wir das File
und fügen am Ende folgende Zeile hinzu:
auth required pam_google_authenticator.so nullok
Zum Beispiel:
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
auth [success=1 default=ignore] pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth optional pam_cap.so
# end of pam-auth-update config
#
#
auth required pam_google_authenticator.so nullok
#
#
Alles anzeigen
Anschliessend aktiviern wir bei dem ssh-deamon noch die PAM-Authentifikation. Dazu öffnen wir die
und ändern folgende Zeile von No zu Yes:
ChallengeResponseAuthentication yes
Jetzt den ssh deamon neu starten mit
Beim nächsten Login sollte nach dem eingeben des Passworts die 2FA-Abfrage kommen.
Visit original Website: https://www.digitalocean.com/c…ntication-on-ubuntu-18-04