LINOTP

ZweiFaktorAuthentifizierung

SSH-Client mit libpam-linotp authentifizieren

(https://linotp.org/doc/latest/part-installation/server-installation/deb_install.html)

Rechner sollte schon gegen AD per winbind authentifizieren.
Benutzer sollte sich schon per ssh anmelden können.
OTP-Benutzer und SSH-Benutzer müssen zumindest gleichen Namen haben.
zur Sicherheit eine parallele Konsole öffnen, falls was mit PAM schiefgeht!
Repo für Jessie (obwohl stretch installiert) konfigurieren:

echo "deb http://linotp.org/apt/debian jessie linotp">>/etc/apt/sources.list.d/linotp.list

Apt-Key installieren (braucht internet,proxyeinstellungen?):

gpg --keyserver keys.gnupg.net --recv-keys 913DFF12F86258E5

evtl. Key manuell downloaden(https://keys.gnupg.net/),suchen nach 0x913dff12f86258e5
und in eine Datei z.B. LinOTP.key schreiben; dann importieren:

cat LinOTP.key | apt-key add -

Repos updaten:

apt-get update

Pam-Modul (gibts nur für jessie, funktioniet aber auch mit stretch) installieren:

apt-get install libpam-linotp

Link in richtiges PAM-Verzeichnis machen:

 ln -s  /usr/lib/x86_64-linux-gnu/security/pam_linotp.so /lib/x86_64-linux-gnu/security/

Datei /etc/pam.d/common-linotp erstellen:

echo "auth [success=1 default=ignore]  pam_linotp.so url=https://myOtpsrv.dom.ain/validate/simplecheck debug" >>/etc/pam.d/common-linotp
echo "auth    requisite                       pam_deny.so">>/etc/pam.d/common-linotp
echo "auth    required                        pam_permit.so">>/etc/pam.d/common-linotp

Datei /etc/pam.d/sshd editieren:

# Standard Un*x authentication.
@include common-linotp
#@include common-auth <-- dies auskommentieren wenn nur otp gewünscht.

Datei /etc/ssh/sshd_config editieren:

ChallengeResponseAuthentication yes

SSH-Dienst neustarten:

/etc/init.d/sshd restart

Dann Anmeldung testen …

Apache gegen linotp authentifizieren

benötigte Pakete installieren:

apt-get install configure libtool automake build-essential libcrypto libssl-dev libcurl-dev pwgen
wget https://github.com/lsexperts/mod_authn_linotp/zipball/master -O mod_authn_linotp.zip
unzip mod_authn_linotp.zip
cd LinOTP-mod_authn_linotp-5879a22/

Jetzt das Modul bauen:

libtoolize
aclocal
automake --add-missing
autoconf
./configure
make
make install

eventuell noch die config ins apache erstellen:

echo "LoadModule authn_linotp_module /usr/lib/apache2/modules/mod_authn_linotp.so" >>/usr/lib/apache2/modules/mod_authn_linotp.so

Das Apachemodul einschalten:

a2enmod authn_linotp

Hash für otp erzeugen und in die config als LinOTPCookiesecret eintragen:

pwgen 24 1

Die Apachesite für OTP konfigurieren z.B. als Reverseproxy:

...
SSLProxyEngine on
  <Location />
      AllowOverride All
      AuthType basic
      AuthName "protected with LinOTP"
      AuthBasicProvider LinOTP
      Require valid-user
      LinOTPSSLCertVerify Off
      LinOTPSSLHostVerify Off
      LinOTPLogPassword On
      LinOTPValidateUrl https://myOtpsrv.dom.ain/validate/simplecheck
      LinOTPCookieSecret Aijaish4xooGhaey4kaine2j
      ProxyPass https://mysrv.dom.ain/
      ProxyPassReverse https://mysrv.dom.ain/
  </location>
...

dann apache neustarten:

/etc/init.d/apache2 restart