Le Blog de C-quad

Archive pour la catégorie ‘Réseau’

Sécuriser l’accès au site via https – configuration d’apache

Nous allons ici voir comment sécuriser un site web fonctionnant sous apache en y ajoutant la possibilité de se connecter avec le protocole https.

Pour cela nous installerons le module « mod_ssh »

# yum install mod_ssl

Le protocole https utilise SSL et de ce fait il est nécessaire de générer les certificats qui seront installés. Si vous avez déjà une autorité de certification active vous pouvez passer à la suite directement.

Mise en place d’une autorité de certification (CA)

Création de l’autorité de certification (CA)

Nous allons créer la clé privée de l’autorité de certification qui nous permettra de produire des certificats auto-signé.

Le autorité de certification (CA) sera stocké dans /etc/pki/CA/cacert.pem, tandis que la clé privée du CA sera stockée dans /etc/pki/CA/private/cakey.pem:

# openssl req -new -x509 -days 365 -newkey rsa:1024 \
  -keyout /etc/pki/CA/private/cakey.pem \
  -out /etc/pki/CA/cacert.pem
# chmod 600 /etc/pki/CA/private/cakey.pem

Une copie de chaque certificat signé par l’autorité sera stockée dans /etc/pki/CA/newcerts, avec un nom correspondant au SN (Serial Number) de l’autorité avec l’extentsion .pem. Si ce dossier n’est pas présent, il est nécessaire de le créer :

# mkdir /etc/pki/CA/newcerts

Le fichier /etc/pki/CA/index.txt liste tous les certificats qui ont été signés, si ce fichier n’est pas présent, il est la aussi nécessaire de le créer :

# touch /etc/pki/CA/index.txt

Le fichier /etc/pki/CA/serial contient le prochain numéro de série disponible, étant donné que nous venons de mettre en place l’autorité le prochain numéro de série sera le 1 :

# echo 01 > /etc/pki/CA/serial

Voila l’autorité de certificat est prête à délivrer des certificats auto-signé, nous allons donc pouvoir créer notre certificat pour apache.

Création du certificat pour apache

Création du certificat

Il est nécessaire de créer un certificat SSL.Voici la démarche à suivre :

 # cd /etc/pki/tls/certs
 # openssl genrsa -des3 -out apachekey.pem 2048

Génération du CSR (Certificate Signing Request)

# openssl req -new -key apachekey.pem -out apachekey.csr
Enter pass phrase for apachekey.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:FR
State or Province Name (full name) []:France
Locality Name (eg, city) [Default City]:Fretin
Organization Name (eg, company) [Default Company Ltd]:C-quad Company Ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:cquad.dyndns.org
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Créer le certificat pour le serveur web

Il est nécessaire de signer le CSR pour créer le certificat du serveur web.

# openssl ca -in apachekey.csr -out apachecert.pem
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
 Serial Number: 1 (0x1)
 Validity
 Not Before: Feb  6 15:51:39 2011 GMT
 Not After : Feb  6 15:51:39 2012 GMT
 Subject:
 countryName               = FR
 stateOrProvinceName       = France
 organizationName          = C-quad Company Ltd
 commonName                = cquad.dyndns.org
 emailAddress              =
 X509v3 extensions:
 X509v3 Basic Constraints:
 CA:FALSE
 Netscape Comment:
 OpenSSL Generated Certificate
 X509v3 Subject Key Identifier:
 98:D8:CF:53:5D:0D:5C:BE:E8:87:ED:01:0C:CA:71:1B:32:94:80:60
 X509v3 Authority Key Identifier:
 keyid:E4:04:44:36:1A:A3:1C:F1:D5:6A:5A:C2:CA:E6:DC:7D:24:EF:FD:41

Certificate is to be certified until Feb  6 15:51:39 2012 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Installer le certificat SSL

Copier la clé et le certificat dans /etc/pki/tls/http/ :
# cp apachecert.pem /etc/pki/tls/http/
# cp apachekey.pem /etc/pki/tls/http/

Update VirtualHost as follows:

<VirtualHost cquad.dydns.org:443>
    SSLEngine On
    SSLCertificateFile /etc/pki/tls/http/apachecert.pem
    SSLCertificateKeyFile /etc/pki/tls/http/apachekey.pem
    SSLProtocol All -SSLv2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:+MD5
    DocumentRoot "/var/www/html/ssl"
    ServerName cquad.dyndns.org:443
</VirtualHost>

Attention avec cette configuration, au démarrage d’apache la passphrase qui a été renseignée sera demandée pour décrypter la clé. Si vous redemarrez souvent ce service ou l’ordinateur, il est préférable de supprimer la passphrase avec les actions suivantes :

# cp apachekey.pem apachekey.pem.org
# openssl rsa -in apachekey.pem.org -out apachekey.pem
Enter pass phrase for apachekey.pem.org:
writing RSA key

De ce fait apache ne demandera plus la passphrase. Pour le vérifier, il suffit d’afficher le contenu de la clé il ne doit plus apparaitre ce type de choses :

Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,E895E09547914F04

Interface graphique à distance avec VNC

VNC est utilisé pour afficher une session X-Windows sur un autre ordinateur. Contrairement à une connexion à distance (export DISPLAY), le serveur X est en cours d’exécution sur l’ordinateur distant, et non pas sur votre poste de travail local. Votre poste de travail (Linux ou Windows) contient une copie de l’écran qui s’exécute sur la machine distante.

Il existe plusieurs façons de configurer le serveur vnc. Nous allons voir comment configurer VNC en utilisant le service ‘vncserver’ tel que fourni par Fedora / CentOS.

Lire la suite de cette entrée »

Sécuriser un ordinateur avec fail2ban

Dans le cas ou la machine est accessible à partir d’Internet, il est impératif de la sécuriser un minimum.

Je vous conseille donc de bien configurer votre firewall. Néanmoins, il n’est pas toujours possible de tout fermer. Exemple, il serait dommage de fermer l’accès ssh si vous voulez accéder à votre ordinateur depuis l’extérieur. Mais si vous y avez accès, tous le monde peut tenter de s’y connecter.

Afin de limiter les chances que ces accès soient fructueux, je vous conseille donc l’utilisation de fail2ban. Logiciel qui intervient sur la configuration du firewall de tel sorte qu’il effectue un ban des ip des ordinateurs insistants.

Lire la suite de cette entrée »

Connexion SSH sans mot de passe – Utilisation des clés RSA

Il est parfois nécessaire de se connecter d’une machine à une autre avec le protocole SSH.

Nous allons voir ici comment se connecter sans avoir à saisir de mot de passe.

Machine locale

Sur la machine locale nous allons créer une clé privée et publique :

ssh-keygen -t dsa

Attention de bien garder la clé privée, celle-ci ne doit jamais être diffusée. Si l’on ne désire pas avoir à saisir une passphrase, il faut la laisser vide.

Nous allons envoyer notre clé publique sur la machine distante (machine sur laquelle on désire se connecter)

cat .ssh/id_dsa.pub | ssh utilisateur@hote_distant "cat >> .ssh/authorized_keys"

Machine distante

Il est possible de se connecter par clef et non plus par mots de passe. L’avantage est que l’on améliore énormément la sécurité ! Nous allons commencer par configurer le serveur SSH via le fichier « /etc/ssh/sshd_config ». Editez-le et modifiez les lignes comme ceci:

PubkeyAuthentication yes
PermitEmptyPasswords no

Il faut bien être vigilent à ce que le répertoire « .ssh » ne soit pas accessible pour les autres utilisateurs :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Transferer les mails systèmes de root vers une adresse mail valide

Il arrive que vous ayez ce type de message lors de l’utilisation du terminal :

Vous avez du nouveau courrier dans /var/spool/mail/root

Afin de consulter ce mail, il suffit d’utiliser la commande mail. Mais cela s’avère vite fastidieux et nécessite de faire la démarche d’aller consulter ces mails spécifiquement.

L’idéal serait de faire suivre ces mails sur votre boite mail perso.

La solution est alors de faire suivre les courriels du root vers une autre adresse mail.

Pour cela, éditez le fichier /etc/aliases :

vi /etc/aliases

Et rajoutez l’alias :

root: mon_mail@mon_domaine.com

Ensuite, rechargez les alias :

newaliases

Si votre service d’envoi de mail (Postfix ou Sendmail) est correctemnt configuré alors vous recevrez les mails root sur cette adresse.

Pour tester :

echo "hello world" |mail -s test root