sé curisation ré séau du sérvéur d’applications glassfish · l’utilisation d’iptales est...

7
1 PICHARD Pierre-Yves stage CPAM 2 ème année Sécurisation réséau du sérvéur d’applications GlassFish Certaines adresses IP ont été effacées dans ce document pour des raisons évidentes de sécurité.

Upload: truongkhue

Post on 16-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

1 PICHARD Pierre-Yves – stage CPAM 2ème année

Sé curisation ré séau du sérvéur d’applications GlassFish

Certaines adresses IP ont été effacées dans ce document pour des raisons évidentes de sécurité.

2 PICHARD Pierre-Yves – stage CPAM 2ème année

Table des matières ................................................................................................................................................................. 1

Contexte .................................................................................................................................................. 2

1ère solution : Iptables .............................................................................................................................. 3

Introduction ......................................................................................................................................... 3

En pratique .......................................................................................................................................... 3

Bloquer le port 8080 du serveur apache (en **.**.**.**) : ................................................................ 4

Quelques images pour résumer : .................................................................................................... 5

2ème solution (à privilégier) : via le serveur Glassfish .............................................................................. 6

Test final .................................................................................................................................................. 7

Contexte Dans le cadre de mon stage de 2ème année de BTS, j’ai été amené à sécuriser un serveur d’applications GlassFish. J’étais sur un poste client sous Windows 7, et je me connectais au serveur avec le logiciel de contrôle à distance VNC. Le serveur en question était un serveur de test : le clone du serveur de production. Sur ce serveur virtualisé sous CentOS 6.5 (sous KDE), iptables était installé ainsi que l'environnement d'applications java glassfish couplé au serveur apache. Le but était de mettre en place une solution permettant de bloquer le port d’entré par défaut de la plateforme GlassFish (serveur d’applications java) : le port 8080. Ainsi les requêtes passeront obligatoirement par le port 80 (puis 443 par la suite, voir le doc sécurisation SSL), et le serveur apache les redirigera en local vers le bon port (voir le doc sur la redirection avec reverse proxy).

3 PICHARD Pierre-Yves – stage CPAM 2ème année

1ère solution : Iptables

Introduction

Iptables est un pare-feu en ligne de commande, souvent installé sur les distributions linux par défaut. Il permet principalement de d’autoriser ou de bloquer les ports et @ IP venant et sortant d’une machine.

Les commandes principales sont disponibles sous forme de tableau sur le site suivant :

http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-05.html

…Ou plus simplement en tapant dans un terminal : man iptables

En pratique

Lors du stage, le but était d’interdire l’accès à un serveur web directement via l’adresse IP suivit du port, obligeant ainsi la requête à passer par le serveur apache et en passant par un reverse proxy sécurisé. Le poste utilisé est sous CentOS 6.5 (interface KDE).

Le problème consiste à bloquer l’accès au serveur directement via le port 8080 par n’importe quel

utilisateur, on bloque donc le port 8080 en entrée du serveur :

La commande : Nmap -sT -O localhost

Permet de contrôler les ports ouverts du serveur:

4 PICHARD Pierre-Yves – stage CPAM 2ème année

On pourra aussi utiliser Advanced LAN Scanner sous Windows afin de vérifier à distance les ports

ouverts et avec un service actif :

La configuration d’iptables se trouve dans le fichier /etc/sysconfig/iptables

On peut retrouver cette configuration avec la commande iptables –L

Bloquer le port 8080 du serveur apache (en **.**.**.**) :

Pour bloquer le port 8080 en entrée du serveur, il faut taper : /sbin/iptables –A INPUT –p tcp –dport 8080 –j DROP

Pour l’autoriser à nouveau, il faut d’abord supprimer la règle précédente : /sbin/iptables –D INPUT –p tcp –dport 8080 –j DROP

Puis autoriser le port 8080 : /sbin/iptables –A INPUT –p tcp –dport 8080 –j ACCEPT

-A signifie ajout d’une règle (à la fin de la liste, elle ne sera pas prioritaire sur les anciennes, pour être traité en 1er, il faut appliquer la règle –I, comme insertion) -D (delete) signifie suppression d’une règle, cela permet d’éviter d’avoir trop de règles en même temps qui peuvent se contredire (la liste de règles utilise les 1er éléments de la liste en priorité) INPUT signifie que la règle est appliquée pour les connexions entrantes -p pour le protocole (ici tcp bloqué) -dport pour le port destination (ici une requête externe à destination de la machine sur le port 8080 est bloquée) -j définie l’action à effectuer : DROP signifie interdire la règle décrite avant ACCEPT pour accepter la règle

Puis, après chaque configuration, il faut sauvegarder la configuration (pour que ça soit toujours valable après un redémarrage), puis redémarrer le service iptables :

5 PICHARD Pierre-Yves – stage CPAM 2ème année

/sbin/service iptables save /sbin/service iptables restart

Quelques images pour résumer :

Bloquer le port, sauver la configuration et redémarrer le service :

Vérifier la/les règle(s) entrée(s) :

- Avec le terminal :

- En graphique :

6 PICHARD Pierre-Yves – stage CPAM 2ème année

2ème solution (à privilégier) : via le serveur Glassfish

L’utilisation d’iptables est une solution gratuite et efficace pour gérer un pare-feu sous linux. Toutefois, cela rajoute ici un produit sur le serveur, et donc de la gestion supplémentaire pour le gestionnaire de serveur. La 2ème solution proposée est de faire en sorte que le serveur GlassFish n’écoute que localement (c’est-à-dire qu’en 127.0.0.1). Ainsi, l’accès au port 8080 sera impossible car jamais ouvert par le serveur GlassFish. Pour cela il faut aller voir dans Configurations > server-config > configuration réseau > processus d’écoute réseau > http-listener-1 et modifier l’adresse IP d’écoute, comme sur la capture d’écran ci-dessous ↓ (par défaut l’adresse était 0.0.0.0, ce qui autorisait n’importe qui à passer par le port 8080):

7 PICHARD Pierre-Yves – stage CPAM 2ème année

Test final

Quel que soit la méthode utilisée, le port 8080 est bien bloqué en entrée du serveur, le test a été

réalisé avec Advanced LAN Scanner sur le poste client, et a donné naturellement le même résultat

avec les 2 solutions :

↗ On constate bien que le port 8080 n’est plus présent dans les « open ports », mais fait bien partie

des « closed ports » (446 – 65535 closed).