Instalace a konfigurace Cosign

Úvod

Cosign je web single sign-on (SSO) systém vyvíjen na Univerzitě v Michiganu.

Cosign obsahuje následující součástí:

  • daemon - centrální autorita, která udržuje informaci o vytvořených session
  • web login - web aplikace poskytující autentizaci, nejčastěji formou přihlašovacího formuláře
  • filtr - implemenetován jako modul do web serveru, který zajišťuje, že k určitým zdrojům přistupují pouze autentizovaní uživatelé

Web login aplikace a jednotlivé filtry, které řídí přístup k zdrojům (aplikacím, datům, …) komunikují s daemonem prostřednictvím zabezpečeného SSL kanálu a proto každá součást potřebuje certifikát podepsaný platnou certifikační autoritou. Self-signed certifikáty nejsou podporovány. Daemon a web login aplikace můžou být provozovány na stejném serveru a tudíž můžou používat stejný certifikát. Je ovšem doporučitelné, aby z bezpečnostních důvodů na tom samém serveru, kde jsou umísteny daemon a web login, neběžel žádný cosign filtr.

Technické detaily o projektu lze získat na specializovaných wiki stránkách.

Požadavky

Cílová platforma je především Linux a jemu podobné unixové systémy. Co se týče filtrů, nabízí cosign více možností - filtr pro Windows IIS nebo také filtr v Javě. Zároveň, lze na základě specifikace implementovat vlastní filtr.

Následující návod platí pro Debian etch, s Apache 2.2.x a OpenSSL 0.9.8, ale pravděpodobně bude fungovat i na jiných systémech. Daemon a web login jsou v návodě instalovány na jednom serveru, ale nemusí tomu tak být.

Daemon a web login

Kompilace a instalace

Instalaci provedeme v adresáři /opt:

# mkdir -p /opt/cosign/src

Stáhneme a rozbalíme poslední verzi Cosign:

# cd /opt/cosign/src
# wget http://www.umich.edu/~umweb/downloads/cosign-2.0.2a.tar.gz
# tar xvfz cosign-2.0.2a.tar.gz

Spustíme konfigurační skript (v případě potřeby nastavte parametry tak, aby nejlépe odpovídaly vašemu systému):

# ./configure --prefix=/opt/cosign --enable-apache2=/usr/bin/apxs2 --with-cosignconf=/opt/cosign/etc/cosign.conf \
--with-filterdb=/opt/cosign/filter --with-cosigndb=/opt/cosign/daemon --with-cosigncadir=/etc/ssl/certs \
--with-cosigncert=/etc/ssl/certs --with-cosignkey=/etc/ssl/private --mandir=/usr/share/man

Spustíme kompilaci:

# make everything

Pokud kompilujete na 64-bitové architektuře, přečtěte si poznámku.

Po úspěšném dokončení kompilace provedeme instalaci:

# make install-all

Vytvoříme adresář, do kterého daemon zapisuje svoje data:

# mkdir /opt/cosign/daemon
# chown cosign.cosign /opt/cosign/daemon

Konfigurace

Modul

Po úspěšném provedení kompilace a instalace je potřeba aktivovat cosign modul. Vytvoříme soubor /etc/apache2/mods-available/cosign.load s obsahem:

LoadModule cosign_module /usr/lib/apache2/modules/mod_cosign.so

A modul aktivujeme:

# a2enmod cosign

Apache

Konfiguraci Cosign v rámci Apache umístíme na vhodném místě, což je většinou specializovaný virtuál, např. login.domena.cz:

  # Nasledujici nastaveni musi byt v nechranene oblasti
  CosignProtected               Off

  # Hostname, na kterem bezi daemon
  CosignHostname                login.domena.cz

  # URL, kde se nachazi web login
  CosignRedirect                https://login.domena.cz/

  # Strank, na ktere se provede redirect v pripade chyby
  CosignPostErrorRedirect       https://login.domena.cz/cosign/post_error.html

  # Nazev sluzby a take prislusne cookie (cookie se v tomto pripade bude jmenovat 'cosign-simpleservice')
  CosignService                 simpleservice 

  # Cesty ke klici, certifikatu a adresari s CA certifikaty
  CosignCrypto                  /etc/ssl/private/login.feld.cvut.cz.pem.key /etc/ssl/certs/login.feld.cvut.cz.pem.crt /etc/ssl/certs

  Alias /cosign/ "/opt/cosign/html/"
  ScriptAlias /cosign-bin/ "/opt/cosign/cgi-ssl/"

  Alias /services/ "/opt/cosign/services/" # stranka vyzadujici autentizaci
  <Directory "/opt/cosign/services/">
    CosignProtected On
  </Directory>

  DirectoryIndex        cosign.cgi index.html
  AddHandler            cgi-script      .cgi
  <Directory /opt/cosign/cgi-ssl>
    Options             ExecCGI
  </Directory>

Cosign

cosign.conf

Web login a daemoni cosignd a monsterd využívají společný konfigurační soubor, který by měl být dle konfigurace výše cestu /opt/cosign/etc/cosign.conf. Příklad nastavení:

set     cosigncert              /etc/ssl/certs/login.domena.cz.pem.crt
set     cosignkey               /etc/ssl/private/login.domena.cz.pem.key
set     cosigncadir             /etc/ssl/certs
set     cosignhost              login.domena.cz
set     cosigndb                /opt/cosign/daemon
set     cosignlogouturl         https://login.domena.cz/
set     cosignnettimeout        300

cgi     login.feld.cvut.cz
service idp.feld.cvut.cz        0

factor /opt/cosign/factor/auth.sh   login password

Podrobnosti o konfiguraci najdete v manualových stránkách cosign.conf.

Autentizace

Cosign nabízí možnost externí autentizace. Nastavení autentizace v cosign.conf se provádí pomocí direktivy factor. První parametr uvácí cestu k externímu programu, který provádí autentizaci. Další parametry jsou proměnné odeslané z přihlašovacího formuláře (který lze upravit podle potřeby). Lze uvest až 5 proměnnych. Tyto proměnné se předávájí na standardní vstup externího programu, po jedné na řádce a v pořadí, v jakém jsou uvedeny v konfiguračním souboru.

V případě úspěšné autentizace musí externí program vypsat název faktoru a skončít s návratovou hodnotou 0. V opačném případě musí skončit s hodnotou 1 a může na standardní výstup zobrazit chybové hlášení. Víc informaci najdete v manualových stránkách cosign.conf.

Příklady externích skriptů pro autentizaci:

Startovací skript

Pro pohododlí je dobré spouštět cosignd a monsterd pomocí skriptu v /etc/init.d. Lze v něm nastavit s jakými parametry se budou daemony spouštět. Následující příklady startovacích skriptů nastavují kategorii logování (syslog facility) na local1 (defaultně je to daemon) a tzv. idle timeout (po jaké době nečinnosti je session uživatele označena jako neplatná). Pro více informací ohledně možných parametrů daemonů viz man cosignd a man monster.

Pokud cosignd při startu zahlásí:

cosignd: can't find cosign service

Přidejte do /etc/services řádku:

cosign          6663/tcp
Logování

Standardně loguje Cosign v kategorii (syslog facility) daemon. Pokud, ale chceme zvláštní logy pro Cosign, můžeme pomocí příslušných spouštěcích parametrů nastavit syslog facilty pro cosignd a mosnterd (viz startovací skript) například local1 a upravit konfiguraci syslogd (/etc/syslog.conf):

local1.*                        /var/log/cosign/info
local1.err                      /var/log/cosign/error

Nastavení práv pro privátní klíč

Cosign filter

Filtr instalujeme všude tam, kde potřebujeme zavést centrální autentizaci pomoci Cosign infrastruktury. Z bezpečnostních důvodů se nedoporučuje provozovat chráněné aplikace na stejném serveru, na kterém běží daemon nebo web login.

Kompilace a instalace

Kompilace je podobná jako v případě daemona. Liší se spuštění konfiguračního skriptu:

# ./configure --enable-apache2=/usr/bin/apxs2 --prefix=/opt/cosign --with-filterdb=/opt/cosign/filter

Filter zkompilujeme a nainstalujeme:

# make
# make install

Dále vytvoříme adresář, kde bude filtr ukládat svoje data:

# mkdir /opt/cosign/filter
# chown www-data.www-data /opt/cosign/filter

Konfigurace

Musíme zajistit, že Apache při startu natáhne cosign modul. Co souboru /etc/apache2/mods-available/cosign.load zapíšeme:

LoadModule cosign_module /usr/lib/apache2/modules/mod_cosign.so

A modul aktivujeme:

# a2enmod cosign

Pro adresář, který chceme chánit autentizací nastavíme na příslušném místě v konfiguraci Apache:

  Alias /protected /var/www/site/protected
  <Location /protected>
    
    CosignProtected               On

    # Hostname, na kterem bezi daemon
    CosignHostname                login.domena.cz

    # URL, kde se nachazi web login
    CosignRedirect                https://login.domena.cz/

    # Strank, na ktere se provede redirect v pripade chyby
    CosignPostErrorRedirect       https://login.domena.cz/cosign/post_error.html

    # Nazev sluzby a take prislusne cookie (cookie se v tomto pripade bude jmenovat 'cosign-protected')
    CosignService                 protected

    # Cesty ke klici, certifikatu a adresari s CA certifikaty
    CosignCrypto                  /etc/ssl/private/server.domena.cz.pem.key /etc/ssl/certs/server.domena.cz.pem.crt /etc/ssl/certs

    AuthType                    Cosign
    Require                     valid-user
  </Location>

Certifikáty a klíče

Integrace s Shibbolethem

cztestfed/howto/sso/cosign/index.txt · Poslední úprava: 2008-05-09 15:20 (upraveno mimo DokuWiki)
CESNET2 powered
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0