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

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


précédentsommairesuivant

X. Installation et sécurisation d'un serveur d'application Websphere

Ce que nous abordons ici a été réalisé après le suivi de la partie Installation et sécurisation 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-même.

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

X-A. Installation

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

 
Sélectionnez
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 .

Éditez responsefile.txt de telle sorte que :

 
Sélectionnez
[...]
< -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

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 :

 
Sélectionnez
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 qu'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 :

 
Sélectionnez
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.

X-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é :

 
Sélectionnez
cd /usr/local/websphere500/appserver/bin/
./stopServer.sh server1

Stoppez le serveur Apache si celui-ci est démarré :

 
Sélectionnez
/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 :

 
Sélectionnez
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

 
Sélectionnez
/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 :

 
Sélectionnez
/dev/sda12  /var/was ext2   rw,noexec,nosuid,nodev  0  2

Vérifiez que la partition est montée, puis :

 
Sélectionnez
chown root:was /var/was
chmod 3770 /var/was

Créez les répertoires dans /var/was :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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

 
Sélectionnez
/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 :

 
Sélectionnez
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' :

 
Sélectionnez
<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 :

 
Sélectionnez
<exécution xmi:id="ProcessExecution_1" processPriority="20" umask="007"\
runAsUser="was" runAsGroup="was"/>

à la place de :

 
Sélectionnez
<exécution xmi:id="ProcessExecution_1" processPriority="20" runAsUser=""\
      runAsGroup=""/>

Configuration des comptes administrateurs Was :

 
Sélectionnez
mount -o remount,ro /usr

Redémarrez Apache, Websphere et inscrivez les futurs administrateurs dans les groupes was et wasadm :
Pour les administrateurs :

 
Sélectionnez
usermod -g {UserName} -G adm,users,webadm,www-data,wasadm,was {UserName}

Pour les utilisateurs :

 
Sélectionnez
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 :

 
Sélectionnez
# 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 administrateurs.

Vos administrateurs Was peuvent désormais administrer le serveur :

 
Sélectionnez
> 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

X-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 :

 
Sélectionnez
> LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so
> LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so

Configuration des vhosts :

 
Sélectionnez
> 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.

X-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 Conserver une empreinte de vérification d'intégrite du système.

X-E. Sauvegarde du système

Réferez vous à 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 :

 
Sélectionnez
/var/was/logs

précédentsommairesuivant

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.