7. Cosa può compromettere il servizio di SSO?
comportamento
malevolo
errore
umano
indisponibilità
fonte dati
disastro
8. Errore umano
Vanno intraprese tutte le
strategie per minimizzarlo, ma il
rischio non potrà mai essere
azzerato
Occorre dotarsi di strumenti che
consentano di mitigare l'impatto di un
errore umano:
Git come sorgente delle
configurazioni (tracking changes,
version control)
(*) https://www.gocd.org/
Automazione degli update
mediante pipeline (*)
16. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Attivazione account lockout su ldap (1)
• PRO: controllo centralizzato, non aggirabile
• CONTRO:
• elevato rischio di subire DOS o sabotaggi verso utenti mirati
• non efficace su altre fonti dati (Active Directory, DB)
(1) https://linux.die.net/man/5/slapo-ppolicy
Adottare tecniche di IP ban (2)
• PRO: mette al riparo anche rispetto ad altre tipologiedi attacco
• CONTRO:
• elevato rischio di subire DOS
• configurazione non banale
(2) https://phoenixnap.com/kb/apache-mod-evasive
17. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Adozione di un captcha nella pagina di login
• PRO: sempliceda implementare
• CONTRO:
• peggioramento dell'esperienza utente
• alcune soluzioni sono a pagamento
18. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Account lockout Shibboleth (*)
• CARATTERISTICHE:
• Strategia di lockout di default basata sullacoppia username/
indirizzo IP
• Possibilitàdi definire altre politiche custom
• Basato sugli storageServicenativi di Shibboleth IDP (inMemory,
DB, ecc)
(*) https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631611/PasswordAuthnConfiguration#Advanced-Features
19. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
(*) https://shibboleth.net/sites/release/java-identity-provider/4.1.0/idp-authn-impl/apidocs/net/shibboleth/idp/authn/impl/StorageBackedAccountLockoutManager.html
Nome Parametro Significato
counterInterval intervallotemporaledopo il qualeil contatoreviene resettato
maxAttempts numero massimo di tentativifallitinellafinestra temporale
lockoutDuration duratadel lockout per la coppiausername/IP
extendLockoutDuration estensione del lockoutDuration nel caso persistano i tentativi
duranteil periodo di lockout
Account lockout Shibboleth - Parametri di configurazione(*)
20. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Account lockout Shibboleth - Come si attiva:
Basta aggiungere questo bean al file conf/global.xml
<bean id="shibboleth.authn.Password.AccountLockoutManager"
parent="shibboleth.StorageBackedAccountLockoutManager"
p:maxAttempts="5"
p:counterInterval="PT5M"
p:lockoutDuration="PT5M"
p:extendLockoutDuration="false" />
21. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Account lockout Shibboleth - Funzionamento:
2023-02-07 16:57:23,591 - INFO
[net.shibboleth.idp.authn.impl.StorageBackedAccountLockoutManager:255] -
[127.0.0.1] - Lockout threshold reached for 'sbadato@cineca.it!127.0.0.1',
invalid count is 5
2023-02-07 16:57:23,591 - INFO
[net.shibboleth.idp.authn.impl.ValidateCredentials:172] - [127.0.0.1] -
Profile Action ValidateCredentials: Account locked out, aborting
authentication
22. Accesso malevolo:
Tentativi ripetuti di login finalizzati a scoprire la password
Account lockout Shibboleth
• PRO:
• Sempliceda attivare
• Efficace su tutte le fonti di autenticazione(LDAP, AD, DataBase)
• CONTRO:
• Complicato definire politiche di lockout alternative
(documentazionecarente)
• Non protegge le applicazioni che fanno bind direttamente su
LDAP
23. Accesso malevolo:
La password è stata scoperta / trafugata
Attivazione 2FA basata su TOTP
• Supportata nativamente su Shibboleth IDP v4 (*)
• Secret (cifrato) su LDAP gestito tramite attribute-resolver
https://shibboleth.atlassian.net/wiki/spaces/IDPPLUGINS/pages/1376878877/TOTP
<AttributeDefinition xsi:type="Decrypted" dataSealerRef="totp.DataSealer" id="ateneoTokenSeed">
<InputDataConnector ref="myLDAP" attributeNames="ateneoTokenSeed" />
<AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.16983.300.1.10.1" friendlyName="ateneoTokenSeed" />
</AttributeDefinition>
E' necessarioimplementare un sistema
di enrollment degli utenti e di gestione
del seed
24. Cosa può compromettere il servizio di SSO?
comportamento
malevolo
errore
umano
disastro
indisponibilità
fonte dati
27. Indisponibilità fonte dati:
Connection Timeout Query Timeout
• Facilmente calcolabile
• Indipendente dalla tipologiadi fonte dati
• Indipendente dal carico sullafonte dati stessa
• Dipendente dalla tipologiadi fonte dati
• Dipendente dal carico sullafonte dati stessa
TO DO: minimizzare TO DO: fare tuning
28. Esempio: LDAP in cascata
Indisponibilità fonte dati:
ldapURL = ldaps://ldap1:636 ldaps://ldap2:636 ldaps://ldap3:636
I timeout si sommano!!
se ok SOLO ldap3 si DEVE attendere Timeout ldap1 e ldap2
ldapURL = ldaps://ldapproxy123:636
ldap1
ldap3
ldap2
ldapproxy123
29. Esempio2: indisponibilità AD e Timeout
Indisponibilità fonte dati:
autenticazione
e reperimento
attributi
reperimento
UN SOLO
attributo
AD non raggiungibile
connectionTimeout = 3s
MINIMO 3s per
completare un login
IDP lento per l'utente finale
30. Cosa può compromettere il servizio di SSO?
comportamento
malevolo
errore
umano
disastro
indisponibilità
fonte dati
31. Il disastro:
Application Server down ...
… High availability
<Proxy balancer://idp_cluster>
BalancerMember ajp://idpXX route=*** ping=3 retry=15
BalancerMember ajp://idpXX+1 route=*** route=*** ping=3 status=+H
ProxySet stickysession=JSESSIONID|jsessionid
ProxySet lbmethod=byrequests
</Proxy>
WebServer
idpXX IdpXX+1
WebServer
32. Caso2: Data Center down ...
Il disastro:
… il Global Load Balancing
idpXX IdpXX+1
WebServer
WebServer
myidp.mydc1.mydomain.io
idpYY IdpYY+1
WebServer
WebServer
myidp.mydc2.mydomain.io
myidp.mydomain.io
master to replica
33. Il Global Load Balancing … quali criticità?
Il disastro:
probe efficaci
MA
sicure
• /idp/
• /idp/status
• /idp/profile/admin/resolvertest (*)
(*) https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631852/AACLI
certezza che tutti
gli ambienti siano
allineati
strumento di gestione e
versioning delle
configurazioni
34. Cosa può compromettere il servizio di SSO?
comportamento
malevolo
errore
umano
disastro
indisponibilità
fonte dati