Nov

17

Posted by : Florian Löffler | On : 17.11.2009

simplesamlphp-sLetztens musste ich SimpleSAMLphp als SP/IdP für mein lokales SSO Entwicklungssystem aufsetzen. Allerdings wollte der SSO Vorgang nicht recht funktionieren.
Nach einigem Stochern in den Logs bin ich auf folgendes gestoßen:

flo@acer ~ $ tail -f /var/log/apache2/error.log
...
[Sun Nov 15 15:41:52 2009] [error] [client 127.0.0.1] ALERT - configured GET variable value length limit exceeded - dropped variable 'SAMLRequest' (attacker '127.0.0.1', file '/var/www/simplesaml/saml2/idp/SSOService.php'), referer: http://sp-ssphp.localhost/simplesaml/saml2/sp/idpdisco.php?entityID=http%3A%2F%2Fsp-ssphp.localhost%2Fsimplesaml%2Fsaml2%2Fsp%2Fmetadata.php&return=http%3A%2F%2Fsp-ssphp.localhost%2Fsimplesaml%2Fsaml2%2Fsp%2FinitSSO.php%3FRelayState%3Dhttp%253A%252F%252Fsp-ssphp.localhost%252Fsimplesaml%252Fexample-simple%252Fsaml2-example.php&returnIDParam=idpentityid

Die Logmeldung weißt auf einen Verstoß gegen die Suhosin Richtlinen für die maximale Parameterelänge hin. Da die SAML2 Nachricht “vorneherum” via GET Variable übertragen wird ergibt sich ein recht ansehnliche Parameterlänge, welche von Suhosin als Angriff gewertet und geblockt wird.

Um das Problem zu beheben muss einfach die maximale Parameterlänge in der /etc/php5/conf.d/suhosin.ini erhöht werden. Eine Erhöhung von 512 auf 1024 hat in meinem Fall ausgereicht:

flo@acer ~ $ cat /etc/php5/conf.d/suhosin.ini
...
;suhosin.get.max_value_length = 512
suhosin.get.max_value_length = 1024
...

Viel Spass!

Nachtrag
Folgendes muss auch noch angepasst werden:

flo@acer ~ $ cat /etc/php5/conf.d/suhosin.ini
...
;suhosin.cookie.max_name_length = 64
suhosin.cookie.max_name_length = 128
...

Nov

15

Posted by : Florian Löffler | On : 15.11.2009

Shibboleth-logoAls ich mich unter Karmic daran gemacht habe den Shibboleth2 Service Provider einzurichten war ich zunächst mal positiv überrascht.
Es gibt nämlich tatsächlich ein Ubuntu Package für den aktuellen Shibboleth 2.1, das sich fix und einfach installieren lässt.
Unter Gentoo/Suse musste ich jedesmal von Source kompilieren um an die aktuelle Version zu kommen. Von daher schonmal ein thumbs-up für Ubuntu karmic.
Also gleich ans Werk…

flo@acer ~ $ sudo apt-get install libapache2-mod-shib2

Problem
Nach dem Installieren und Konfigurieren klappte es allerdings nicht so recht mit dem Starten.
Ein Startversuch mittels

flo@acer ~ $ sudo service shibd start

wurde mit folgenden Logeinträgen quittiert

flo@acer ~ $ tail -f /var/log/shibboleth/shibd.log
...
2009-11-15 14:09:58 INFO Shibboleth.Listener : listener service starting
2009-11-15 14:09:58 ERROR Shibboleth.Listener : socket call resulted in error (2): no message
2009-11-15 14:09:58 CRIT Shibboleth.Listener : failed to bind to socket.

Lösung
Eine kurze Google Recherche förderte zutage, dass Shibboleth versucht seinen socket unter /var/run/shibboeth zu erstellen. Allerdings existiert das Verzeichnis nicht, was zu dem genannten Fehler führt. Da /var/run von Zeit zu Zeit automatisch wieder gelöscht wird genügt es nicht das Verzeichnis einfach zu erstellen. Stattdessen kann man das Initscript des Shibboleth Daemons unter /etc/init.d/shibd anpassen, so dass das fehlende Verzeichnis bei jedem Start angelegt wird, sofern es noch nicht existiert.
Und das geht ganz einfach so:

flo@acer ~ $ sudo sed -i '50 i \nif [ ! -e /var/run/shibboleth ]; then\n\tmkdir /var/run/shibboleth\nfi\n' /etc/init.d/shibd

Der obige Code fügt an Zeile 50 des Initscriptes eine entsprechende Abfrage ein und erstellt das fehlende Verzeichnis bei Bedarf.

Quellen

As always: Hope that helps!