IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Installation et sécurisation d'une station Debian 3.0 stable


Installation et sécurisation d'une station Debian 3.0 stable

15/05/2004




V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE
V.a. Installation
V.b. Configuration initiale
V.c. Reccomandations
V.d. Empreinte du système
V.e. Sauvegarde du système


V. INSTALLATION ET SECURISATION D'UN SERVEUR D'APPLICATION WEBSPHERE


Ce que nous abordons ici a été réalisé après le suivi de la partie 'IV. INSTALLATION ET SECURISATION D'UN SERVEUR APACHE MODSSL'.

Le CD d'installation utilise de Websphere contient la version 5.0 pour Linux et je rappelle qu'IBM Websphere est un logiciel payant et que le piratage est interdit.

Pour commencer, récupérez le fichier 'doc/InstallGuide_fr.PDF' et lisez le :)

Et pour finir, je n'aborde pas ici la configuration/administration du serveur d'application en lui-meme.

L'installation du wrapper libsafe (presentee en 5.2. Installation du wrapper libsafe) a été réalisée avec succès une fois l'installation de Websphere terminée.


V.a. Installation


Cette partie présente la procédure à suivre pour une installation 'standard' d'IBM Websphere Application Server.

mount -o remount,rw /usr /etc/init.d/apache stop cp /etc/apache/httpd.conf /etc/apache/httpd_before_was.conf mkdir /usr/local/websphere500 chown root:root /usr/local/websphere500 chmod 755 /usr/local/websphere500 mkdir /usr/local/websphere500/install mount /dev/cdrom /mnt cd /usr/local/websphere500/install cp /mnt/linuxi386/responsefile.txt .
Editez responsefile.txt de telle sorte que :

[...] < -P wasBean.installLocation="C:\Program Files\WebSphere\AppServer" > -P wasBean.installLocation="/usr/local/websphere500/appserver" [...] < -P mqSeriesBean.active="true" < -P mqSeriesServerBean.active="true" < -P mqSeriesSamplesBean.active="true" > -P mqSeriesBean.active="false" > -P mqSeriesServerBean.active="false" > -P mqSeriesSamplesBean.active="false" [...] < -P ihsFeatureBean.active="true" < -P ihsPluginBean.active="true" < -P apachePluginBean.active="false" > -P ihsFeatureBean.active="false" > -P ihsPluginBean.active="false" > -P apachePluginBean.active="true" [...] < -W nodeNameBean.nodeName="DefaultNode" < -W nodeNameBean.hostName="127.0.0.1" > -W nodeNameBean.nodeName="{YOUR_NODE_NAME}" > -W nodeNameBean.hostName="{YOUR_IP_ADDRESS}" [...] < -W serviceSettingsWizardBean.active="true" < -W serviceSettingsWizardBean.ihsChoice="true" < -W serviceSettingsWizardBean.wasChoice="true" < -W serviceSettingsWizardBean.userName="YOUR_USER_NAME" < -W serviceSettingsWizardBean.password="YOUR_PASSWORD" > #-W serviceSettingsWizardBean.active="true" > #-W serviceSettingsWizardBean.ihsChoice="true" > #-W serviceSettingsWizardBean.wasChoice="true" > #-W serviceSettingsWizardBean.userName="YOUR_USER_NAME" > #-W serviceSettingsWizardBean.password="YOUR_PASSWORD" [...] < -W defaultApacheConfigFileLocationBean.value= > -W defaultApacheConfigFileLocationBean.value=/etc/apache/httpd.conf [...] cd /mnt/linuxi386/ ./install -options /usr/local/websphere500/install/responsefile.txt
NDR : Des fichiers de log sont crées dans /tmp : vous pouvez suivre le processus d'installation en les consultant.

Quand l'installation est terminée :

umount /mnt mv /etc/apache/httpd_before_was.conf /etc/apache/httpd.conf Ajoutez ce qui suit au fichier /etc/apache/httpd.conf avant les directives VirtualHost ######################## ### Plugin WebSphere ### ######################## LoadModule app_server_http_module\ /usr/local/websphere500/appserver/bin/mod_app_server_http.so WebSpherePluginConfig\ /usr/local/websphere500/appserver/config/cells/plugin-cfg.xml #Alias /WSsamples /usr/local/websphere500/appserver/WSsamples #Alias /IBMWebAS/ /usr/local/websphere500/appserver/web/ cd /usr/local/websphere500/appserver/config/cells/ cp plugin-cfg.xml plugin-cfg.xml.orig cd /usr/local/websphere500/appserver/bin ./GenPluginCfg.sh /etc/init.d/apache start
=> Vérifiez que Apache tourne correctement. => Si vous rencontrez des erreurs, editez '/usr/local/websphere500/appserver/config/cells/plugin-cfg.xml' et au niveau de la ligne '<Log LogLevel="Error" Name="/usr/local/websphere500/appserver/logs/http_plugin.log"/', remplacez 'Error' par 'Trace'. => Consultez ensuite le fichier '/usr/local/websphere500/appserver/logs/http_plugin.log' après avoir essayé de relancer Apache.

Testez votre installation :

cd /usr/local/websphere500/appserver/bin/ ./ivt.sh
NDR : Patientez ... Le message '>ADMU3200I: Server launched. Waiting for initialization status.' dure longtemps !
=> Le test d'installation via 'ivt' lance également le serveur d'applications par défaut (server1) et celui-ci reste lance à la fin du test.
=> Vous pouvez donc tester que WAS est bien installé en entrant http://{@IP}/snoop dans un navigateur.


V.b. Configuration initiale


Restauration du 'read-only' sur /usr, déplacement vers /var/was, attribution de permissions restreintes et exécution du service WAS sous une identitée restreinteb

Stoppez le service Websphere si celui-ci est démarré :

cd /usr/local/websphere500/appserver/bin/ ./stopServer.sh server1
Stoppez le serveur Apache si celui-ci est démarré :

/etc/init.d/apache stop
Création d'un nouvel utilisateur :

Créez un utilisateur pour le service Was et un groupe pour les administrateurs was :

groupadd wasadm groupadd was adduser --no-create-home --disabled-password --quiet --ingroup was was Changing the user information for was Enter the new value, or press return for the default Full Name []: Ibm Websphere user Room Number []: Work Phone []: Home Phone []: Other []: Disabled Is the information correct? [y/n] y passwd -l was && chsh -s /bin/false was
Créez des limites spécifiques à cet utilisateur was dans le fichier

/etc/security/limits.conf : was hard memlock 128000 was hard nofile 32000 was hard cpu 100
Déplacement vers /var/was et restauration du 'read-only' sur /usr :

Vous devez avoir une partition /dev/sda12 dans /etc/fstab du type :

/dev/sda12 /var/was ext2 rw,noexec,nosuid,nodev 0 2
Vérifiez que la partition est montée, puis :

chown root:was /var/was chmod 3770 /var/was
Créez les répertoires dans /var/was :

cd /var/was cp -r /usr/local/websphere500/appserver/config/ . cp -r /usr/local/websphere500/appserver/etc/ . cp -r /usr/local/websphere500/appserver/installableApps/ . cp -r /usr/local/websphere500/appserver/installedApps/ . cp -r /usr/local/websphere500/appserver/logs/ . cp -r /usr/local/websphere500/appserver/properties/ . cp -r /usr/local/websphere500/appserver/temp/ . cp -r /usr/local/websphere500/appserver/tranlog/ . cp -r /usr/local/websphere500/appserver/wstemp/ .
Supprimez les répertoires dans /usr/local et créez les liens vers la partition Was :

cd /usr/local/websphere500/appserver/ rm -rf config && ln -s /var/was/config/ config rm -rf etc && ln -s /var/was/etc/ etc rm -rf installableApps && ln -s /var/was/installableApps/ installableApps rm -rf installedApps && ln -s /var/was/installedApps/ installedApps rm -rf logs && ln -s /var/was/logs/ logs rm -rf properties && ln -s /var/was/properties/ properties rm -rf temp && ln -s /var/was/temp/ temp rm -rf tranlog && ln -s /var/was/tranlog/ tranlog rm -rf wstemp && ln -s /var/was/wstemp/ wstemp
Positionnez les permissions appropriées sur le répertoire /var/was :

cd /var/was chown -R root:was * find . -type d -perm -750 -exec chmod 2770 \{\} \; find . -type f -perm -640 -exec chmod 660 \{\} \;
Positionnez les permissions appropriées sur le répertoire

/usr/local/websphere500 : chown root:was /usr/local/websphere500 /usr/local/websphere500/appserver\ && chmod 750 /usr/local/websphere500 /usr/local/websphere500/appserver cd /usr/local/websphere500/appserver chown -R root:was * find . -type d -exec chmod 750 \{\} \;
--- NOTE --- NDR : La j'ai fait cette connerie :( => 'find . -type f -exec chmod 640 \{\} \;'

... Correction à la prochaine install pour quelque chose de meilleur que :

find . -type f -name "*sh" -exec chmod 750 \{\} \; find ./java/bin -type f -exec chmod 750 \{\} \; find ./java/jre/bin -type f -exec chmod 750 \{\} \;
--- NOTE ---

Exécution de Was sous une identité restreinte :

Modifiez les paramètres de la JVM pour une adaptation à VOTRE (Mon serveur de test possède 156M de Ram et 300M de Swap) serveur dans '/var/was/config/cells/{HOSTNAME}/nodes/{HOSTNAME}/servers/server1/server.xml' :

<jvmEntries xmi:id="JavaVirtualMachine_1" verboseModeClass="false"\ verboseModeGarbageCollection="false" verboseModeJNI="false"\ initialHeapSize="96" maximumHeapSize="96" runHProf="false"\ debugMode="false" debugArgs="-Djava.compiler=NONE -Xdebug -Xnoagent\ -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777"\ disableJIT="false"/>
Modifiez le fichier /var/was/config/cells/{HOSTNAME}/nodes/{HOSTNAME}/servers/server1/server.xml de facon à obtenir :

<exécution xmi:id="ProcessExecution_1" processPriority="20" umask="007"\ runAsUser="was" runAsGroup="was"/>
à la place de :

<exécution xmi:id="ProcessExecution_1" processPriority="20" runAsUser=""\ runAsGroup=""/>
Configuration des comptes administrateurs Was :

mount -o remount,ro /usr
Redémarrez Apache, Websphere et inscrivez les futurs administrateurs dans les groupes was et wasadm :
Pour les administrateurs :

usermod -g {UserName} -G adm,users,webadm,www-data,wasadm,was {UserName}
Pour les utilisateurs :

usermod -g users -G [webadm,www-data],wasadm,was {UserName}
Avec 'visudo', ajoutez les entrées suivantes dans '/etc/sudoers' pour permettre à vos administrateurs was d'administrer le serveur Websphere :

# Cmnd alias specification [...] Cmnd_Alias WASCTL=/usr/local/websphere500/appserver/bin/startServer.sh ,\ /usr/local/websphere500/appserver/bin/stopServer.sh [...] # User privilege specification [...] %wasadm ALL=(was) NOPASSWD: WASCTL
NDR: Il est, bien entendu, trivial d'indiquer que les scripts que vous inscrivez dans le fichier d'autorisation sudo ne doivent être en disponibles en écriture que pour le super-utilisateur ou les administrateur.

Vos administrateurs Was peuvent désormais administrer le serveur :

> sudo -l User simon may run the following commands on this host: (was) NOPASSWD: /usr/local/websphere500/appserver/bin/startServer.sh,\ /usr/local/websphere500/appserver/bin/stopServer.sh > sudo -u was /usr/local/websphere500/appserver/bin/startServer.sh server1

V.c. Reccomandations


L'arborescence /var/was est désormais en 3770. N'oubliez pas que les administrateurs ou le serveur Was peuvent modifier les fichiers appartenant à root.
=> Présumez désormais que tous les fichiers appartenant à root dans cette arborscence peuvent contenir des données malicieuses !!!

Cette documentation n'a pas pour objectif de vous présenter une sécurisation approfondie de Websphere Application Server, voici donc quelques reccomandations sur les etapes que vous pourriez suivre après l'installation : Supprimer toutes les webapp installées. N'installer que les webapps relatives aux services que vous désirez offrir. Privilégier les accès Ssh pour l'administration. Si vous devez conserver l'interface web de la console d'administrateur : Positionnez l'application console derrière un vhost apache SSL. Mettez en place des restrictions d'accès réseau pour l'utilisation de la console. Mettez en place des restrictions d'accès utilisateur pour l'utilisation de la console. Si vous souhaitez placer l'accès à la console d'administration Web en aval du serveur Web Apache, vous pourrez bénéficier de la fonctionnalité SSL (par exemple). Pour ce faire, éditez le fichier '/etc/apache/httpd.conf' :

Configuration des modules :

> LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so > LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
Configuration des vhosts :

> RewriteEngine On > RewriteRule ^/admin/(.*)$ http://127.0.0.1:9090/admin/$1 [P,L]
=> Si vous avez suivi la procédure '5.8. Sécurisation approfondie avec GrSecurity', n'oubliez pas d'éditer le fichier /etc/grsec/debian-secinst/Dmn_apache pour ajouter une ligne du type '127.0.0.1:9090 stream tcp' dans la directive 'connect'.

Si vous souhaitez modifier les ressources mémoires attribuées aux processus Java, editez le fichier '/etc/security/limits.conf' pour les entrées 'nofile', 'cpu' et 'memlock' puis modifier les fichiers de configuration des serveurs dans /var/was/config/cells/{SERVER}/nodes/{SERVER}/servers/server{SERVER_NUM}/server.xml.


V.d. Empreinte du système


Editez /etc/aide/aide.conf et ajoutez : '/usr/local/websphere500/appserver/bin Binlib' a la fin du fichier.

Suivez ensuite la procédure présentée en '5.3. Conserver une empreinte de vérification d'intégrite du système.'


V.e. Sauvegarde du système


Réferez vous à '4.11. Backup du système sur une partition spécifique' et editez le fichier '/home/system/scripts/backup/exclude' pour qu'il contienne cette ligne supplémentaire :

/var/was/logs


Copyright (c) 2003 Simon Castro, scastro [ at ] entreelibre.com.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
You must have received a copy of the license with this document and it should be présent in the fdl.txt file.
If you did not receive this file or if you don't think this fdl.txt license is correct, have a look on the official http://www.fsf.org/licenses/fdl.txt licence file.
Copyright (c) 2003 Simon Castro, scastro [ at ] entreelibre.com.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
You must have received a copy of the license with this document and it should be présent in the fdl.txt file.
If you did not receive this file or if you don't think this fdl.txt license is correct, have a look on the official http://www.fsf.org/licenses/fdl.txt licence file.