Skonfiguruj uwierzytelnianie dwuskładnikowe SSH (2FA) na serwerze CentOS/RHEL
W tym samouczku dowiesz się, jak skonfigurować uwierzytelnianie dwuskładnikowe SSH na serwerze CentOS/RHEL przy użyciu dobrze znanego narzędzia Google Authenticator. Znacząco poprawi to bezpieczeństwo usługi SSH na serwerze CentOS/RHEL.
Jak działa uwierzytelnianie dwuskładnikowe
Zwykle wystarczy podać hasło lub użyć klucza SSH, aby zalogować się do zdalnego serwera CentOS/RHEL. Uwierzytelnianie dwuskładnikowe (2FA) wymaga wprowadzenia dwóch informacji w celu zalogowania się, dlatego też w celu zalogowania się do serwera SSH konieczne będzie wprowadzenie jednorazowego hasła czasowego. To jednorazowe hasło jest obliczane przy użyciu algorytmu TOTP, który jest standardem IETF. Obecnie wiele witryn i usług (Facebook, Google, Twitter itp.) oferuje użytkownikom 2FA w celu zabezpieczenia ich kont. Dobrym pomysłem jest włączenie 2FA również dla Twojego serwera SSH.
W tym samouczku dowiesz się, jak skonfigurować
- Uwierzytelnianie hasłem za pomocą 2FA
- Uwierzytelnianie kluczem publicznym za pomocą 2FA
Uwaga: oprogramowanie serwerowe typu open source, którego będziemy używać w tym artykule, nazywa się
google-authenticatori jest instalowane z repozytorium EPEL. Firma Google nie angażuje się w proces uwierzytelniania w żadnej formie ani formie. Oprogramowanie serwera i aplikacja mobilna nie wymagają dostępu do sieci.
Krok 1: Zainstaluj i skonfiguruj Google Authenticator na serwerze CentOS/RHEL
Zaloguj się do serwera CentOS/RHEL i uruchom następujące polecenia, aby zainstalować Google Authenticator z repozytorium EPEL (Extra Package for Enterprise Linux). qrencode służy do generowania kodu QR w wierszu poleceń.
sudo dnf install -y epel-release
sudo dnf install -y google-authenticator qrencode qrencode-libs
Następnie uruchom polecenie google-authenticator, aby utworzyć nowy tajny klucz w katalogu ~/.ssh/.
google-authenticator -s ~/.ssh/google_authenticatorNa pytanie „Czy chcesz, aby tokeny uwierzytelniające były oparte na czasie? ” Odpowiedz y.
Następnie zobaczysz kod QR, który musisz zeskanować za pomocą aplikacji TOTP na swoim telefonie.
Polecam dwie aplikacje:
- Google Authenticator to najbardziej znana aplikacja mobilna TOTP. Można ją zainstalować na swoim telefonie komórkowym za pośrednictwem Google Play lub sklepu z aplikacjami Apple.
- Aplikacja mobilna Google Authenticator nie jest aplikacją typu open source. Jeśli nie ufasz Google, możesz skorzystać z FreeOTP, aplikacji mobilnej TOTP o otwartym kodzie źródłowym opracowanej przez firmę Red Hat.
Zeskanuj kod QR za pomocą Google Authenticator lub FreeOTP na swoim telefonie komórkowym. Pamiętaj, że aby zeskanować pełny kod QR, musisz powiększyć okno terminala.
Kod QR reprezentuje tajny klucz, który jest znany tylko Twojemu serwerowi SSH i Twojej aplikacji mobilnej TOTP. Po zeskanowaniu kodu QR na telefonie pojawi się sześciocyfrowe hasło jednorazowe. Domyślnie zmienia się co 30 sekund. To hasło jednorazowe musisz wprowadzić w terminalu.
Teraz w oknie terminala powinieneś zobaczyć awaryjny kod zdrapkowy. Ważne jest, aby zapisać te informacje w bezpiecznym miejscu na wypadek zgubienia telefonu.
Następnie możesz wpisać y, aby odpowiedzieć na wszystkie pozostałe pytania. Spowoduje to zaktualizowanie pliku konfiguracyjnego Google Authenticator, wyłączenie wielokrotnego użycia tego samego tokena uwierzytelniającego, wydłużenie okna czasowego i włączenie ograniczania szybkości w celu ochrony przed próbami logowania metodą brute-force.
Krok 2: Skonfiguruj demona SSH do korzystania z Google Authenticator
- Uwierzytelnianie hasłem za pomocą 2FA
- Uwierzytelnianie kluczem publicznym za pomocą 2FA
Uwierzytelnianie hasłem za pomocą 2FA
Jeśli nie używasz klucza SSH, postępuj zgodnie z poniższymi instrukcjami.
Otwórz plik konfiguracyjny serwera SSH.
sudo nano /etc/ssh/sshd_configZnajdź w pliku następujące dwa parametry i upewnij się, że oba mają wartość tak.
UsePAM yes
ChallengeResponseAuthentication yesPAM oznacza podłączany moduł uwierzytelniający. Zapewnia łatwy sposób podłączenia innej metody uwierzytelniania do systemu Linux. Aby włączyć Google Authenticator z uwierzytelnianiem SSH, PAM i Challenge-Response, musi być włączone uwierzytelnianie.
Jeśli chcesz zezwolić użytkownikowi root na korzystanie z 2FA, znajdź parametr PermitRootLogin i ustaw jego wartość na yes. Nie może to być PermitRootLogin no ani PermitRootLogin zakazujące-hasło.
PermitRootLogin yesZapisz i zamknij plik. Następnie edytuj plik reguł PAM dla demona SSH.
sudo nano /etc/pam.d/sshdAby włączyć 2FA w SSH, dodaj następujące dwie linie.
#two-factor authentication via Google Authenticator
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
Zapisz i zamknij plik. Następnie zrestartuj demona SSH, aby zmiana zaczęła obowiązywać.
sudo systemctl restart sshdOd teraz demon SSH będzie wymagał podania hasła użytkownika oraz kodu weryfikacyjnego (hasło jednorazowe wygenerowane przez Google Authenticator). Poniższy zrzut ekranu przedstawia sesję logowania SSH z komputera Ubuntu na serwer CentOS Linux.
Uwierzytelnianie kluczem publicznym za pomocą 2FA
Jeśli używasz klucza SSH do logowania się do serwera SSH, postępuj zgodnie z poniższymi instrukcjami.
Otwórz plik konfiguracyjny serwera SSH.
sudo nano /etc/ssh/sshd_configZnajdź w pliku następujące dwa parametry i upewnij się, że oba mają wartość tak.
UsePAM yes
ChallengeResponseAuthentication yesPAM oznacza podłączany moduł uwierzytelniający. Zapewnia łatwy sposób podłączenia innej metody uwierzytelniania do systemu Linux. Aby włączyć Google Authenticator z uwierzytelnianiem SSH, PAM i Challenge-Response, musi być włączone uwierzytelnianie.
Jeśli chcesz zezwolić użytkownikowi root na korzystanie z 2FA, znajdź parametr PermitRootLogin i ustaw jego wartość na yes. Nie może to być PermitRootLogin no ani PermitRootLogin zakazujące-hasło.
PermitRootLogin yesNastępnie dodaj następujący wiersz na końcu tego pliku. Informuje to demona SSH, że użytkownik musi przejść zarówno uwierzytelnienie za pomocą klucza publicznego, jak i uwierzytelnienie typu wyzwanie-odpowiedź.
AuthenticationMethods publickey,keyboard-interactiveZapisz i zamknij plik. Następnie edytuj plik reguł PAM dla demona SSH.
sudo nano /etc/pam.d/sshdAby włączyć 2FA w SSH, dodaj następujące dwie linie.
#two-factor authentication via Google Authenticator
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticatorSkomentuj także następujący wiersz (Dodaj # na początku), aby wyłączyć uwierzytelnianie hasłem.
auth substack password-authZapisz i zamknij plik. Następnie zrestartuj demona SSH, aby zmiana zaczęła obowiązywać.
sudo systemctl restart sshdOd tego momentu do logowania będziesz musiał używać klucza SSH i kodu weryfikacyjnego Google Authenticator.
Notatki
- Każdy użytkownik Twojego serwera CentOS/RHEL musi uruchomić polecenie
google-authenticator -s ~/.ssh/google_authenticatori zeskanować kod QR, aby móc skorzystać z uwierzytelniania dwuskładnikowego. Jeśli użytkownik nie skonfigurował i spróbuje się zalogować, wyświetli się komunikat o błędzie „Odmowa uprawnień (interaktywna klawiatura)”. - Awaryjny kod zdrapkowy to Twój kod zapasowy. Jeśli zgubisz telefon, zamiast jednorazowego hasła możesz wpisać jeden z pięciu awaryjnych kodów zdrapek, aby zakończyć weryfikację dwuetapową. Kody te są przeznaczone wyłącznie do jednorazowego użytku.
- Jeśli chcesz zmienić tajny klucz, po prostu zaloguj się na swój serwer i ponownie uruchom polecenie
google-authenticator -s ~/.ssh/google_authenticator, aby zaktualizować~/.ssh/google_authenticatorplik.
Jak wyłączyć uwierzytelnianie dwuskładnikowe SSH na serwerze CentOS/RHEL
Edytuj plik reguł PAM dla demona SSH.
sudo nano /etc/pam.d/sshdSkomentuj następujący wiersz.
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticatorZapisz i zamknij plik. Jeśli dodałeś następujący wiersz w pliku /etc/ssh/sshd_config,
AuthenticationMethods publickey,keyboard-interactiveUsuń metodę uwierzytelniania keyboard-interactive.
AuthenticationMethods publickeyZapisz i zamknij plik. Następnie zrestartuj demona SSH.
sudo systemctl restart sshdPodsumowanie
Mam nadzieję, że ten samouczek pomógł Ci skonfigurować uwierzytelnianie dwuskładnikowe SSH na serwerze CentOS/RHEL. Jak zawsze, jeśli uznałeś ten post za przydatny, zapisz się do naszego bezpłatnego biuletynu, aby uzyskać więcej przydatnych samouczków. Uważaj 🙂







