Documentation / Spécification du serveur Web IROKOI http://pragmata.dyndns-web.com/pragmata/ 1/15
Table des matières 1Présentation...3 1.1Fonctionnalités...3 1.2Pourquoi utiliser un serveur web IROKOI?...4 2Installation...5 2.1Présentation de l'arborescence du produit IROKOI...5 3Configuration...6 3.1Fichier de configuration statique...6 3.1.1Exemple de fichier de configuration statique...7 3.2Fichier de configuration dynamique...8 3.2.1Exemple de fichier de configuration dynamique...9 4Lancement du serveur...10 4.1Exemple de commande de lancement sous environnement «Linux»...10 4.2Exemple de commande de lancement sous environnement «MS-windows»...10 5Développement...11 5.1Développement d'un service avec authentification par "login/mot de passe"...11 6Exécution des commandes systèmes en ligne...12 6.1Commande système sous un environnement «Linux»...12 6.2Commande système sous un environnement «MS-Windows»...14 6.2.1Exemple de commande pour différentes version de MS-Windows...15 http://pragmata.dyndns-web.com/pragmata/ 2/15
1 Présentation Irokoi est un Serveur Web développé en Java donc compatible avec l'ensemble des systèmes d'exploitation du marché: (Windows-Microsoft, Linux, Apple-Mac-OS, Unix, BSD...). (Mac-OS, Unix et BSD étant des systèmes d'exploitation de type POSIX, ceuxci seront assimilés à des systèmes d'exploitation Linux dans le reste de la documentation,) Irokoi est sobre en ressource système (faible consommation en CPU, en mémoire RAM et espace sur disque). N'importe quel serveur ou poste bureautique actuel ou même vieillissant suffit amplement. Installation et configuration ultra simplifiée. 1.1 Fonctionnalités Hébergement de sites Web contenant les formats/extensions de documents suivants : html, xhtml, css, java-script, zip, gzip, gz, tar, ogg, doc, docx, xls, xlsx, ppt, pptx, pps, ppsx, pdf, txt, rtf, csv, xml, jpeg, jpg, jpe, gif, png, tiff, mpeg, mpe, mpg, qt, mov, avi, wav. Permet l'upload et le download de fichiers. Permet l'enregistrement organisé des champs d'un formulaire d'un site web hébergé. Le langage serveur utilisé est celui du système d'exploitation! Vous pouvez donc développer un site web dynamique en shell! Le document devra disposer d'une extension.sh ou.bat. L'administrateur du serveur à la possibilité d'exécuter des commandes systèmes à distance. La liste des commandes systèmes autorisées est définie à l'avance par configuration (cf documentation: Fichier de configuration statique du serveur). L'authentification d'un site web est simple à mettre en place. Ainsi l'accès à un site peut être limité aux utilisateurs possédant un login/mot-de-passe (cf documentation: Mode Authentification). L'activité du serveur est tracée dans des fichiers horodatés. 2 types de fichiers de traces existent: les fichiers de traces techniques et les fichiers de traces de trafic où sont historisées toutes les requêtes reçues par le serveur. 4 niveaux de finesse de trace sont disponibles. http://pragmata.dyndns-web.com/pragmata/ 3/15
1.2 Pourquoi utiliser un serveur web IROKOI? Par mesure de sécurité! En effet, actuellement 2 serveurs web se partagent plus de 99% du marché (IIS de Microsoft et Apache de la fondation Apache). Hors les logiciels d'attaque de serveurs Web se basent sur des failles de sécurité déclarées de ces 2 serveurs. Entre les pirates utilisant ces logiciels d'attaque et les web-masters, c'est donc une course aux patchs et à la faille de sécurité qui est permanente. Ce besoin éternel de mise à jour est très chronophage pour un web-master. Donc si vous ou votre organisation ne souhaitez pas immobiliser les ressources humaines à cette maintenance alors vous devez utiliser un serveur web alternatif qui de par sa part de marché n'intéressera pas les concepteurs de logiciels d'attaques. http://pragmata.dyndns-web.com/pragmata/ 4/15
2 Installation Pré-requis à l'installation: Installation: Disposer d'une JVM compatible java 1.6 Celle-ci consiste simplement à copier (ou décompresser) l'arborescence du produit IROKOI à l'emplacement souhaité. 2.1 Présentation de l'arborescence du produit IROKOI Une fois installée l'arborescence IROKOI, vous pourrez découvrir les répertoires suivants: IROKOI/serverWWW IROKOI/serverWWW/config IROKOI/serverWWW/log IROKOI/serverWWW/doc IROKOI/serverWWW/util IROKOI/sitewww A la racine du répertoire «serverwww» se situe le fichier exécutable «irokoi.jar» ainsi que des exemples de scripts de lancement sous Windows «lance.bat» et sous Linux «lance.sh». Le sous répertoire «config» contient le fichier de configuration statique «config.txt» ainsi que le fichier de configuration dynamique «cmd.txt». Le sous répertoire «log» contient les traces de fonctionnement et d'activités du serveur Irokoi. Les sous répertoires «doc» et «util» contiennent la documentation du serveur ainsi que des exemples aidant à la configuration système, comme par exemple le lancement du serveur par l'inittab pour un OS Linux. A la racine du répertoire «sitewww» se situe les fichiers constituant la page web d'authentification par défaut du serveur Irokoi. Les sous répertoires constituent des exemples de sites web utilisant quelques spécificités du serveurs web Irokoi. Ces services peuvent donc être appelés, modifiés ou supprimés à votre guise. Ils ne sont présents que pour informations. C'est dans ce répertoire «sitewww» que pourront être installés les services hébergés par le serveur web IROKOI. Le service «IROKOI/sitewww/photo» peut donc être appelé via l'url suivante: http://127.0.0.1/photo/ http://pragmata.dyndns-web.com/pragmata/ 5/15
3 Configuration 2 niveaux de configuration existent et sont répartis dans 2 fichiers distincts. Le fichier de configuration statique (par défaut «config.txt») et le fichier de configuration dynamique (par défaut «cmd.txt»). 3.1 Fichier de configuration statique Ce fichier est lu uniquement au démarrage du serveur. Les paramètres sont: FICHIER_COMMANDE Contient l'emplacement et le nom du fichier de configuration dynamique (voir explication du fichier de configuration dynamique). WWW_ROOT Contient l'emplacement du répertoire racine contenant les différents services et pages web hébergées. WWW_PORT Contient le port d'écoute du serveur (par défaut le port 80). CMD_n (n>=1) Permet d'entrer la liste des commandes systèmes autorisées. Le caractère joker «*» indique que toutes les commandes sont autorisées. cf Chapitre 6, «Exécution de commandes systèmes en ligne» http://pragmata.dyndns-web.com/pragmata/ 6/15
3.1.1 Exemple de fichier de configuration statique # Fichier de configuration des variables statiques # Nom du fichier des variables dynamiques FICHIER_COMMANDE=/Pragmata/serverWWW/config/cmd.txt #FICHIER_COMMANDE=c:\\Pragmata\\serverWWW\\config\\cmd.txt WWW_ROOT=/Pragmata/sitewww #WWW_ROOT=c:\\Pragmata\\sitewww WWW_PORT=80 # Commandes Système autorisées: CMD_1=attrib CMD_2=dir CMD_3=ls CMD_4=cat CMD_5=* http://pragmata.dyndns-web.com/pragmata/ 7/15
3.2 Fichier de configuration dynamique Ce fichier est lu périodiquement (1 fois par heure) par le serveur mettant ainsi à jour sa configuration dynamiquement. La modification des paramètres de ce fichier ne nécessite donc pas un arrêt/relance du serveur. Les paramètres sont: NIVEAU_LOG Niveau de trace souhaité dans les fichiers de log. Le niveau peut varier de 0 à 3. 0=pas de log, 3=niveau de log maximal (le plus verbeux). DUREE_SESSION Valeur en seconde de la durée de validité de la session. Ce paramètre est utilisé lorsqu'un accès par "login/mot de passe" est demandé pour le service. LOGIN_n (n>=1) PSSWD_n REPERTOIRE_n Chaque t-uple permet de configurer l'accès par "login/mot de passe" d'un service. Le nom du service correspond au nom du répertoire. Le simple fait de définir un "login/mot de passe" pour un répertoire (ou service car dans ce cas c'est la même chose), provoque l'apparition d'une page demandant la saisie du couple "login/mot de passe". La saisie du "login/mot de passe" permet de déduire le service à afficher. La bonne saisie du "login/mot de passe" autorise la consultation du service pendant un nombre de seconde équivalent à la variable DUREE_SESSION. SERVICE_n (n>=1) URL_n Chaque couple "SERVICE/URL" permet le traitement d'une requête POST envoyée sur le service (SERVICE) indiqué par un autre service (URL). En effet, les informations du POST de la page «SERVICE» sont transmises au service indiqué dans la variable «URL». Le POST transmit ne contiendra pas le contenu de fichier mais dans ce cas seul le nom du fichier sera transmit Une requête GET sur le SERVICE ne déclenche pas de requête vers URL. Cette fonctionnalité est typiquement utilisée pour le traitement d'un formulaire d'une page web par un service annexe. Dans l'exemple ci-dessous, les requêtes envoyées en POST sur le service «pragmata/hebergement1.html» sont redirigées vers l'url «http://127.0.0.1:8090/» pour un traitement complémentaire. http://pragmata.dyndns-web.com/pragmata/ 8/15
3.2.1 Exemple de fichier de configuration dynamique # Fichier de configuration des variables dynamiques #0=no log a 3=debug NIVEAU_LOG=1 #Duree max de session en seconde DUREE_SESSION=300 # LOGIN_1=pierre PSSWD_1=azeerzzr REPERTOIRE_1=pierre_site LOGIN_2=admin PSSWD_2=J6zusm45 REPERTOIRE_2=admin LOGIN_3=photo PSSWD_3=DFGDF46GDFG REPERTOIRE_3=pierre_photo SERVICE_1=pragmata/hebergement1.html URL_1=http://127.0.0.1:8090/ http://pragmata.dyndns-web.com/pragmata/ 9/15
4 Lancement du serveur La class principale du serveur IROKOI est la class Controleur. L'ensemble des class (les fichiers exécutables) se trouve dans l'archive «irokoi.jar». les paramètres sont: L'emplacement du fichier de configuration statique. L'emplacement du répertoire qui contiendra les fichiers de log. Le serveur, disponible en ligne, est compilé sous Java 1.6 mais est disponible sur demande pour des versions antérieures (Java 1.5 ou Java 1.4). 4.1 Exemple de commande de lancement sous environnement «Linux» java -classpath /Pragmata/serverWWW/irokoi.jar Controleur /Pragmata/serverWWW/config/config.txt /Pragmata/serverWWW/log/ 4.2 Exemple de commande de lancement sous environnement «MSwindows» javaw -classpath "c:\pragmata\serverwww\irokoi.jar" Controleur "c:\pragmata\serverwww\config\config.txt" "c:\pragmata\serverwww\log\\" http://pragmata.dyndns-web.com/pragmata/ 10/15
5 Développement 5.1 Développement d'un service avec authentification par "login/mot de passe" Lorsqu'un service est configuré pour être accédé via une authentification par "lopin/mot de passe" (cf paramètres LOGIN, PSSWD, REPERTOIRE du fichier de configuration dynamique) les url contenues dans les pages web doivent contenir le paramètre "<IROKOI_ID_SESSION>". Ce paramètre sera automatiquement remplacé par un id de session permettant l'authentification. Un exemple de site utilisant cette méthode d'authentification est présent sous «IROKOI/sitewww/photo». http://pragmata.dyndns-web.com/pragmata/ 11/15
6 Exécution des commandes systèmes en ligne Il est possible d'autoriser l'exécution de commandes système passées en paramètre au service CMD dans l'url racine. 6.1 Commande système sous un environnement «Linux» Par exemple, pour un serveur Irokoi installé sous Linux: Si dans le fichier de configuration statique les commandes suivantes ont été autorisées: # Commandes Système autorisées: CMD_1=ls CMD_2=cat Alors il est possible d'appeler la commande «ls» pour lister le répertoire «/home/nico/» en utilisant le service CMD de la façon suivante: «http://192.168.1.12/cmd?ls /home/nico» http://pragmata.dyndns-web.com/pragmata/ 12/15
Autre exemple sous Linux pour afficher le contenu d'un fichier à l'aide de la commande «cat» en utilisant le service CMD de la façon suivante: «http://192.168.1.12/cmd?cat /home/nico/inadyn/log/inadyn.log» http://pragmata.dyndns-web.com/pragmata/ 13/15
6.2 Commande système sous un environnement «MS-Windows» Par exemple, pour un serveur Irokoi installé sous Windows-7: Si dans le fichier de configuration statique les commandes suivantes ont été autorisées: # Commandes Système autorisées: CMD_1=dir CMD_2=fichier.bat Alors il est possible d'appeler la commande «dir» pour lister le répertoire «c:\home\nico» en utilisant le service CMD de la façon suivante: «http://192.168.1.12/cmd?cmd /c dir c:\users\nico» http://pragmata.dyndns-web.com/pragmata/ 14/15
6.2.1 Exemple de commande pour différentes version de MS-Windows Win 95/98 : cmd = "command.com /c c:\\fichier.bat"; cmd = "command.com /c c:\\windows\\notepad.exe"; Windows-NT(XP, 7...) : cmd = "cmd /c c:\fichier.bat"; cmd = "cmd /c copy src.txt dest.txt"; http://pragmata.dyndns-web.com/pragmata/ 15/15