Het Inschakelen van Twee-Factor voor SSH Logins

0
35
Shutterstock/TATSIANAMA

Als je echt wilt vergrendelen van uw cloud server kunt u de twee-factor authenticatie voor SSH op dezelfde manier als u zou willen toevoegen aan uw Gmail-account, waardoor niemand van het verkrijgen van toegang als ze hebben gestolen van uw privé SSH sleutel.

Is Dit Echt Nodig?

Vergeleken met het hebben van twee-factor op een e-mail of web-based account, twee-factor op SSH is niet zo handig. Voor iets als e-mail, het moment van de storing is meestal wachtwoord te resetten regelingen, gemakkelijk crackable wachtwoorden, of data-inbreuken. Echt, alles wat met slechte wachtwoorden of slecht beheer van de wachtwoorden.

Voor SSH, dit is niet veel van een probleem. SSH maakt gebruik van zeer goede encryptie voor de publieke en private sleutels gebruikt om verbindingen te maken. Als je SSH server is vergrendeld en verbiedt wachtwoord toegang, niemand is in tenzij ze het fysieke apparaat dat de sleutel is gelegen op, en het is niet erg waarschijnlijk dat iemand bruteforce je SSH sleutel op elk moment van deze eeuw. Dus, in zekere zin, het is bijna alsof je het al hebt twee factor, omdat uw sleutel blijft op uw laptop.

Maar in enkele marginale gevallen, twee-factor kan een goede keuze zijn. Als een aantal waanzinnige hacker besluit om te stelen uw laptop met de bedoeling van de dieven uw SSH-keys samen met het (en niet alleen verkopen op Craigslist wanneer ze niet kunnen kraken uw wachtwoord van het apparaat), met twee-factor zet je een stap vooruit.

Een real-world probleem is echter dat met SSH-agent forwarding; Met agent forwarding ingeschakeld, de toets aanvragen te ondertekenen in extra servers doorgestuurd terug naar uw apparaat. Dit kunt u SSH naar een publieke server, en—van die publieke server—SSH weer in een andere private server op hetzelfde netwerk, waardoor je toegang hebt ook hoe een VPN zou werken.

Het probleem is echter dat als de openbare server in gevaar is gebracht, als u agent forwarding ingeschakeld is, moet de aanvaller in staat om op te treden als u terwijl u verbonden bent met het publieke server. Dit is een mogelijke escalatie van bevoegdheden, afhankelijk van hoe u hebt ingesteld in uw netwerk. Twee-factor SSH zou het oplossen van dit probleem.

Nogmaals, dit is een zeer edge case oplossing, en zal waarschijnlijk leiden tot meer problemen dan dat het voorkomt, maar als je serieus bent over het vergrendelen van alles, we zullen je laten zien hoe.

Het Inschakelen van Twee-Factor voor SSH

Te hanteren factor twee verzoeken we je Google gebruiken, Pluggable Authenticatie Modules (PAM), die werkt met Authy en Google Authenticator. Installeren van uw distro ‘ s package manager:

sudo apt-get install libpam-google authenticator

Voer deze initialisatie commando:

google authenticator

Antwoord ja op de eerste vraag over het hebben van authenticatie tokens worden op basis van tijd. Dit is meer veilig. Uw toestel wordt dan overspoeld worden met een gigantische QR-code, en u zult de kans hebben om uit te zoomen een beetje.

Open uw authenticator-app en scan de code (niet de screenshot). Je app moet synchroniseren, en beginnen met het uitvoeren van de zes-cijferige codes die veranderen bij elke 30 seconden.

U zult ook willen om een notitie te maken van alle van de extra uitvoer, met inbegrip van de geheime sleutel en nood-scratch-codes. Deze worden gebruikt om toegang te krijgen opnieuw naar de server als u bent geblokkeerd voor welke reden dan ook, maar je moet gewaarschuwd worden dat eventuele problemen in verband met een verkeerde instelling kan nog steeds laat u vergrendeld permanent. We draaien op twee factor optioneel voor het testen, alvorens het verplicht.

Voor de volgende vragen de volgende antwoorden:

  • Antwoord ja om het updaten van uw configuratie, niets anders zal werken.
  • Ja beantwoorden wanneer meerdere toepassingen van elke loper. Ze moeten vervallen zodra ze worden gebruikt.
  • Antwoord niet op de verlenging van de geldige code venster, als er niet echt een punt aan.
  • Antwoord ja om toe te staan rate limiting, die zal blokkeren aanvallers na drie pogingen. De laatste drie codes zijn geldig voor een minuut en een half, dus u hoeft zich geen zorgen te maken over het vergrendelen van jezelf uit door zijn te traag.

Alle van uw configuratie wordt opgeslagen in ~/.google authenticator. U kunt een kopie van dit bestand op een extra server toe te passen in de configuratie niet opnieuw de initialisatie van het hulpprogramma nogmaals, of je moet twee aparte apparaten.

Configureren van SSH om te Werken met Google PAM

Open het PAM configuratiebestand in /etc/pam.d/sshd in je favoriete tekst editor en voeg de volgende regel toe aan de onderkant:

auth required pam_google_authenticator.dus nullok

De nullok-richtlijn betekent dat dit tijdelijk is, dus twee-factor zal zijn optioneel, tot u dit wijzigt. Laat het op deze manier voor het testen. U zult ook willen om de lijn met @bevatten common-auth, en een reactie op deze uit met een #:

# Standaard Un*x-verificatie.
#@zijn common-auth

Dit blijkt uit een op wachtwoorden gebaseerd authenticatie, wat je niet wilt.

Open SSH-instellingen in /etc/ssh/sshd_config. Vind de optie Uitschakelt, en zet hem aan:

# Wijzigen op ja in te schakelen vraag-en-antwoord wachtwoorden (pas op problemen met
# wat PAM modules en threads)
Uitschakelt ja

Dit kunnen 2FA, echter, SSH sleutels overschrijven 2FA standaard, dus je zult moeten vaststellen dat door het toevoegen van de volgende regel aan het einde van sshd_config:

AuthenticationMethods publickey,toetsenbord-interactieve

Dit vereist een openbare sleutel en “keyboard-interactieve,” dat is de prompt die je vraagt om de twee-factor-code.

SSH is nu geconfigureerd, zodat u opnieuw kunt opstarten sshd te zetten op deze nieuwe instellingen:

sudo systemctl start sshd.service

Dit zal niet sluit je de verbinding open, dus u moet doen verbinding testen in een aparte terminal tabblad. Een nieuw tabblad openen, en probeert om verbinding te maken met uw server. Ziet u een vraag voor een verificatie code. Voer in één van uw telefoon, en als alles gekoppeld is goed, het zou moeten werken. Als het niet, je moet nog steeds in staat om toegang te krijgen tot het account door het verlaten van het veld leeg.

Als alles goed werkt, en je hebt dubbel gecontroleerd dat er geen problemen met het aanmelden, kunt u de “nullok” richtlijn in /etc/pam.d/sshd te maken 2FA verplicht.

Als u geen toegang kunt u nog steeds inloggen met de nood-codes die u bij u hebt geconfigureerd PAM en de geheime sleutel moet u toestaan om het koppelen van een TOTP app moet de jouwe worden ontkoppeld voor welke reden dan ook.

Voeg Toegang voor Service Accounts

Als u een service-account die toegang nodig heeft tot uw server (bijvoorbeeld, rsync), moet u 2FA voor dat account. Dit is vrij eenvoudig te doen; ten eerste, we willen een nieuwe groep toe te voegen service accounts:

sudo service groupadd

Voeg vervolgens de gebruiker die groep:

sudo adduser <username>
sudo usermod-a -G-service <gebruikersnaam>

Open het PAM configuratie in /etc/pam.d/sshd, en voeg de volgende regel toe:

auth [succes=gedaan, is de standaardwaarde=ignore] pam_succeed_if.dus de gebruiker ingroup service

Merk op dat dit niet toegang tot uw server, zonder de 2FA, maar als de gebruiker is geen root het is misschien niet een grote deal.