Installation et sécurisation d'une station Debian 3.0 stable15/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.
				  
				
 
  
					
					
						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  
				
				
 
  
					
					
						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.
	 
       |