Serveur/LAMP

Installation

sudo apt-get install apache2 php mysql-server libapache2-mod-php php-mysql

Durant l’installation, un mot de passe sera demandé pour mysql.

Configuration

Activation du https via TLS

#Activation du module ssl
sudo a2enmod ssl
#Activation du virtual host https
sudo a2ensite default-ssl.conf
#Redémarrage du service apache2
sudo service apache2 restart

Continue reading

Certificats

Pour sécuriser une connexion web en utilisant le protocole https, il faut un certificat.
Nous allons voir comment les générer sans trop de fatigue !

Recommandations

L’ANSSI déconseille fortement de générer des certificats sur un serveur fraîchement installé ou pire sur une machine virtuelle, car il n’y a pas suffisamment d’entropie. cf p8/21 Anssi – Note technique Recommandations pour un usage sécurisé d’OpenSSH

Quelques règles permettent de s’assurer que le réservoir d’entropie est correctement rempli :

  • la machine de génération de clés doit être une machine physique ;
  • elle doit disposer de plusieurs sources d’entropie indépendantes ;
  • l’aléa ne doit être obtenu qu’après une période d’activité suffisamment importante (plusieurs minutes voire heures).

Il parait donc nécessaire de générer les clefs et certificats sur son poste de travail, qui a de nombreuses applications en service, générant de l’entropie.

L’autorité de certification

Il est possible de faire signer ses certificats par une autorité de certification, qui vous facturera l’opération.

Sinon il est possible de créer sa propre autorité de certification.
Continue reading

Serveur/Authentification SSH avec certificat

Dans un premier lieu, il faut générer les clefs, sur le client, via la commande :

$ ssh-keygen

Par défaut il s’agit de RSA en 2048 bits.
Elles seront stockées sous ~/.ssh/

La clef privée sera nommée : id_rsa
La clef publique sera nommée : id_rsa.pub

Pour une authentification avec le certificat sans devoir saisir la passphrase, il ne faut pas en saisir lors de la génération des clefs.

Maintenant que nous avons les clefs, il faut communiquer la clef publique au serveur, via une commande dédiée :

$ ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ipaddress>

Il faudra saisir le mot de passe pour établir une connexion ssh pour la copie de la clef.
La commande permet de copier la clef publique dans le bon repertoire : ~/.ssh
avec le nom correct : authorized_keys
ainsi que les droits d’accès en 600.

Il ne reste plus qu’à effectuer la configuration sur le serveur ssh.
Pour cela, il faut éditer le fichier de configuration du daemon ssh :

# vi /etc/ssh/sshd_config

Il faut activer l’authentification via certificat :

PubkeyAuthentication yes

désactiver l’authentification de root :

PermitRootLogin no

Permettre l’authetification de root seulement par certificat :

PermitRootLogin without-password
RSAAuthentication yes
PubkeyAuthentication yes

Désactiver l’authentification par mot de passe :

PasswordAuthentication no

Désactiver PAM authentication, ne donner les droits ssh qu’à certains utilisateurs ou groupes, ici le groupe ssh

UsePAM no
IgnoreUserKnownHosts no
AllowGroups ssh

Il suffit juste pour finaliser, de relancer le service ssh :

sudo service ssh restart

Sources :
doc-ubuntu-fr/Authentification par un système de clés publique/privée
doc.fedora-fr/SSH : Authentification par clé
Prendre un café/Installer sa clé SSH sur un serveur distant
Résoudre problème de certificat sur le client :
Chris Jean/Ubuntu SSH Fix for “Agent admitted failure to sign using the key”