mardi 18 mars 2014

Linux SSH - Limit user access to a specific directory

Make sure you are the SuperUser.


Create a user, by typing this command and following the process
adduser username

Specify user base directory to the directory you want
usermod --home /var/www username

If you want a group of users to only access this directory, add the user to a group
addgroup mygroup
usermod -g mygroup username 

Now, specify the directory to be exclusive. Go to "/etc/ssh" and type
nano sshd_config

Find and comment (# at the beginning) this line
Subsystem sftp /usr/lib/openssh/sftp-server

And write this
Subsystem sftp internal-sftp
Match group mygroup
    ChrootDirectory /var/www/
    X11Forwarding no
    AllowTcpForwarding no
    X11Forwarding no  
    ForceCommand internal-sftp


That's all, have fun.







HW[RG²] Marketing design pattern for interactive campaigns

Hello,

It is by creating and involving a photo/video capture application in full html5, specially designed to work on All In One computers, during prestigious companies events, that I've got a revelation.

I'm coding an interactive application that the user can interact with to share a content (photo or video) with his world. Of course, we collect user datas with his authorization, like any other interactive marketing campaign available.

The fact is that, I've noticed that everytime we have to deliver an application, we still brainstorming about the user journey, trying to improve the previous version.
And, we are not isolated case, many other marketing professionals and ux designers still doing the same.

This is why, I'm bringing the HW[RG²] design pattern for marketing interactive campaigns.


HW[RG²] stand for:
- Hello
- Who is
- Ready
- Go
- Realize
- Get

These acronyms are steps a user has to go through in your application to live the experience you want him to live.
You can traduce these steps more fluidly like that: "Hello! Who is ready to go, realize and get.".


What does each of these steps mean?

Hello
Main page, that informs the user and invites him to participate.

Who is?
Page that let user fills his personal informations in order to participate (this page can be integrated in the previous step).

Ready
This page prepares the user to do the required action.

Go
This page does the main action (content production).

Realize
This page summarizes the content produced by the user, and invites him to restart or valid.

Get
This page valids the produced content, thanks the user and can do a further action, like print, email etc... 


You're in, this is the HW[RG²] design pattern.


jeudi 6 février 2014

Installer un certificat SSL sous Windows (wampserver)

Cet article est inspiré de l'excellent tutoriel de Florian Bogey disponible ici: http://www.blog.florian-bogey.fr/installer-un-certificat-ssl-sous-wamp.html.
Le tutoriel n'ayant pas marché pour moi car version d'apache moins récente, donc tuto incomplet, j'ai décidé de le reprendre et le compléter pour tous ceux et celles qui rencontreraient et rencontreront le même problème.

NB: La version d'apache utilisée ici, est la 2.4.2 et celle de php, 5.4.3 (sous Wamp).
Selon votre version d’Apache les chemins vers les différents fichiers/dossiers peuvent changer.

Commençons.
Installer un certificat SSL sous un serveur wamp (Windows), ne prend que quelque minutes, nous verrons donc comment générer un certificat auto-signé avec OpenSSL et comment l'installer.


1. Installer OpenSSL 

Pour installer OpenSSL, rendez-vous ici: http://slproweb.com/products/Win32OpenSSL.html.
Créez une variable d'environnement relative dans le path windows, si ce n'est pas déjà fait (exemple de définition de variable d'environnement http://sametmax.com/ajouter-un-chemin-a-la-variable-denvironnement-path-sous-windows/).


2. Ouvrir la console windows

Ouvrez votre utilitaire en ligne de commande (Démarrer -> Exécuter -> Cmd -> Ok).
Si en tapant directement openssl, des informations liées s'affichent, vous avez bien réussi la première étape.


1
openssl
 

3. Se rendre dans le répertoire d'apache

Ouvrez votre utilitaire en ligne de commande (Démarrer -> Exécuter -> Cmd -> Ok), puis tapez:


1
cd C:\wamp\bin\apache\Apache2.2.21\bin


4. Générer la clé privée

Nous allons maintenant générer la clé privée, elle se trouvera dans le fichier "private.key", et notre clé sera de 2048 bits.

1
openssl genrsa -aes256 -out private.key 2048


5. Supprimer la passphrase

Nous allons ensuite libérer la clé privée de la "passphrase" qui la protège en tapant ceci:

1
openssl rsa -in private.key -out private.key




6. Générer le certificat auto-signé

Maintenant, nous devons générer le certificat auto-signé qui servira à certifier la connexion et chiffrer nos échanges.

Nous fixerons ici, la durée de vie du certificat à 100 ans, libre à vous de modifier le paramètre 36500. Le certificat généré s'appellera "certificat.crt".
Tapez cette commande et laissez-vous guider dans les étapes:

1
2
3
openssl req -new -x509 -nodes -sha1 -key private.key
-out certificat.crt -days 36500
-config C:\wamp\bin\apache\apache2.2.21\conf\openssl.cnf






7. Copier le certificat et la clé privée

Notre certificat a été généré, il nous faut maintenant stocker ce certificat et sa clé privée dans le serveur.
Rendez-vous sous "C:\wamp\bin\apache\apache2.4.2\conf" et créer deux répertoires, "Cert" et "Key".

Copiez certificat.crt dans le répertoire "Cert".
Copiez private.key dans le répertoire "Key".

8. Edition des fichiers de configuration

Nous devons maintenant installer notre certificat et le paramétrer en éditant des fichiers de configuration.
  • Décommentez les lignes suivantes dans le fichier "C:\wamp\bin\apache\apache2.4.2\conf\httpd.conf"
    • 1
      LoadModule ssl_module modules/mod_ssl.so
    • 1
      Include conf/extra/httpd-ssl.conf
    • 1
      LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

  • Décommentez cette ligne dans le fichier "C:\wamp\bin\php\php5.4.3\bin\php.ini"
    • 1
      extension=php_openssl.dll
       


  • Editez le fichier "C:\wamp\bin\apache\apache2.4.2\conf\extra\httpd-ssl.conf"
           Recherchez et remplacez les mots en gras ci-dessous, par:
    • DocumentRoot "c:/wamp/www/"
    • ServerName localhost:443
    • ErrorLog "c:/wamp/bin/apache/Apache2.4.2/logs/ssl_error.log"
    • TransferLog "c:/wamp/bin/apache/Apache2.4.2/logs/ssl_access.log"
    • SSLCertificateFile "c:/wamp/bin/apache/Apache2.4.2/conf/cert/certificat.crt"
    • SSLCertificateKeyFile "c:/wamp/bin/apache/Apache2.4.2/conf/key/private.key"
    • <Directory "c:/wamp/www/">
    • CustomLog "C:/wamp/bin/apache/Apache2.4.2/logs/ssl_request.log" \



9. Vérifier la configuration

Une fois ces modifications apportées, nous devons nous assurer qu'aucune erreur ne s'est glissée en chemin.Pour celà, tapez la commande:

1
httpd -t

Vous devez recevoir en retour "Syntax ok".
Si ce n'est pas le cas, une erreur s'est glissée dans le fichier "httpd-ssl.conf".
Aidez-vous du message d'erreur retourné.


10. Redémarrer Wamp

Redémarrer wamp, au besoin, quitter l'application et relancez-la.


11. L'accès à https://localhost doit être possible

Vous devrez obtenir la fenêtre suivante, acceptez le certificat.
Vous avez cette alerte car le certificat est auto-signé, elle n'apparaîtra si vous achetez votre certificat auprès d'une autorité reconnue (hébergeur etc...).

firefox erreur certificat SSL