SPInstall

Versión 36 (Emilio Penna, Lunes, 11 de Mayo de 2020 14:47:06 -0300)

1 1
h1. Instalación Shibboleth SP
2 1
3 24 Emilio Penna
Actualizado: 2018-02-06
4 1
5 25 Emilio Penna
*Escenario:* En esta guia se describe la instalación de Shibboleth SP en un equipo con Debian 8 y Apache 2.4. En los pasos siguientes se considera que la instalación se realiza en  en el host <mihost-ejemplo.edu.uy>, se debe ajustar el nombre al que corresponda.
6 3 Emilio Penna
7 36 Emilio Penna
*Otros sistemas:*  
8 1
9 36 Emilio Penna
CentOS: ver 
10 36 Emilio Penna
https://www.switch.ch/aai/guides/sp/installation/?os=centos7
11 36 Emilio Penna
https://spaces.at.internet2.edu/pages/viewpage.action?pageId=148570224
12 36 Emilio Penna
13 36 Emilio Penna
Ubuntu 18: ver
14 36 Emilio Penna
https://www.switch.ch/aai/guides/sp/installation/?os=ubuntu
15 36 Emilio Penna
16 36 Emilio Penna
17 4 Emilio Penna
Referencias:
18 4 Emilio Penna
19 36 Emilio Penna
https://wiki.shibboleth.net/confluence/display/SP3/Home
20 1
https://www.switch.ch/aai/guides/sp/
21 4 Emilio Penna
https://www.switch.ch/aai/guides/sp/installation/
22 4 Emilio Penna
23 36 Emilio Penna
https://wiki.shibboleth.net/confluence/display/SP3/Apache
24 1
25 1
26 1
27 36 Emilio Penna
28 1
h3. 1. Agregar repositorio e instalar Shibboleth SP
29 20 Emilio Penna
30 36 Emilio Penna
La versión de Shibboleth SP disponible en los repositorios de Debian puede ser un poco obsoleta. 
31 36 Emilio Penna
El repositorio de SWITCH (red académica de Suiza) tiene una versión mas actualizada.
32 36 Emilio Penna
(En Debian 10 está disponible el SP  versión 3, pero en versiones anteriores de Debian se recomienda usar el paquete de SWITCH.)
33 1
34 36 Emilio Penna
Instalación usando el repositorio de SWITCH: 
35 36 Emilio Penna
36 20 Emilio Penna
<pre>
37 20 Emilio Penna
apt-get install curl
38 1
curl -k -O http://pkg.switch.ch/switchaai/SWITCHaai-swdistrib.asc
39 20 Emilio Penna
gpg --with-fingerprint  SWITCHaai-swdistrib.asc
40 20 Emilio Penna
# verificar que el fingerprint de la clave del repositorio sea 294E 37D1 5415 6E00 FB96 D7AA 26C3 C469 15B7 6742
41 21 Emilio Penna
apt-key add SWITCHaai-swdistrib.asc
42 1
echo 'deb http://pkg.switch.ch/switchaai/debian jessie main' | tee /etc/apt/sources.list.d/SWITCHaai-swdistrib.list > /dev/null
43 1
apt-get update
44 33 Emilio Penna
apt-get install --install-recommends shibboleth
45 31 Emilio Penna
</pre>
46 35 Emilio Penna
47 31 Emilio Penna
*Notas para debian 9 con sp v3: (20190412)*
48 31 Emilio Penna
49 32 Emilio Penna
De acuerdo al sitio de Switch, se debe habilitar el repositorio debian-backports, para eso se puede agregar en el sources.list:
50 31 Emilio Penna
51 32 Emilio Penna
<pre>
52 31 Emilio Penna
deb http://deb.debian.org/debian stretch-backports main
53 31 Emilio Penna
</pre>
54 31 Emilio Penna
55 31 Emilio Penna
luego:
56 31 Emilio Penna
57 31 Emilio Penna
<pre>
58 31 Emilio Penna
sudo apt update
59 1
sudo apt install -t stretch-backports init-system-helpers libxerces-c3.2
60 33 Emilio Penna
sudo apt install --install-recommends shibboleth
61 33 Emilio Penna
</pre>
62 33 Emilio Penna
63 31 Emilio Penna
64 1
65 1
h3. 2. Habilitar un Virtual Host con HTTPS
66 1
67 1
En forma obligatoria un SP debe ejecutar con HTTPS. Si no se tiene hablitado se puede crear un Virtual Host de la siguiente manera:
68 1
69 1
<pre>
70 1
a2enmod ssl 
71 23 Emilio Penna
cd /etc/apache2/sites-available
72 23 Emilio Penna
cp default-ssl.conf shibsp1.conf
73 23 Emilio Penna
a2ensite shibsp1.conf
74 1
service apache2 reload
75 23 Emilio Penna
</pre>
76 1
77 24 Emilio Penna
Sugerencia: verificar que cargue una pagina con HTTPS en un navegador.
78 1
79 24 Emilio Penna
También se puede ejecutar:
80 24 Emilio Penna
<pre>
81 24 Emilio Penna
apache2ctl configtest
82 24 Emilio Penna
</pre>
83 24 Emilio Penna
La salida deberia ser: Syntax OK
84 24 Emilio Penna
85 24 Emilio Penna
86 1
h3. 3. Verificación de estado
87 1
88 15 Emilio Penna
El SP tiene una página de estado.
89 1
90 24 Emilio Penna
Para verificar el estado se puede ejecutar:
91 1
92 1
<pre>
93 1
curl -k https://127.0.0.1/Shibboleth.sso/Status
94 1
</pre>
95 1
96 1
97 1
Por defecto solo permite el acceso a la pagina de estado desde localhost. Para habilitar el acceso desde otro equipo, se puede agregar la IP desde la que se quiere acceder. Para esto, editar /etc/shibboleth/shibboleth2.xml, y agregar la ip en el elemento Handler. Ejemplo:
98 1
99 1
<pre>
100 1
<code class="xml">
101 1
<Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 164.73.129.60"/>
102 1
</code>
103 1
</pre>
104 1
105 1
106 1
Ante cualquier cambio en la configuración de Shibboleth se debe reiniciar el proceso con los siguientes comando:
107 1
108 1
<pre>
109 1
service shibd stop
110 1
service shibd start
111 1
</pre>
112 1
113 25 Emilio Penna
Luego accediendo a la dirección https://<mihost-ejemplo.edu.uy>/Shibboleth.sso/Status se puede ver una página xml con información del SP.
114 24 Emilio Penna
También puede ser con wget en localhost:  wget https://localhost:443//Shibboleth.sso/Status --no-check-certificate 
115 24 Emilio Penna
116 24 Emilio Penna
117 1
Otros chequeos:
118 1
119 25 Emilio Penna
Acceder a 
120 1
https://<mihost-ejemplo.edu.uy>/Shibboleth.sso/Session
121 1
122 1
Deberia verse una pagina que dice "A valid session was not found"
123 1
124 1
Este mensaje indica que el módulo Shibboleth ha sido cargado correctamente por el webserver.
125 1
126 25 Emilio Penna
127 1
128 25 Emilio Penna
h3. 4. Generar claves
129 36 Emilio Penna
130 36 Emilio Penna
131 36 Emilio Penna
En sp v3 el archivo shibboleth2.xml viene con configuracion para usar dos certificados distintos (signing y encryption), shib-keygen genera uno solo pero se pueden generar dos o usar el mismo para las dos cosas.
132 36 Emilio Penna
133 36 Emilio Penna
Ref: https://tuakiri.ac.nz/confluence/display/Tuakiri/Install+Shibboleth+SP+on+Debian+Based+linux
134 36 Emilio Penna
135 25 Emilio Penna
136 14 Emilio Penna
<pre>
137 25 Emilio Penna
shib-keygen -f -u _shibd -h <mihost-ejemplo.edu.uy> -y 3 -e https://<mihost-ejemplo.edu.uy>/shibboleth -o /etc/shibboleth/
138 1
</pre>
139 1
140 1
h3. 5. Configuracion de entityID
141 1
142 1
en shibboleth2.xml
143 1
144 1
Setear identificador de la entidad: entityID. Ejemplo:
145 1
146 1
<pre><code class="xml">
147 25 Emilio Penna
    <ApplicationDefaults entityID="https://<mihost-ejemplo.edu.uy>/shibboleth"
148 1
                       REMOTE_USER="eppn persistent-id targeted-id">
149 1
</code></pre>
150 1
151 1
Ajustes en elemento Sessions:
152 1
153 1
Poner handlerSSL="true", y agregar propiedades seguras para cookies en cookieProps. Ejemplo:
154 1
155 1
<pre><code class="xml">
156 1
      <Sessions lifetime="28800" timeout="3600" relayState="ss:mem"
157 1
             checkAddress="false" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly">
158 1
</code></pre>
159 1
160 30 Emilio Penna
*CAMBIAR:* cookieProps="https" hace el mismo efecto
161 30 Emilio Penna
162 27 Emilio Penna
Luego se debe reiniciar el proceso de Shibboleth (shibd stop/ shibd start).
163 1
164 1
Para verificar la configuración se puede ejecutar el siguiente comando: 
165 1
166 1
<pre>
167 1
shibd -t.
168 1
</pre>
169 1
170 1
La salida esperada es la siguiente:
171 1
172 1
<pre>
173 1
overall configuration is loadable, check console for non-fatal problems
174 1
</pre>
175 1
176 1
177 8 Pablo Silva
h3. 6. Prueba con TestShib
178 7 Pablo Silva
179 15 Emilio Penna
Si desea verificar la configuración del SP se puede probar con el Proveedor de Identidad público de prueba provisto por TestShib:
180 7 Pablo Silva
181 8 Pablo Silva
https://www.testshib.org/configure.html
182 1
183 9 Pablo Silva
Una vez realizada esta prueba puede continuar con la configuración con el Provedor de Identidad de la Universidad.
184 7 Pablo Silva
185 10 Pablo Silva
h3. 7. Definir y cargar una fuente de metadata
186 1
187 18 Emilio Penna
Obtener metadata del IdP, se adjunta al final la metadata del IdP de test de seciu.
188 1
189 18 Emilio Penna
Guardarla en el directorio metadata de su SP (si no existe crearlo).
190 1
191 18 Emilio Penna
/etc/shibboleth/metadata/metadata-idp-test-udelar.xml
192 1
193 19 Emilio Penna
Registrarla en el SP, para esto, en el archivo shibboleth2.xml, ajustar el path en el elemento <MetadataProvider>:
194 1
195 1
<pre> <code class="xml">
196 18 Emilio Penna
<MetadataProvider type="XML" path="/etc/shibboleth/metadata/metadata-idp-test-udelar.xml" ></MetadataProvider>
197 1
</code> </pre>
198 1
199 1
200 10 Pablo Silva
h3. 8. Configurar Inicio de Sesión
201 1
202 26 Emilio Penna
Se debe configurar elemento SSO dentro del archivo shibboleth2.xml para que use el provedor de identidad de test de Seciu: 
203 1
204 1
<pre> <code class="xml">
205 14 Emilio Penna
<SSO entityID="https://pirapire.seciu.edu.uy/idp/shibboleth"
206 1
</code></pre>
207 1
208 10 Pablo Silva
h3. 9. Configuración del archivo attribute-map.xml
209 1
210 1
Shibboleth SP extrae los atributos del Assertion SAML que le envia el IdP, y almacena los valores en variables del servidor web. El mapeo entre los atributos recibidos y las variables se define en el archivo attribute-map.xml.
211 1
212 1
Se puede utilizar el que viene por defecto, luego se van descomentando o agregando los atributos que se utilicen.
213 1
Al final se adjunta un ejemplo de archivo attribute-map.xml
214 1
215 1
216 10 Pablo Silva
h3. 10. Enviar Metadata de su SP para registro
217 1
218 17 Emilio Penna
Debe obtener la metadata de su SP y contactarse con Seciu para su registro. 
219 1
220 17 Emilio Penna
La información sobre como obtener y ajustar la metadata puede verla en esta pagina: [[SP-Metadata]]
221 1
222 1
223 11 Pablo Silva
h3. 11. Configuracion de Apache para proteger un recurso
224 1
225 1
En Apache, se recomienda setear correctamente el ServerName y también setear "UseCanonicalName On".
226 15 Emilio Penna
También se recomienda fuertemente utilizar el "worker" MPM.
227 1
228 1
Referencia: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig
229 1
230 15 Emilio Penna
Al instalar el modulo, se agrega mods-available/shib2.load, donde se carga el módulo.
231 1
232 34 Emilio Penna
*---- shib.conf ESTO NO ES NECESARIO AGREGARLO, YA  SE AGREGA AL INSTALAR EL MODULO (20190425)*
233 34 Emilio Penna
El archivo conf-enabled/shib.conf deberia tener estas directivas:
234 1
235 1
<pre> <code class="xml">
236 1
237 1
# Ensures handler will be accessible.
238 1
#
239 1
<Location /Shibboleth.sso>
240 1
  Satisfy Any
241 1
  Allow from all
242 1
</Location>
243 1
244 1
#
245 1
# Used for example style sheet in error templates.
246 1
#
247 1
<IfModule mod_alias.c>
248 1
  <Location /shibboleth-sp>
249 1
    Satisfy Any
250 1
    Allow from all
251 1
  </Location>
252 1
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
253 1
</IfModule>
254 1
255 1
</code> </pre> 
256 28 Emilio Penna
257 34 Emilio Penna
*----FIN shib.conf*
258 28 Emilio Penna
259 1
260 1
Para agregar un recurso (Location) protegido, agregar en shib.conf o en el virtual host:
261 1
262 1
<pre> <code class="xml">
263 1
264 1
# You MUST enable AuthType shibboleth for the module to process
265 1
# any requests, and there MUST be a require command as well.
266 1
267 1
<Location /secure>
268 1
  AuthType shibboleth
269 1
  ShibRequestSetting requireSession 1
270 1
  require shib-session
271 1
</Location>
272 1
</code> </pre>
273 1
274 1
275 1
Ejemplos de reglas para control de acceso:
276 1
https://www.switch.ch/aai/guides/sp/access-rules/
277 1
278 15 Emilio Penna
Por último se debe habilitar la configuración con el siguiente comando:
279 1
280 1
<pre>
281 1
a2enconf shib
282 1
</pre>