Cet article vous permettra d’installer et de configurer une Appliance Citrix NetScaler VPX en mode ICA-proxy (Netscaler Gateway) sécurisée avec l’authentification Active Directory et Radius Google Authenticator.
Google Authenticator ( http://code.google.com/p/google-authenticator/ ) est un excellent système d’authentification double facteur. De plus, il est libre. Il peut être utilisé avec FreeRADIUS pour fournir une authentification à 2 facteurs.
Tout cela fonctionne grâce à une bibliothèque appelée PAM, PAM pour « Pluggable Authentication Modules ». Pour plus d’informations sur PAM, voir http://www.linux-pam.org/. Google Authenticator a un module PAM qui est inclus dans le cadre du projet. PAM est le lien qui permet au service FreeRADIUS de communiquer avec Google Authenticator.
FreeRADIUS est un serveur populaire open source. Radius est un système d’authentification standard qui peut être utilisé pour authentifier de nombreux appareils différents, y compris les VPN, routeurs, commutateurs, ordinateurs, et bien plus encore. Pour plus d’informations sur FreeRADIUS, voir http://freeradius.org/.
Certains éléments de l’infrastructure ne seront pas abordés, notamment :
L’installation d’un Active Directory Microsoft,
L’installation de Xenapp ou Xendesktop,
L’installation et la configuration de la Web interface Citrix 5.4 ou du StoreFront 2.x,
L’installation de base d’ubuntu-12.04.4-server-amd64,
L’installation et la configuration de base du NetScaler.
Seront traités :
L’installation et la configuration de FreeRadius avec Google Authenticator,
La configuration de l’authentification double sur le NetScaler,
La customisation de la page de login Netscaler Gateway.
1.Schema d architecture
Ce schéma présente les éléments de l’installation.
2.Configuration de Google Authenticator avec Freeradius
Nous allons utiliser la distribution Ubuntu 12.4 serveur. Nous n’aborderons pas l’installation de base. Il faut donc au préalable avoir déployé la VM Ubuntu sur votre hyperviseur et avoir configuré la couche réseau.
Activer le Compte Root
Par défaut, le compte root est désactivé sur cette distrib
Sudo passwd –u root Sudo passwd root |
Installer SSH
Ceci pour continuer la config en Putty.
sudo aptitude install ssh |
NTP Install
Google Authenticator utilise un système de token basé sur le temps. C’est pourquoi, il est très important que tous les composants discutent avec la même heure.
sudo bash apt-get update apt-get install ntp |
Install FreeRADIUS et autres
sudo bash apt-get update apt-get install build-essential libpam0g-dev freeradius git libqrencode3 |
Download Module Google Authenticator Pam
cd ~ git clone https://code.google.com/p/google-authenticator/ cd google-authenticator/libpam/ make make install |
Configuration d’un groupe Local Unix
Ce groupe vous permettra de bloquer l’accès au service. Ajoutez ensuite tous les utilisateurs dans ce groupe pour les bloquer.
addgroup radius-reject |
Configurer FreeRADIUS
FreeRADIUS doit s’exécuter en tant que root. FreeRADIUS doit accéder aux jetons google_authenticator dans chaque répertoire homedir de chaque utilisateur.
Editer avec vim le fichier /etc/freeradius/radiusd.conf pour changer le compte de service Radius.
Chercher les lignes |
user = freerad
group = freerad
Remplacer par
user = root
group = root
Editer avec vim le fichier /etc/freeradius/users pour ajouter le group radius-reject.
Chercher les lignes suivantes | # Deny access for a group of users. |
#
# Note that there is NO ‘Fall-Through’ attribute, so the user will not
# be given any additional resources.
Modifier la ligne comme ceci
DEFAULT Group == “radius-reject”, Auth-Type := Reject
Reply-Message = “Votre accès n’est pas autorisé ”
Ajouter la ligne suivante
DEFAULT Auth-Type := PAM
Editer le fichier /etc/freeradius/sites-enabled/default
Chercher la ligne | # Pluggable Authentication Modules. |
#pam
Décommenter la lignepam
Editer /etc/pam.d/radiusd pour ajouter google authenticator comme source de mot de passe unique
Commenter tous les lignes suivantes | #@include common-auth |
#@include common-account
#@include common-password
#@include common-session
Et ajouter en dessous
auth required pam_google_authenticator.so
Le fichier doit ressembler à cela#
# /etc/pam.d/radiusd – PAM configuration for FreeRADIUS
#
# We fall back to the system default in /etc/pam.d/common-*
#
#@include common-auth
#@include common-account
#@include common-password
#@include common-session
auth required pam_google_authenticator.so
Editer le fichier /etc/freeradius/clients.conf pour autoriser le Netscaler à venir interroger le service FreeRadius
Ajouter les lignes suivantes a la fin du fichier de config |
Ici est ajoutée l’IP du netscaler, une clef secrète est configurée et un petit nom est donnée pour le netscaler
client 10.20.30.40 {
secret = @@@@SECRET@@@@
shortname = netscaler
}
Ajouter vos comptes utilisateurs (ici obama)
Adduser obama
Activer google authenticator pour le compte obama en entrant les commandes suivantes :
cd /home/obama
su obama
google-authenticator
Flashez le codeQR avec l’application mobile google authenticator
Redémarrage du service freeradius
service freeradius restart |
Pour tester en local, utiliser la commande radtest
radtest <username> <GOOGLE OPT> localhost 1812 <share_secret>
Si cela ne fonctionne pas vous pouvez deboguer en lancer le service freeradius en mode debug avec la commande freeradius -X
3.Ajout de l authentification RADIUS sur le Netscaler
Retour sur la page de configuration web de l’Appliance Netscaler Gateway.
Dans la partie System,
puis Authentification,
puis Radius :
cliquer sur Add. Entrer un nom et cliquer sur le bouton New. Entrer les informations comme sur la capture d’écran.
Choisir un mot de passe comme Secret Key.
Ce mot de passe devra être entré lors de la configuration du fichier client.conf du serveur FreeRadius.
Cliquer sur le bouton Create.
Ajouter l’expression ns_true.
Cliquer sur Create. Ensuite le Virtual Server NetScaler Gateway va être “linké”.
Aller dans la section
NetScaler Gateway,
puis Virtual Servers.
Cliquer sur la VIP Gateway puis sur Open..
Cliquer sur l’onglet Authentification
En primary vous devez avoir votre Policy LDAP
Cliquer sur Second…
Ajouter la policy OTP (radius) Voici le résultat sur le portail Netscaler
Vous devez donc créer vos comptes utlisateurs avec le même login sur l’active directory et sur le freeradius. Le mot de passe sur le serveur radius ne sera pas utilisé.
4. Customisation de la page de login Netscaler Gateway
Pour modifier les champs « Password1 et Password2 » voir les articles Citrix suivants :
How to Use Rewrite to Customize the Access Gateway Enterprise Edition Logon Page
http://support.citrix.com/article/CTX123121
How to Customize the Logon Page of a Access Gateway Enterprise Edition Release 9.2 Appliance
http://support.citrix.com/article/CTX126206
Version des produits :
PRODUIT | Version |
NETSCALER | 10.1 |
Ubuntu server | 12.4 |
Sources :
https://thomas.glanzmann.de/smsotp.pdf
https://www.mail-archive.com/freeradius-users@lists.freeradius.org/msg04951.html
http://www.liberiangeek.net/2012/07/question-what-is-the-root-default-password-in-ubuntu-12-04/
http://www.cyberciti.biz/faq/howto-start-stop-ssh-server/
http://www.supertechguy.com/help/security/freeradius-google-auth
http://code.google.com/p/google-authenticator/