Podwójne uwierzytelnianie za darmo

Uwierzytelnianie oparte na przynajmniej dwóch różnych czynnikach rzadko kiedy stosowane jest w mniejszych firmach głównie ze względu na wysoką cenę takich rozwiązań. Tym czasem, przy odrobinie trudu możemy, korzystając z uprzejmości firmy WiKID Systems, postawić zupełnie darmową, open-source'ową odmianę takiego systemu.

Dzięki systemowi WiKID Community Edition zyskujemy możliwość uruchomienia silnego uwierzytelniania dla dostępu chociażby po SSH czy VPN-ie. Wersja Community Edition, którą postaramy się szybko uruchomić wymaga (w przeciwieństwie do wersji komercyjnej) podłubania w Linuksie i zainstalowania/skonfigurowania kilku komponentów. Jednak efekt w dużej mierze rekompensuje wszelkie trudy.

Instalację przeprowadzimy w systemie CentOS (w teście wykorzystana została wersja 5.1). Wybór odpowiednich komponentów to chyba najbardziej podchwytliwa część instalacji. WiKID wydaje się mieć problemy ze współpracą np. z pewnymi wersjami Postgresa. Instalacja na CentOSie w wersji 4.3 Server kończyła się błędami, które można było usunąć dopiero po dłuższym debuggingu i modyfikacji skryptów instalacyjnych. Naszym celem było jednak znalezienie takiego systemu (z odpowiednimi bibliotekami), który nie wymagałby aż takich wysiłków.

Na początek podsumujmy, jakich komponentów będziemy potrzebowali do uruchomienia naszego serwera uwierzytelniania:

1. Pakiet Java Development Toolkit 5.0

2. Serwer baz danych Postgres

3. Biblioteka Compact-libstdc++-296

4. Narzędzia NTP oraz System-config-date

5. Sam system WiKID w wersji Community

6. Narzędzia WiKID (WiKID Utilities)

7. Oprogramowanie klienckie

Java JDK

Pakiet ten należy pobrać ze strony SUNa. W zupełności wystarczy ta paczka:

w wersji "Linux RPM in self extracting file". Po ściągnięciu należy dodać jej atrybut wykonywalności:

# chmod +x jdk-1_5_0_15-linux-i586-rpm.bin

a następnie zainstalować:

# ./ jdk-1_5_0_15-linux-i586-rpm.bin

W kolejnym kroku trzeba stworzyć link symboliczny do katalogu, w którym został zainstalowany pakiet JDK:

ln -s /usr/java/jdk1.5.0_15/ /opt/java

Na wszelki wypadek sprawdźmy, czy instalator umieścił Javę w zmiennych systemowych:

# env

Jeżeli odkryjemy brak wpisu "JAVA_HOME" musimy go tam ręcznie umieścić:

# export JAVA_HOME=/opt/java

Serwer PostgreSQL

Drugi element, a właściwie cały zestaw komponentów związanych z Postgresem, możemy zainstalować bezpośrednio z poziomu serwera CentOS korzystając z wbudowanego agenta aktualizacji "Yum":

# yum install postgresql postgresql-libs postgresql-jdbc postgresql-server \ postgresql-pl

Podczas testów zainstalowany został serwer w wersji 8.1.11 (wersję możemy sprawdzić wydając polecenie postgres -version). Nie wymagał on wprowadzania jakichkolwiek zmian w skryptach WiKIDa. Z wcześniejszymi wersjami, jak już pisaliśmy, bywało różnie.

Compat-libstdc++-296

W dalszej kolejności pora na instalację paczki kompatybilności:

# yum install compat-libstdc++-296

NTP i Perl-libwww

Następnie, zgodnie z zaleceniami producenta musimy doinstalować narzędzia do "zarządzania" czasem oraz bibliotekę perl-libwww, która zapewnia interfejs programowania dla aplikacji WWW. Narzędzia czasowe są konieczne ponieważ poprawne funkcjonowanie usług opartych na mechanizmach tzw. time based OTP zależy od zgrania czasowego.

# yum install ntp system-config-date perl-libwww-perl

WiKID

No i wreszcie sam serwer WiKID. Należy pobrać dwie paczki instalacyjne - serwer WiKID i zestaw narzędzi:

1. Narzędzia WiKID:

Obecna wersja:

Do pobrania stąd.

2. Serwer WiKID:

Obecna wersja:

Do pobrania stąd.

Instalacja i pierwsze kroki:

Zainstalować będziemy musieli najpierw narzędzia, a potem paczkę właściwego serwera.

# rpm -ivh wikid-utilities-3.0.4-1.i386.rpm

# rpm -ivh wikid-server-community-3.0.1.b1181-1.noarch.rpm

Jeżeli o niczym nie zapomnieliśmy i wszystko poszło zgodnie z planem, to obydwie paczki powinny zainstalować się bez żadnych problemów. WiKID instaluje się w katalogu /opt/WiKID Pozostaje jeszcze skonfigurowanie WiKIDa.

# /opt/WiKID/sbin/wikidserver_config.sh

Teraz najlepiej zrestartować system, a następnie dokończyć konfigurację:

# /opt/WiKID/bin/wikidctl setup

Po wywołaniu tego polecenia będziemy musieli skonfigurować ustawienia sieciowe:

Podwójne uwierzytelnianie za darmo

Teraz możemy uruchomić serwer WiKID.

# /opt/WiKID/bin/wikidctl start

Konfiguracja

Najpierw musimy zalogować się w serwisiehttp://[adres IP serwera lub nazwa]/WiKIDAdmin

Logujemy się jako WiKIDAdmin z hasłem 2Factor

W pierwszym kroku musimy poprosić o certyfikat z pośredniczącego urzędu certyfikacji prowadzonego przez WiKIDa. Robimy to wypełniając odpowiednie pola w zakładce Configuration/Create an Intermediate CA.

Certyfikat ten będzie potrzebny podczas nawiązywania komunikacji z agentami.

Podwójne uwierzytelnianie za darmo

Koniecznie podajmy prawidłowy adres mailowy oraz zapamiętajmy hasło wprowadzone w polu "passphrase". Bez niego nie będziemy mogli uruchomić serwera.

Wygenerowany w ten sposób CSR (Certificate Signing Request) certyfikat wysyłamy do producenta WiKIDa.

Na podany w CSRze adres mailowy powinien niebawem przyjść certyfikat. Należy wkleić go w zakładce Configuration/Install the Intermediate CA oraz wpisać hasło, które ustawiliśmy na etapie generowania CSRa. Wreszcie możemy wygenerować certyfikat dla naszego serwera - w zakładce Configuration/Create a LocalHost Certificate.

Teraz musimy skonfigurować domenę (w ramach WiKIDa), do której po zainstalowaniu agentów będziemy się uwierzytelniać (zakładka Domains).

Podwójne uwierzytelnianie za darmo

Kolej na instalację agenta, żeby zweryfikować czy nasz nowy serwer działa. Najprościej będzie posłużyć się wersją dla Windowsa. Można ją pobrać stąd.

Jest to agent Javy w wersji instalacyjnej. Dostępne są również wersje w postaci pojedynczego pliku JAR, jak również "combo" - środowisko Java 1.6 + agent. Po zainstalowaniu zostaniemy poprowadzeni krok po kroku. Najpierw musimy ustawić nowe hasło, następnie skonfigurować połączenie z domeną WiKID (Menu Działania -> Utwórz nową domenę), wpisać kod serwera (czyli jego dwunastoznakowy adres IP - wartość z pola "server code" kiedy konfigurowaliśmy domenę). Dalej wprowadzamy własny kod PIN (minimum 6 cyfr) i łączymy się z serwerem oraz otrzymujemy kod rejestracji i sześciocyfrowe hasło jednorazowe OTP (One Time Password) - ważne domyślnie przez 60 sekund.

Nasza rejestracja została przesłana do serwera. Możemy kolejno przypisać temu kodowi nazwę użytkownika. Wracamy więc do interfejsu konfiguracyjnego serwera WiKID - zakładka Users. Klikamy na "Manually Validate a User" i przypisujemy widocznemu tam identyfikatorowi nazwę użytkownika.

Na koniec musimy wskazać serwerowi klientów, z którymi będzie "rozmawiał". Takim klientem może być np. serwer SSH, server webowy, brama SSL VPN itp. Klientów dodaje się w zakładce Network Clients. Każdy z nich (z wyjątkiem serwer Radius) potrzebuje osobnego certyfikatu. Podczas procesu dodawania klienta uzyskujemy możliwość wygenerowana takiego certyfikatu.

No i mamy serwer uwierzytelniania. A możliwości integracji z innymi usługami jest naprawdę wiele. W następnym odcinku przedstawimy kilka przykładów.


TOP 200