Le problème de la page blanche (ou inaccessible) lors de l’accès à la console de monitoring BlackBerry v5

Il y a peu, j’ai été confronté à une panne générale de la console de monitoring BlackBerry Enterprise Server 5.0. Cette panne est apparue après avoir appliqué la procédure donnée par BlackBerry pour bouger la base de données SQL de configuration vers un nouveau serveur. Cette procédure nécessite de relancer le setup, ce qui a eu un effet désastreux sur la console de monitoring.

Après avoir redémarré les services, toute tentative de connexion à la console se soldait par le message Internet Explorer “Impossible d’afficher la page”. En regardant plus attentivement les ports ouverts sur le serveur BES par la commande netstat –a, j’ai constaté que le port 8443 (port par défaut de la console) n’était même pas ouvert. De plus, le service “BlackBerry Monitoring Console” s’arrêtait tout seul après quelques minutes. La simple désinstallation / réinstallation des composants de monitoring ne règle pas le problème. La console reste inaccessible.

La première étape a consisté à regarder les logs BlackBerry, et plus spécifiquement les fichiers NOMSERVEUR_BBMS_ENG_nnnn situés dans C:\Program Files(x86)\Research In Motion\BlackBerry Enterprise Server\Logs\DateDuJour. J’y ai remarqué les messages [ERROR] bad decrypt indiquant un problème d’accès au magasin de certificats servant à protéger le site web Apache de monitoring. Cet accès se fait via un mot de passe. Ce mot de passe est stocké dans le registre (en étant connecté avec le compte de service, dans la clé HKEY_CURRENT_USER\Software\Research In Motion\BlackBerry Enterprise Server\Monitoring Service\KeyStorePass). On peut le modifier soit directement à cet emplacement, soit en passant par le BlackBerry Configuration Manager sur l’onglet Monitoring Console. Le mot de passe par défaut est besbms, mais il est vivement conseillé de le changer, ce que j’avais fait. C’est en tentant d’ouvrir le magasin de certificats directement (grâce à la commande Keytool -list -keystore « C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server\Monitoring Service\bin\web.keystore » lancée dans une invite de commandes avec privilèges élevés, en se positionnant dans le répertoire contenant les binaires Java C:\Program Files (x86)\Java\jre1.6.0_18\bin, puis en saisissant le mot de passe) que je me suis rendu compte que le fichier web.keystore (le magasin de certificats) avait été écrasé par le fichier par défaut. J’avais donc perdu tous les certificats du magasin, et le service était incapable d’ouvrir le magasin, puisqu’il utilisait le mot de passe que j’avais défini au lieu de celui par défaut.

J’en ai donc tiré une première leçon : avant toute opération nécessitant le lancement du setup, il faut au préalable sauvegarder le fichier C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server\Monitoring Service\bin\web.keystore, et le restaurer ensuite, juste avant de redémarrer les services BlackBerry. Si vous n’avez pas de sauvegarde, vous pouvez suivre la procédure suivante pour générer un nouveau magasin de certificats avec un mot de passe personnalisé (ce que je vous conseille vivement). Je reviendrai dans un futur article sur le contenu de ce magasin. Il est effectivement conseillé de remplacer les certificats auto-signés par des certificats délivrés par une autorité de certification, ce qui évite les messages d’avertissement désagréables lors de l’accès à la console. Mais revenons à nos moutons…

Restaurer le magasin de certificats à partir d’une sauvegarde a en partie résolu mon problème : le port 8443 était maintenant ouvert sur le serveur, mais lorsque je tentais d’accéder à la console de monitoring, j’obtenais cette fois-ci soit une page blanche, soit un message indiquant l’impossibilité de contacter le BlackBerry Administration Service. C’est en suivant cet article que j’ai définitivement résolu le problème. En résumé, il faut remettre dans le registre le mot de passe de communication sécurisée utilisé par tous les services BlackBerry pour leur dialogue interne. Ce mot de passe est, uniquement pour le service de monitoring, écrasé par un mot de passe vide lors du setup. Il reste inchangé pour les autres services, ce qui engendre des problèmes de communication interne entre les services. Pour tous les services, le mot de passe est stocké dans le registre Windows. J’ai donc recopié la valeur de la clé HKEY_CURRENT_USER\Software\Research In Motion\BlackBerry MDS Connection Service\BippePassword dans la clé HKEY_CURRENT_USER\Software\Research In Motion\BlackBerry Enterprise Server\Monitoring Service\BippePassword.

On constate donc que, si le setup doit être relancé, la configuration du BlackBerry Monitoring Service est en partie écrasée :

_ le mot de passe d’accès au magasin de certificats est conservé,

_ le magasin en lui-même (fichier web.keystore) est remplacé par celui par défaut,

_ le mot de passe de communication, utilisé par les services BlackBerry pour communiquer entre eux de manière sécurisée, est remplacé par un mot de passe vide dans les paramètres du service de monitoring,

_ n’oubliez pas de repasser le dernier Maintenance Rollup que vous aviez appliqué depuis l’installation avant de relancer les services (plusieurs binaires sont écrasés par le setup, et demandent donc à être remis à jour).

La majorité des problèmes d’accès au service de monitoring peuvent être réglés en jouant sur ces 2 paramètres : le fichier web.keystore, et le mot de passe de communication sécurisée des services BlackBerry.

English version here.

Publié le 27 mars 2012 par Gérald Strozyk dans BlackBerry

Tag(s) associé(s) :

Configuration du pare-feu Windows Server 2008 R2 pour BlackBerry Enterprise Server 5.0 avec haute disponibilité

Si vous avez appliqué mon précédent article sur une solution haute disponibilité, vous avez certainement rencontré quelques problèmes de lenteur de votre interface BlackBerry Administration Service. J’ai rencontré les mêmes :-). En creusant un peu, je trouve quelques messages étranges dans les journaux BlackBerry indiquant un timeout. J’ai également constaté que la lenteur n’était jamais généralisée : en surfant dans 2 consoles BlackBerry différentes, et en appelant la même fonction, sur une machine, la réponse était instantanée, et sur l’autre, prenait jusqu’à 20 minutes !! Le redémarrage des services ne réglait pas systématiquement le problème.

J’ai rapidement écarté le scénario d’une défaillance d’un seul des 2 nœuds en faisant pointer l’alias DNS de la console sur un serveur, puis sur l’autre. Cela n’a rien changé. J’en suis donc venu à remettre en doute la partie réseau de l’installation.

Mes 2 nœuds de cluster BlackBerry, ainsi que mon serveur SQL, se trouvent sur le même VLAN, donc pas de filtrage –> rien à redire sur ce point.

Sur tous mes serveurs se trouve un antivirus (Symantec EndPoint Protection) qui analyse en temps réel les paquets réseau pour détecter des comportements indiquant l’exploitation d’une faille par un virus. J’ai déjà connu et analysé sur d’autres plateformes SQL Server des problèmes de performance liées à cet antivirus : le débit du transfert des données n’est pas affecté, mais la latence est fortement dégradée (150ms avec ce module IDS, 1ms sans). J’ai donc supposé que cela pouvait être à l’origine du problème de lenteur. Après avoir défini une exception permettant de “faire confiance” à tous les paquets réseau entrant et sortants entre mes 3 serveurs (et donc de ne pas les analyser), le temps de latence est retombé à 1ms, mais mon problème de lenteur est toujours présent ;-(

Le dernier point restant à analyser était mes règles de pare-feu. Je n’avais pourtant constaté aucune anomalie sur un serveur sans haute disponibilité. J’ai activé la journalisation du pare-feu pour recenser tous les paquets bloqués, et là, oh surprise, plusieurs paquets en provenance du second nœud de cluster sont bloqués. Un rapide coup d’œil à la documentation m’indique que les ports bloqués ne sont pas référencés. Il est donc impossible de définir des règles précises dans le pare-feu.

J’ai donc ajouté sur chaque serveur une règle autorisant l’ensemble des flux en provenance de l’autre nœud. L’effet a été immédiat : problème de lenteur résolu.

English version here.

Limiter les autorisations de base de données pour BlackBerry Attachment Service

Si vous avez attentivement suivi les instructions du Guide d’installation et de configuration de BlackBerry Enterprise Server 5.0.3 pour Microsoft Exchange, et si comme moi vous êtes un grand maniaque de la sécurité, vous avez certainement voulu suivre la procédure permettant de restreindre l’accès du service BlackBerry Attachment Service à la base de données de configuration.

L’idée ici est que ce service ne doit pas disposer de tous les droits sur la base de données de configuration (ce dont dispose le compte de service utilisé par défaut pour tous les services BlackBerry du serveur), mais seulement d’un ensemble (rôle) limité pour sécuriser les données de configuration du système, et toutes les autres données sensibles autres que les pièces jointes.

Mr RIM a donc prévu un rôle spécifique limité dans la base de données SQL Server (rim_db_AttachmentServer). Il suffit alors de définir un compte de service séparé, et de lui donner ce rôle selon la procédure suivante (copiée depuis la documentation disponible ici) :

  1. Dans la console de gestion Microsoft® SQL Server®, créez une connexion SQL pour le compte Windows ou le compte d’authentification SQL.
  2. Affectez le compte au rôle rim_db_AttachmentServer dans la base de données BlackBerry Configuration Database.
  3. Si vous souhaitez que BlackBerry Attachment Service utilise un compte d’authentification SQL pour accéder à BlackBerry Configuration Database, effectuez les actions suivantes :
    1. Sur l’ordinateur sur lequel vous avez installé BlackBerry Attachment Service, ouvrez une session à l’aide du compte Windows avec lequel BlackBerry Attachment Service est exécuté.
    2. Cliquez sur Démarrer > Exécuter.
    3. Saisissez regedit. Cliquez sur OK.
    4. Si vous exécutez une version 32 bits de Windows, accédez à HKEY_CURRENT_USER\SOFTWARE\Research In Motion.
    5. Si vous exécutez une version 64 bits de Windows, accédez à HKEY_CURRENT_USER\SOFTWARE\WOW6432Node\Research In Motion.
    6. Créez les clés BBAttachServer\Database.
    7. Dans la clé Database, créez les valeurs String Login et Password pour le compte d’authentification SQL.

Après avoir terminé : Après avoir terminé le processus d’installation de BlackBerry Attachment Service, dans la fenêtre Services de Windows, vérifiez que le service pour BlackBerry Attachment Service utilise le compte Windows que vous avez configuré. Si vous devez changer les informations du compte, redémarrez BlackBerry Attachment Service.

Il manque néanmoins quelque chose… En effet, la procédure ne spécifie pas quels droits et privilèges sont nécessaires à ce nouveau compte sur le serveur hébergeant le service BlackBerry Attachment Service. Le privilège “Ouvrir une session en tant que service” que Windows s’empresse d’attribuer au nouveau compte lorsque vous le configurez dans la console de gestion des services n’est pas suffisant. Le service démarre correctement, tout semble aller pour le mieux, y compris dans les journaux Windows et les logs BlackBerry, et pourtant les pièces jointes ne sont pas accessibles depuis les terminaux avec un message signalant l’impossibilité de les télécharger.

Pour fonctionner correctement, ce nouveau compte a besoin des mêmes droits et privilèges que le compte utilisé pour l’installation et pour lancer les autres services BlackBerry : ajoutez ce nouveau compte au groupe local Administrateurs de la machine, et redémarrez le service BlackBerry Attachment Service. Problème résolu !

English version here.

Publié le 26 janvier 2012 par Gérald Strozyk dans BlackBerry, Sécurité

Tag(s) associé(s) :

Configuration du pare-feu Windows Server 2008 R2 pour BlackBerry Enterprise Server 5.0

Lors de l’installation d’un serveur BlackBerry Enterprise Server 5.0 sur plateforme Windows Server 2008 R2, le programme d’installation ne crée pas automatiquement les entrées nécessaires à l’ouverture des ports réseau pour le bon fonctionnement du serveur.

Deux solutions sont alors possibles : désactiver le pare-feu Windows, ce qui expose le serveur aux attaques provenant du réseau local de l’entreprise, ou déclarer manuellement toutes les entrées nécessaires dans l’interface de configuration avancée du pare-feu Windows.

La liste des ports nécessaires au fonctionnement n’est pas décrite dans la documentation d’installation BlackBerry, mais se trouve en annexe du document d’administration d’un serveur BlackBerry Enterprise Server 5.0. L’entrée manuelle de toutes ces exceptions de pare-feu est longue et fastidieuse, et donc source d’erreur, ce qui entrainerait des problèmes difficiles à diagnostiquer pour rétablir un fonctionnement normal.

De plus, en cas de réinstallation nécessaire du serveur suite à un sinistre, cas dans lequel le temps de réaction est primordial, la ressaisie de toutes ces règles prolongerait l’indisponibilité du serveur. L’idée est donc de concevoir un script de déclaration de ces exceptions, ce qui est facilement réalisable grâce à la commande netsh advfirewall firewall.

L’hypothèse retenue pour le script proposé est que le service hébergeant la base de données (SQL Server) se trouve sur une machine différente du serveur BES. Si le serveur SQL est hébergé sur la même machine, il suffit d’ajouter au script proposé les entrées nécessaires pour créer les exceptions de pare-feu en se basant sur l’article Microsoft Technet KB 968872.

Pour réaliser l’ouverture du pare-feu, procédez comme suit :

  • Démarrez le Bloc-notes.
  • Copiez-collez le code suivant dans le Bloc-notes :

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from browsers » enable=yes localport=443 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from BlackBerry Enterprise Server components » enable=yes localport=18180 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from BlackBerry Enterprise Server components for HA JNDI » enable=yes localport=11100 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from a BlackBerry Administration Service instance for local JNDI » enable=yes localport=11099 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »internal data connection » enable=yes localport=18083 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from BlackBerry Enterprise Server components for Java RMI » enable=yes localport=13873 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »incoming data connections from BlackBerry Enterprise Server components for Java RMI over SSL » enable=yes localport=13843 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »internal data connection » enable=yes localport=14457 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »internal data connection » enable=yes localport=28083 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »internal data connection » enable=yes localport=23843 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »internal data connection » enable=yes localport=21099 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »data connections between BlackBerry Administration Service instances » enable=yes localport=48858,48857,48855,45588 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Administration Service » dir=in action=allow description= »data connections between BlackBerry Administration Service instances using TCP ping » enable=yes localport=17200-17209,17400-17409,17600-17609,17800-17809 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Attachment Service » dir=in action=allow description= »incoming document submissions from the BlackBerry Attachment Service » enable=yes localport=1900 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Attachment Service » dir=in action=allow description= »incoming connections for BlackBerry Administration Service configuration » enable=yes localport=1999 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Attachment Service » dir=in action=allow description= »incoming document queries from the BlackBerry Attachment Service » enable=yes localport=2000 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Collaboration Service » dir=in action=allow description= »incoming data conections from the Microsoft Office Live Communications Server 2005 or Microsoft Office Communications Server 2007″ enable=yes localport=443 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Collaboration Service » dir=in action=allow description= »incoming data connections from the Microsoft Office Communications Server 2007 R2 or Microsoft Lync Server 2010″ enable=yes localport=5061 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Collaboration Service » dir=in action=allow description= »incoming data connections from IBM Lotus Sametime » enable=yes localport=1516 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Collaboration Service » dir=in action=allow description= »incoming data connections from the Novell GroupWise Messenger » enable=yes localport=8300 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Collaboration Service » dir=in action=allow description= »incoming data connections from the Blackberry Dispatcher » enable=yes localport=3200 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Controller » dir=in action=allow description= »incoming syslog connections from the BlackBerry Messaging Agent » enable=yes localport=4070 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Dispatcher » dir=in action=allow description= »incoming data connections from the BlackBerry Messaging Agent » enable=yes localport=5096 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Dispatcher » dir=in action=allow description= »incoming data connections from the 4 different BlackBerry Server components » enable=yes localport=3200 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Dispatcher » dir=in action=allow description= »incoming data connections from the BlackBerry database notification system » enable=yes localport=4185-4499 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Messaging Agent » dir=in action=allow description= »incoming syslog connections from the BlackBerry Controller and CalHelper » enable=yes localport=4085-4499 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Messaging Agent » dir=in action=allow description= »incoming data connections from the BlackBerry database notification system » enable=yes localport=4185-4499 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry MDS Connection Service » dir=in action=allow description= »incoming connections for the HTTP listener port » enable=yes localport=8080 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry MDS Connection Service » dir=in action=allow description= »incoming connections for the HTTPS listener port » enable=yes localport=8443 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry MDS Connection Service » dir=in action=allow description= »incoming data connections from the BlackBerry Dispatcher » enable=yes localport=3200 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry MDS Connection Service » dir=in action=allow description= »incoming data connections for reliable pushes » enable=yes localport=7874 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »incoming data connections from browsers » enable=yes localport=58180 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »incoming data connections from browsers » enable=yes localport=8443 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »incoming data connections from the BlackBerry Enterprise Server and any other applications that you configured the BlackBerry Monitoring Service to send SNMP traps to » enable=yes localport=161-162 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »internal data connection to the BlackBerry Monitoring Service Application Core » enable=yes localport=55500 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »internal data connection to the BlackBerry Monitoring Service Polling Engine » enable=yes localport=55501 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »internal data connection to the BlackBerry Monitoring Service Data Collection Subsystem » enable=yes localport=55502 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Monitoring Service » dir=in action=allow description= »internal data connection to the BlackBerry Monitoring Service console » enable=yes localport=55503 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Policy Service » dir=in action=allow description= »incoming data connection from the BlackBerry Dispatcher » enable=yes localport=3200 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Policy Service » dir=in action=allow description= »incoming data connections from the BlackBerry database notification system » enable=yes localport=4185-4499 protocol=UDP

netsh advfirewall firewall add rule name= »BlackBerry Router » dir=in action=allow description= »incoming data connections from the BlackBerry Dispatcher that use SRP » enable=yes localport=3101 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Router » dir=in action=allow description= »incoming data connections from BlackBerry devices that use the BlackBerry Device Manager to bypass the wireless network and devices that connect using Wi-Fi » enable=yes localport=4101 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Synchronization Service » dir=in action=allow description= »incoming data connections from the BlackBerry Dispatcher » enable=yes localport=3200 protocol=TCP

netsh advfirewall firewall add rule name= »BlackBerry Synchronization Service » dir=in action=allow description= »incoming data connections from the BlackBerry database notification system » enable=yes localport=4185-4499 protocol=UDP

  • Enregistrez le fichier en utilisant le nom suivant : OpenBESPorts.bat.
  • Ouvrez une ligne de commandes avec des privilèges élevés (clic-droit –> exécutez en tant qu’administrateur) et exécutez le script.

Ce script ouvre les ports pour tous les composants BlackBerry. Si vous n’avez pas installé certains composants, vous pouvez désactiver dans l’interface graphique de gestion avancée du pare-feu les règles superflues (par exemple, si vous n’avez pas de système de messagerie instantanée, sous la section Règles de trafic entrant, faire un clic droit sur toutes les règles nommées BlackBerry Collaboration Service , et sélectionnez Désactiver la règle).

English version here.

Excellente année 2012.

Comme il est de tradition de le faire, je vous souhaite le meilleur pour vous et vos proches pour cette nouvelle année 2012.

Que tous vos voeux se réalisent.

Gérald.

English version here.

Publié le 1 janvier 2012 par Gérald Strozyk dans Uncategorized