Archives de catégorie : Informatique

Mise en place d’une Autorité de Certification SSH

0. Préambule

0.1. Présentation

Nous allons permettre à un utilisateur (user) d'utiliser un client SSH pour se connecter à un serveur SSH (host) puis de s'authentifier grâce à une paire de clé.

Ces opérations (connexion puis authentification) seront validées par une chaine de certification.

Dans cette documentation, l'utilisateur test@srvbackup01.info.lan va se connecter en tant que transfert@srvapache01.info.lan grâce à sa paire de clés RSA.

0.2. Pré-requis

Nous avons besoin de 3 ordinateurs :

  • srvauth01.info.lan = Autorité de Certification SSH
  • srvapache01.info.lan = Serveur SSH
  • srvbackup01.info.lan = Client SSH

Nous avons besoin que la résolution DNS soit fonctionnelle sur tous les ordinateurs.

Nous avons besoin d'au minimum 5 utilisateurs :

  • root@srvauth01.info.lan = administrateur de la machine
  • root@srvapache01.info.lan = administrateur de la machine
  • test@srvapache01.info.lan = utilisateur de test
  • root@srvbackup01.info.lan = administrateur de la machine
  • test@srvbackup01.info.lan = utilisateur de test

1. Création de l'Autorité de Certification (AC)

Nous allons créer une chaine de certification pour les hosts (serveurs) et une chaine de certification pour les users (utilisateurs).

1.1. Préparation de l'espace de travail de l'autorité de certification

Nous ouvrons une session root@srvauth01.info.lan

Nous créons un dossier ssh_ca dans le dossier home de l'utilisateur root (/root)

mkdir /root/ssh_ca/

1.2. Génération des paires de clés

Nous allons générer une paire de clés pour la chaine de certification des hosts (serveurs) et une paire de clés pour la chaine de certification des users (utilisateurs) .

1.2.1. Chaine HOSTS

Nous générons une paire de clés RSA 2048 bits :

ssh-keygen -t rsa -b 2048 -f /root/ssh_ca/ssh_ca_hosts_rsa_key -C "AC HOSTS"

Une clé privée (format standard) est générée dans le fichier ssh_ca_hosts_rsa_key
Une clé publique (format SSH) est générée dans le fichier ssh_ca_hosts_rsa_key.pub

1.2.2. Chaine USERS

Nous générons une paire de clés RSA 2048 bits :

ssh-keygen -t rsa -b 2048 -f /root/ssh_ca/ssh_ca_users_rsa_key -C "AC USERS"

Une clé privée (format standard) est générée dans le fichier ssh_ca_users_rsa_key
Une clé publique (format SSH) est générée dans le fichier ssh_ca_users_rsa_key.pub

1.3. Création des certificats "racine"

Nous allons auto-signer des certificats "racine" avec les clés générées précédemment

1.3.1. Chaine HOSTS

Génération d'un certificat depuis la clé publique de l'AC HOSTS :

ssh-keygen -s /root/ssh_ca/ssh_ca_hosts_rsa_key -I ca_hosts -h -n srvauth01.info.lan -V +52w /root/ssh_ca/ssh_ca_hosts_rsa_key.pub

Un certificat SSH est généré dans le fichier ssh_ca_hosts_rsa_key-cert.pub

1.3.2. Chaine USERS

Génération d'un certificat depuis la clé publique de l'AC USERS :

ssh-keygen -s /root/ssh_ca/ssh_ca_users_rsa_key -I ca_users -h -n srvauth01.info.lan -V +52w /root/ssh_ca/ssh_ca_users_rsa_key.pub

Un certificat SSH est généré dasn le fichier ssh_ca_users_rsa_key-cert.pub

2. Configuration des hosts (serveurs SSH)

Nous allons générer un certificat SSH par host puis nous allons lui indiquer comment vérifier les hosts et les users.

2.1. Installation des chaines de certification

2.1.1. Génération du certificat d'hote

Nous ouvrons une session root@srvauth01.info.lan

Nous allons préparer les fichiers nécessaires à la configuration de srvapache01.info.lan

Création d'un dossier de travail :

mkdir /root/ssh_ca/srvapache01.info.lan/

Récupération de la clé publique :

scp root@srvapache01.info.lan:/etc/ssh/ssh_host_rsa_key.pub /root/ssh_ca/srvapache01.info.lan/

Création du certificat :

ssh-keygen -s /root/ssh_ca/ssh_ca_hosts_rsa_key -I host_srvapache01 -h -n srvapache01.info.lan -V +52w /root/ssh_ca/srvapache01.info.lan/ssh_host_rsa_key.pub

2.1.2. Installation du certificat d'hote et de la clé publique de vérification des utilisateurs

Nous ouvrons une session root@srvauth01.info.lan

Copie du certificat sur l'hôte :

scp /root/ssh_ca/srvapache01.info.lan/ssh_host_rsa_key-cert.pub root@srvapache01.info.lan:/etc/ssh/

Copie de la clé publique de l'AC USERS sur l'hôte :

scp /root/ssh_ca/ssh_ca_users_rsa_key.pub root@srvapache01.info.lan:/etc/ssh/

2.2. Configuration des serveurs SSH (SSHD)

Nous ouvrons une session root sur srvapache01.info.lan et sur srvbackup01.info.lan

Modification de la configuration de SSHD :

vi /etc/ssh/sshd_config

Nous devons indiquer au serveur SSH où trouver son certificat :

HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub

Nous devons indiquer au serveur SSH où trouver la clé publique permettant de vérifier les certificats des utilisateurs :

TrustedUserCAKeys /etc/ssh/ssh_ca_users_rsa_key.pub

Redémarrage du service :

service ssh restart

3. Configuration de la partie "client"

3.1. Génération du certificat utilisateur depuis l'AC

Nous allons préparer les fichiers nécessaires à l'authentification de test@srvbackup01.info.lan

Nous ouvrons une session root@srvauth01.info.lan

Création d'un dossier de travail :

mkdir -p /root/ssh_ca/srvbackup01.info.lan/test/

Récupération de la clé publique :

scp test@srvbackup01.info.lan:/home/test/.ssh/id_rsa.pub /root/ssh_ca/srvbackup01.info.lan/test/

Création du certificat :

ssh-keygen -s /root/ssh_ca/ssh_ca_users_rsa_key -I test_user -n test -V +52w /root/ssh_ca/srvbackup01.info.lan/test/id_rsa.pub

Copie du certificat dans le profil de l'utilisateur :

scp /root/ssh_ca/srvbackup01.info.lan/test/id_rsa-cert.pub test@srvbackup01.info.lan:/home/test/.ssh/

3.2. Configuration du client SSH (déclaration de l'AC HOSTS)

Nous allons indiquer au client SSH comment vérifier le certificat du serveur SSH. Pour cela nous allons designer la clé publique de l'AC HOSTS comme @cert-authority de *.info.lan.

Il suffit d'ajouter la ligne suivante dans le fichier known_hosts de l'utilisateur (~/.ssh/known_hosts) ou de l'ordinateur (/etc/ssh/ssh_known_hosts) :

@cert-authority *.info.lan <clé publique SSH de l'AC HOSTS>

3.2.1. Génération d'un fichier known_hosts de référence

Nous ouvrons une session root@srvauth01.info.lan

printf "@cert-authority *.info.lan $(cat /root/ssh_ca/ssh_ca_hosts_rsa_key.pub)" > /root/ssh_ca/known_hosts

3.2.2. Ajout de l'AC HOSTS pour un utilisateur

Nous ouvrons une session root@srvauth01.info.lan

Remplacement du fichier known_hosts de l'utilisateur test@srvbackup01.info.lan

scp /root/ssh_ca/known_hosts test@srvbackup01.info.lan:/home/test/.ssh/

3.2.3. Ajout de l'AC HOSTS pour un ordinateur

Nous ouvrons une session root@srvauth01.info.lan

Remplacement du fichier ssh_known_hosts de srvbackup01.info.lan

scp /root/ssh_ca/known_hosts root@srvbackup01.info.lan:/etc/ssh/ssh_known_hosts

Nous pouvons changer l'emplacement de ce fichier en modifiant la directive GlobalKnownHostsFile du fichier /etc/ssh/ssh_config :

GlobalKnownHostsFile /etc/ssh/known_hosts

 

Apache HTTPD : SSO dans un réseau d’entreprise Windows

1. Technologies utilisables pour le SSO

Services d'authentification :

Fournisseurs d'identité :

  • Le contrôleur de domaine Active Directory (Active Directory Domain Services)

Fournisseur d'autorisation :

  • Le contrôleur de domaine Active Directory (Active Directory Federation Services)

Mécanisme de négociation :

Méthodes / protocoles d'authentification :

Fournisseurs de sécurité :

2. Fonctions disponibles pour Apache HTTPD

Le serveur peut procéder à l'identification du client web en utilisant un module tiers.

Version 2.2.X Windows :

  • mod_auth_ntlm (NTLM sur HTTP)
  • mod_auth_sspi (SSPI + NTLMSSP)

Version 2.4.X Windows

  • mod_auth_sspi (SSPI + NTLMSSP)

Version 2.2.X Linux :

  • mod_auth_ntlm_winbind (NLTM sur HTTP)
  • mod_auth_kerb (GSSAPI + Kerberos)

Version 2.4.X Linux :

  • mod_auth_ntlm_winbind (NLTM sur HTTP)
  • mod_auth_kerb (GSSAPI + Kerberos)

 

3. Exemples

Cas 0 : NTLM sur HTTP

 

Cas 1 : SSPI + NTLMSSP

 

Cas 2 : GSSAPI + Kerberos

 

 

Passer de Debian 7 à 8

Le but est de passer de Debian 7.X (wheezy) à Debian 8.X (Jessie).

Mettre à jour votre version actuelle :
apt-get update && apt-get upgrade

Remplacer le nom de version dans les listes de sources de APT :
sed -i 's/wheezy/jessie/g' /etc/apt/sources.list

Ne pas oublier de modifier les listes de sources des produits tiers (MariaDB, etc) :
sed -i 's/wheezy/jessie/g' /etc/apt/sources.list.d/mariadb.list

Téléchargement et installation de la nouvelle version :
apt-get update && apt-get upgrade && apt-get dist-upgrade -y

Redémarrage :
reboot

C'est fini !