Uwierzytelnianie dwuskładnikowe SSH tylko na adres zewnętrzny

11

Mam serwer Ubuntu z prywatnym, wewnętrznym adresem IP i publicznym adresem IP. Chcę skonfigurować uwierzytelnianie dwuskładnikowe dla SSH tylko po stronie publicznej. czy to możliwe? Planowałem używać Google Authenticator, ale jestem również otwarty na alternatywne pomysły.

Brett F.
źródło
Aby uzyskać informacje, zobacz także unix.stackexchange.com/questions/388384/…
FarO

Odpowiedzi:

15

Tak, możesz to zrobić za pomocą pam_access.so. Ten przepis pochodzi z wiki dla Google Authenticator :

Przydatnym przepisem PAM jest umożliwienie pominięcia uwierzytelniania dwuskładnikowego, gdy połączenie pochodzi z niektórych źródeł. Jest to już obsługiwane przez PAM. Na przykład moduł pam_access można wykorzystać do sprawdzenia źródła w lokalnych podsieciach:

# skip one-time password if logging in from the local network
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth       required     pam_google_authenticator.so

W takim przypadku access-local.conf wygląda następująco:

# only allow from local IP range
+ : ALL : 10.0.0.0/24
+ : ALL : LOCAL
- : ALL : ALL

Dlatego próby logowania od 10.0.0.0/24 nie będą wymagały uwierzytelnienia dwuskładnikowego.

Michael Hampton
źródło
1
Właśnie tego szukałem. Nie jestem pewien, dlaczego nie widziałem tego wcześniej. Dzięki!
Brett F.,
4
Michael Hampton Dzięki za przykład, ale to nie działało dla mnie, ponieważ ciągle pojawiał się błąd Odmowa zezwolenia (klawiatura interaktywna). Zrozumiałem to, ponieważ użyłem AuthenticationMethods publickey,keyboard-interactivew sobie /etc/ssh/sshd_config. Zmieniłem więc, aby to naprawić:auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf auth optional pam_google_authenticator.so nullok
Jeremy Laird,
@JeremyLaird te linie są munged .. gdzie są nowe linie?
shadowbq