jeudi, juillet 28, 2011

La version Java 7 est sortie

Oracle vient de publier la version finale de Java Runtime Edition (Java 7). Les principales nouveautés proposées sont listées ci-dessous :
  • Projet Coin (String dans les Switch, Exceptions multiples dans un Catch multiple, simplification de l'écriture des génériques, ...)
  • NIO 2 (nouvelle API pour la manipulation de fichiers, hook sur le système de fichiers, une copie de fichier)
  • L'invocation de langages dynamiques
  • De nombreux ajouts dans l'API
  • Un nouveau look pour la JavaDoc
Pour télécharger la nouvelle version, veuillez vous rendre sur le site d'Oracle

Pour connaître avec précision les changements opérés par cette version vous pouvez vous rendre sur le site d'OpenJDK.

lundi, juillet 18, 2011

J'ai besoin ... de réaliser un tunnel SSH et me connecter à un Proxy HTTP

Je vous propose un billet un peu particulier puisque cela ne va pas traiter de Java ou d'Eclipse mais de configuration réseau. L'idée est de décrire pas à pas la mise en place d'un tunnel ou pont SSH. L'intérêt est de pouvoir encapsuler des données d'un protocole dans un autre protocole (ici le protocole SSH) et ainsi assurer une sécurité puisque les données qui transiteront dans le tunnel SSH seront chiffrées.

Dans mon cas, je voulais savoir si je pouvais réaliser un tunnel SSH pour me connecter à un proxy HTTP le tout de manière sécurisée. L'idée avant tout est d'outrepasser les droits d'un sous réseau ayant bien entendu laisser ouvert le port 22 du protocole SSH.

La mise en place d'un tunnel SSH nécessite du côté serveur, un serveur logiciel SSH et un proxy HTTP. Du côté client, une connexion au protocole SSH via un client et un paramétrage sur le navigateur seront nécessaires.

Ma configuration réseau et pré-requis logiciels
Comme vous pouvez vous en doutez toutes les configurations qui vont suivre sont fortement dépendantes de la nature de votre réseau. Je vous propose ci-dessous ma configuration réseau sur les deux côtés.

Serveur
  • Windows 7
  • Une BBox Bouygues Telecom
  • Privoxy (pour le proxy HTTP)
  • MobaSSH (serveur SSH)
Client
  • Windows 7
  • Sous réseau avec le protocole SSH (port 22) ouvert
  • Firefox (navigateur Web)
  • Client SSH PUTTY
Il est clair que cela fonctionne également avec d'autres outils et systèmes d'exploitation. Pour les logiciels j'ai choisi la simplicité et la gratuité.

Serveur

Je vous propose dans cette section une description détaillée de l'installation et de la configuration des logiciels et du paramétrage réseau.

Serveur SSH
Sous Windows, je n'ai pas trouvé de serveur SSH qui n'encapsule pas le serveur SSH (OpenSSH) fournit par Cygwin. Il existe différentes distributions plus ou moins compliquées. J'utilise MobaSSH (http://mobassh.mobatek.net/) qui reste très simple en installation et en configuration.
  • Après téléchargement du ZIP, exécuter l'exécutable MobaSSH_Server_Home_1.XX.exe
  • N'appuyer pas sur le bouton Install It Now avant d'avoir autorisé la création de tunnel SSH (Settings -> PermitTunnel -> yes)

  • Choisir ensuite les comptes utilisateur Windows qui pourront se connecter au serveur SSH quitte à créer un compte spécifique (Users)
  • Cliquer sur le bouton Install It Now et le serveur SSH s'installera comme service Windows
Proxy HTTP
Du côté Proxy HTTP, j'ai choisi un petit programme tout simple Privoxy disponible en téléchargement sur cette page (http://www.privoxy.org/)
  • Choisir une version stable et sous Windows (privoxy_setup_3.0.17.exe)
  • Installer le programme et choisir par les options par défaut
De nombreuses configurations sont nécessaires, vous pouvez toutefois laisser par défaut les paramètres. Le port du Proxy HTTP utilisé est 8118.

Configuration du pare-feu de Windows

Pour que vos serveurs soit accessibles au niveau de votre sous réseau, il va falloir indiquer au pare-feu Windows de laisser passer les données sortant du serveur SSH (port 22) et du Proxy HTTP (port ...). Pour cela nous allons définir des règles
  • Panneau de Configuration -> Pare-feu Windows
  • Sur la colonne de gauche choisir Paramètres avancés, une interface liée aux fonctions avancées de sécurité doit s'afficher (voir capture d'écran ci-dessous)
  • Ajouter une nouvelle règle pour le trafic entrant concernant le port 8118 lié au proxy (bouton droit sur Règles de trafic entrant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 8118)
  • Ajouter une nouvelle règle pour le trafic entrant concernant le port 22 lié au protocole SSH (bouton droit sur Règles de trafic entrant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 22)
  • Ajouter une nouvelle règle pour le trafic sortant concernant le port 8118 lié au proxy (bouton droit sur Règles de trafic sortant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 8118)
  • Finalement, ajouter une nouvelle règle pour le trafic sortant concernant le port 22 lié au protocole SSH (bouton droit sur Règles de trafic sortant -> Nouvelle règle ... puis choisir une règle de type Port -> TCP et saisir dans Ports locaux spécifiques la valeur 22)
  • Fermer la fenêtre de configuration des fonctions avancées de sécurité
Configuration du pare-feu de la Box
Pour la configuration du pare-feu de la Box (pour moi il s'agit d'une BBox Bouygues Telecom) il faut passer par l'interface du routeur qui est donc spécifique au fournisseur d'accès. Si vous êtes chez FREE, SFR ou autre, le principe reste le même. L'idée ici est de rediriger les requêtes que la Box reçoit sur un port donné vers ma machine (appartenant au sous-réseau) contenant le serveur SSH et le proxy HTTP. Bref, rien de bien sorcier, voici ci-dessous la procédure.
  • Se connecter à l'interface d'administration du routeur de la BBox (http://192.168.1.254/)
  • Sur la partie gauche, choisir le menu Configuration Avancée -> Configuration du routeur
  • Choisir l'onglet NAT/PAT
  • Se connecter via le compte administrateur
  • Choisir la règle SSH Server - Secure Shell et modifier la de telle sorte que l'IP de la machine contenant le serveur SSH soit correcte (dans mon cas il s'agit de 192.168.1.6)
  • Valider et vérifier que la règle a été ajoutée comme montrée sur la capture d'écran ci-dessous

Client
Du côté client, normalement pas sur le même sous réseau que la partie serveur, nous avons à installer un client SSH et à configurer le navigateur Web. Il est bien évident que le port 22 du protocole SSH doit être ouvert, sinon la manipulation ne va pas être possible.

Putty
Putty est un client Telnet et SSH qui offre de très nombreux paramétrages. Il est disponible en téléchargement sur le site suivant (http://www.chiark.greenend.org.uk/~sgtatham/putty/). Je vous décris ci-dessous le paramétrage nécessaire.
  • Ouvrir le menu Session, vous devriez obtenir la capture d'écran ci-dessous

  • Dans la zone de texte Host Name (or IP address), saisir l'IP attribuée à votre Box. Cette information est connue depuis l'accueil de l'interface administration de votre BBox (http://192.168.1.254/) au niveau de la section Internet.
  • Ouvrir le menu Connection -> SSH -> Tunnels pour configurer les informations de votre futur Tunnel SSH (voir capture d'écran ci-dessous)
  • Nous souhaitons indiquer ici qu'à la sortie du Tunnel SSH, les requêtes devront être redirigées vers l'IP 192.168.1.6 du port 8118. Cette adresse est l'IP local de mon serveur contenant le serveur SSH et Proxy.
  • Revenir dans le menu Session puis donner un nom à cette configuration (exemple : Serveur SSH/Proxy) puis faire Save.
  • Finalement, faire Open pour se connecter au serveur SSH.
  • Si tout a été correctement configuré côté serveur, la connexion vers le serveur SSH doit fonctionner. Une authentification est requise vers un compte Windows contenant le serveur SSH (voir capture d'écran ci-dessous)
  • La connexion SSH vous permet de vous déplacer dans l'arborescence de votre compte distant. Pour utiliser en tunnel, vous devez uniquement laisser cette connexion ouverte.
Configuration du navigateur Web
Cette étape est la plus simple mais il faut faire attention à ne pas se tromper dans l'adressage du Proxy HTTP. Ici, le proxy HTTP est accessible via l'IP 127.0.0.1:8118 qui est l'entrée du tunnel.
  • Ouvrir votre navigateur préféré (ici ça sera FireFox 5)
  • Depuis le menu ouvrir la boîte de dialogue des options (Outils -> Options).
  • Sélectionner l'onglet Avancé et le sous onglet Réseau, puis faire apparaître les paramètres de connexion (bouton Paramètres)
  • Sélectionner Configuration manuelle du proxy et saisir dans la zone Proxy HTTP la valeur 127.0.0.1 et dans la zone Port la valeur 8118 (voir capture d'écran ci-dessous)
  • Faire OK
Normalement tout devrait fonctionner. Toutes requêtes HTTP passent par votre tunnel SSH. Vous pouvez surfer en toute sécurité.

Il est possible d'aller plus loin comme par exemple la mise en place d'un VPN. Pour cela, la toile propose de nombreux tutoriels qui vous faciliteront la vie.

samedi, juillet 16, 2011

Prises de responsabilités chez Developpez.com

Pour vous avertir si vous le ne saviez pas, j'ai pris la responsabilité de la rubrique Eclipse et la responsabilité de la rubrique Java conjointement avec mlny84. Cette implication a été motivée car les principales forces de la rubrique Eclipse et Java ont quitté Developpez.com (merci à Eric Siber [Ricky81] sur son importante implication à la rubrique Java). Par ailleurs Developpez.com reste un média non négligeable pour la diffusion d'information autour des technologies Java (tutoriels, FAQ, forums, ...). Pour preuve, même si j'arrive à attirer pas mal de personne via mon blog, mes supports de cours sur Developpez.com sont très visités (moi de juin ~ 8000 visites).

Du côté de la rubrique Java et sous rubriques associées (Spring, Android, Eclipse, Netbeans, Spring, ...) de nombreuses personnes passionnées et motivées sont là pour donner de leur temps afin de faire vivre la communauté francophone Java.

Si vous êtes intéressés par un investissement dans une sous rubrique Java de Developpez.com (écriture articles, modération, écriture FAQ, ...), n'hésitez pas à nous contacter.

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
Java
Divers
  • Un billet qui décrit les bénéfices de la gestion de sources avec GIT
  • Un billet qui décrit les 10 commandes de base pour utiliser GIT
  • Dans la série GIT, je voudrais l'installation cliente sous Windows