A Propos

MS MVP Logo

View Marc Lognoul [MVP]'s profile on LinkedIn

Limite de Responsabilité

Le contenu de ce site, échantillons de codes, scripts ou fichiers de configuration sont délivrés "TEL QUEL" et ne confèrent aucun droit ni garantie. Ce site ne reflète en aucun cas les pensées, intentions, projets ou stratégies de nos employeurs, clients, amis ou membre de nos familles. Il est uniquement l’expression de nos opinions personnelles.

Notes Techniques et Tutos

    Désactiver la validation PAC II : Pour ne pas se faire encore avoir !

    by Antho 17. mai 2010 20:07

    Je ne m’attendais pas à recevoir un tel retour par mail à ce sujet (si peu passionnant), et je ne parle pas que des sites de référencement. Cela me motiva donc à boucler la boucle en exécutant de nouveaux tests intensifs avec Windows 2008 (SP2) ainsi que Windows 2008 R2 afin de couvrir tous les cas de figure.

    En résumé, quand la vérification de la signature PAC va-t ’elle se réaliser ?

    Le tableau ci-dessous nous montre les différents scénarios possibles :

    OS Serveur / Application
    ou Service Cible

    2003 Serveur pre-SP2

    2003 Serveur SP2 et supérieur,
    avec configuration additionnelle de la base de registre

    2008 Serveur,
    2008 Serveur R2

    File & Print Sharing

    PAS de Validation

    PAS de Validation

    PAS de Validation

    Exchange Server

    Validation

    PAS de Validation

    PAS de Validation

    SQL Server

    Validation

    PAS de Validation

    PAS de Validation

    IIS dont le pool d’application tourne dans le contexte Local System ou Network Service

    Validation

    PAS de Validation

    PAS de Validation

    IIS dont le pool d’application tourne dans le contexte d’un utilisateur du domaine

    Validation

    Validation

    Validation

    En bref, la seule différence entre Windows Serveur 2003 et 2008/2008R2 est que la base de registre n’a plus à être modifiée puisque la valeur par défaut est inversée depuis 2008.

    Une fois de plus, le point important ici est: si vous configurez Kerberos sur une ferme IIS (Sharepoint ou “simple” ASP.Net), la validation PAC sera TOUJOURS effectuée, quoique vous fassiez pour l’en empêcher A MOINS que l’application ne se voit accorder le droit « Autorisation d'agir dans le cadre du système d'exploitation », et en fasse usage.

    Si l’application cible s’est vue accorder le privilège seTcb et en fait usage :

    Accorder le privilège seTcb n’est pas suffisant parce qu’il sera désactivé par défaut jusqu’à ce que l’application le requière. Mais pourquoi en aurait-elle besoin ? Pour différentes raisons ce privilège peut être nécessaire par l’application du serveur. Deux usages courants sont expliqués dans les sections ci-dessous.

    Transition de protocole

    La transition de protocole est l’habilité pour une application serveur de déléguer les crédentiels d’un utilisateur vers un service back-end utilisant Kerberos, bien que non soumis de cette manière par le client.

    En clair, cela signifie qu’un utilisateur peut être authentifié par un service utilisant des protocoles autres que Kerberos, tels que Basic, NTLM ou digest et que ce service, en utilisant cette particularité, transformera les crédentiels afin de les présenter à un autre serveur.

    Exemple : un utilisateur qui s’authentifie à SharePoint en utilisant NTLM, désire utiliser le service de reporting qui tourne sur un second serveur. Le serveur SharePoint fera la transition nécessaire afin de transférer (appelé « déléguer ») les crédentiels de l’utilisateur au serveur SRS en utilisant Kerberos.

    Ken Schaefer, MVP IIS, nous en donne un excellent aperçu sur son blog (en anglais) : IIS and Kerberos Part 5 - Protocol Transition, Constrained Delegation, S4U2S and S4U2P.

    Services pour l’utilisateur (S4U – Services for user)

    Les extensions S4U sont étroitement liées à la transition de protocole. Pour faire très court, elles permettent, sous certaines conditions, à une application d’effectuer un logon pour le compte de l’utilisateur sans connaître son mot de passe.

    Cette caractéristique est, par exemple, utilisée dans le produits IAM (Identity Access Management) ou SSO (Single Sign-On) tels que IBM TAM/WebSEAL ou CA SiteMinder.

    Pour chacune des technologies, puisque l’utilisateur ne s’authentifie pas à l’origine en utilisant Kerberos, il n’y a pas de PAC à valider.

    OK. Mais finalement, pourquoi désactiver la validation PAC est si importante ?

    En fait, je ne dirais pas que c’est « si important ». Cela peut permettre d’améliorer les performances sous certaines circonstances. Puisque, pour faire bref, le PAC est vérifié par l’application serveur avant d’accorder un Ticket-Granting-Service (TGS) au client, cela n’est pas effectué à chaque requête tant que le TGS reste valide (note : il existe certaines exceptions à cette règle). MAIS dans certains cas, la vérification initiale peut prendre un certain temps car 1) l’AD du client est distant (en termes de réseau, nombre de sauts, latence, bande passante, …) de l’AD du serveur ou 2) l’AS du client est trop chargé. Cela donne donc la fausse impression que l’authentification du client au serveur est ralentie alors qu’on s’attend à une nette amélioration en passant à Kerberos.

    Ressources additionnelles (en anglais)

    · MSDN Patterns & Practices - Protocol Transition with Constrained Delegation Technical Supplement

    · MSDN Magazine April 2003 - Exploring S4U Kerberos Extensions in Windows Server 2003

    · MSDN - [MS-APDS]: Authentication Protocol Domain Support Specification

    Marc

    (traduit de l’anglais par Anthony)

    Tags:

    AD | IIS | Sécurité | SharePoint | Windows

    PHP rencontre SQL Server Reporting Services

    by Antho 28. avril 2010 22:36

    Dans le passé, j’ai souvent entendu des développeurs se plaindre de la difficulté d’interfacer SQL Reporting Services à partir de technologies non-Microsoft, telles que PHP.

    Le fossé est maintenant presque comblé grâce à Microsoft et Persistent, qui se sont associés afin de délivrer ce kit de développement logiciel (SDK), disponible sous la forme d’un projet CodePlex: SSRS SDK for PHP.

    Ce SDK, applicable à toutes plateformes et non pas seulement à celles basées sur Windows, facilitera grandement l’interopérabilité et ouvrira les portes à l’une des plateformes de Business Intelligence les plus riches.

    Le schéma ci-dessous (Source : MS Blog), nous montre en détails comment il s’intègre: 

    php

    Bien que le SDK soit accompagné d’une série de documents mais aussi d’une application démo, il nécessitera également d’installer les extensions SOAP pour PHP, que vous pouvez obtenir ici: http://us2.php.net/soap

    Il va sans dire que SSRS est disponible gratuitement dans le cadre de SQL Server 2008 Express with Advanced Services, ainsi que le Report Designer.

    Pour plus d’informations (en anglais)

    Marc

    (Traduit de l’anglais par Anthony)

    Tags:

    IIS | PHP | SQL Server

    HTTP1.1 400 Bad Request Header Field Too Long

    by Antho 28. avril 2010 22:27

    Certains posts dans les newsgroups ainsi qu’un de mes clients m’ont remémoré ce message d’erreur rencontré lorsqu’un utilisateur visite un site web ou tente d’utiliser une application web hostée sur IIS.

    Les requêtes/réponses HTTP contiennent deux parties: l’en-tête (header) et le corps (body). L’en-tête contient la plupart du temps des informations techniques échangées entre le client et le serveur; le corps contient des informations orientées utilisateur telles que le contenu d’une page web ou d’un fichier à télécharger par exemple. Le message d’erreur ci-dessus est en fait généré par le serveur parce que la requête envoyée par le client contient un en-tête qui est simplement trop large par rapport à ce que le serveur s’attend à recevoir. Mais qu’est-ce qui peut faire qu’un en-tête devienne si large? Tout dépend de la manière dont le navigateur (browser) est configuré (et parfois même le système d’exploitation sous-jacent dans certains cas), mais la plupart du temps les responsables sont les cookies (header: Cookie) et les informations d’authentification (Header: Autorization).

    Lorsqu’on rencontre cette erreur sur un site Internet, il n’y a pas grand ’chose à faire si ce n’est nettoyer ses cookies et espérer que cela fonctionnera après.

    Lorsque cette erreur survient dans un environnement intranet où les serveurs web tournent sous IIS et évezntuellement Sharepoint, SQL server reporting services ou Exchange avec OWA, elle est certainement causée par une combinaison des différents facteurs suivants:

    - le serveur (ou site) web est configuré pour utiliser l’authentification Windows intégrée et Kerberos en particulier

    - le client est capable de s’authentifier en utilisant Kerberos (le poste client et l’utilisateur sont membres d’une forêt Active Directory (AD))

    - la taille du jeton de sécurité (security token) est large. Cela peut être causé par le fait que l’utilisateur soit membre de beaucoup de groupes AD (des centaines), que l’objet utilisateur dans AD contienne des informations dans son SID history relatives à des migrations/consolidations de domaines, que les groupes dont l’utilisateur est membre sont aussi affecés par le SID history tout comme l’utilisateur

    - Le client envoie des informations d’authentification ET d’autorisation basées sur Kerberos. Contrairement aux méthodes NTLM et Basique qui n’envoient que des informations d’authentification et donc plus petites en taille, Kerberos inclut des informations telles que les groupes dont l’utilisateur est membre (group membership) ainsi que le SID history dans l’entête de la requête.

    -> Suivant leur appartenance aux groupes et les informations contenues dans le SID History, certains utilisateurs peuvent être affectés alors que d'autres pas...

    Heureusement, il existe plusieurs manières de contourner ce problème, bien que chacune d’entre-elles a ses inconvénients:

    Utiliser l’adresse IP dans l’adresse URL au lieu des noms d’hôtes

    Puisque Kerberos ne fonctionne qu’avec des noms d’hôtes, l’utilisation d’adresses IP forcera automatiquement la négociation NTLM. Bien sûr, cela ne dégrade pas que la sécurité, mais cela implique également de coder les adresses IP en dur, ce qui est rarement pratique et surtout signifie qu’un et un seul site web est hosté sur votre IIS. De plus, si votre application utilise la “délégation” de credentiels, qui est une caractéristique de Kerberos, cela ne fonctionnera plus (Je pense particulièrement à SQL SRS dans ce cas ou même Exchange OWA lorsqu’utilisé dans un scénario Front End-Back End)

    Configurer IIS pour n’utiliser qu’NTLM

    Dans le cadre de la configuration de l’authentification intégrée à Windows, vous pouvez simplement configurer IIS afin de n’utiliser que NTLM. Pour ce faire, il suffit de suivre l’article de la base de connaissances de Microsoft (MS KB) suivant: http://support.microsoft.com/kb/215383/fr

    Bien que l’impact de cette configuration soit moins importante que celui de la première, il subsiste des problèmes de sécurité et de compatibilité avec Kerberos s’il est requis par votre application.

    Configurer IIS pour accepter des en-têtes plus larges

    Cela peut se faire en configurant IIS via la base de registres. Il est important de noter que cette configuration s’appliquera à tous les sites web tournant sur le même système qui tourne IIS parce ce paramètre est utilisé au niveau du composant kernel (http.sys). De ce fait, il impactera tous les applications sur ce server.

    L’article MS KB suivant explique tous ces settings: http://support.microsoft.com/kb/820129/fr; celui à changer est MaxFieldLength. Cette opération doit se faire avec précautions car cela augmentera la taille de la mémoire utilisée par le système pour prendre en charge les requêtes. Sur un système 32 bits “assez chargé” (entendez: qui reçoit de nombreuses requêtes, non pas quelques requêtes larges), cela peut épuiser les resources allouées au kernel. Si boot.ini est configuré avec le paramètre /3G (éventuellement combiné au paramètre /USERVA), la situation peut empirer puisque moins de mémoire sera disponible pour le kernel. Sur un système 64bits, cette configuration sera sans danger, même si l’application tourne en mode 32 bits puisque c’est maintenu en mode kernel. Bien entendu, faites attention à ce que l’application fait avec ces en-têtes...

    Prévoir une cure amaigrissante de vos utilisateurs AD

    En réduisant (comprendre optimisant) l’appartenance aux groupes et en retirant les informations contenues dans le SID History des objets AD des utilisateurs et des groupes. Bien que cette solution soit profitable dans tous les scénarios et non pas uniquement ceux concernant l’authentification web (logon plus rapide, utilisation de mémoire réduite sur les serveurs, serveurs de boîte de mail Exchange, ...), cette solution ne doit jamais être implémentée sans une évaluation prudente de l’impact. L’article MS KB suivant explique comment automatiser cette tâche: http://support.microsoft.com/kb/295758/fr

    Et maintenant quelques éléments d’information:

    - Puisque cette erreur est générée par le driver HTTP.SYS, elle sera enregistrée dans HTTPERR.LOG et non pas dans un autre fichier de W3C. Afin de tracer qui est affecté, il suffit simplement de regarder l'adresse IP mentionnée dans le fichier log. Bien sûr, puisque l'information d'authentification ne peut pas être prise en charge, l’identité de l’utilisateur reste inconnue.

    - Afin d’estimer la taille du jeton pour tous type d’utilisations, et non dans ce cas précis, Microsoft met à disposition l’outil suivant : http://www.microsoft.com/downloads/details.aspx?FamilyID=4A303FA5-CF20-43FB-9483-0F0B0DAE265C&displaylang=en

    - La manière dont IIS traite les en-têtes et donc l’information relative à l’autorisation est une chose; la manière dont Windows, en général, traite les jetons de large taille en est une autre. Assurez-vous d’être consistant dans la manière dont l’authentification est traitée de bout en bout. Pour plus d’information, référez-vous à l’article MS suivant: http://www.microsoft.com/downloads/details.aspx?familyid=22DD9251-0781-42E6-9346-89D577A3E74A&displaylang=en (en anglais)

    - un bon outil de surveillance du réseau (j’aime l’appeler http://www.wireshark.org/) ainsi qu’un bon outil de troubleshooting tel que MS WFetch (http://www.microsoft.com/downloads/details.aspx?FamilyID=b134a806-d50e-4664-8348-da5c17129210&DisplayLang=en) seront de grand aide pour le troubleshooting. Comme d’habitude, MS Logparser sera votre meilleur ami lorsqu’il s’agira d’analyser des log IIS. Jetez un coup d’oeil à ce forum pour vous aider à parser et comprendre HTTPERR.LOG: http://forums.iis.net/1141.aspx ou continuez de lire ce blog pour d’autres scripts LogParser

    - Par facilité, j’utilise le terme “Kerberos” pour parler du protocole d’authentification entre un client et le serveur web. Le protocole réellement impliqué est SPNEGO ou “Négociation”, qui comporte plusieurs protocoles d’authentifications. Référez-vous à wikipedia pour plus de détails: http://en.wikipedia.org/wiki/SPNEGO

    Marc

    (traduit de l’anglais par Anthony)

    Tags:

    AD | IIS | Sécurité

    Petit Condensé de l'installation Automatisée de SharePoint (WSS3 et MOSS2007)

    by Marc 31. mars 2010 13:22

    Il existe déjà pas mal d’articles ou de de blogs traitant du sujet il est vrai. Mais ayant beaucoup travaillé pour de nombreux clients sur le sujet, j’avais envie de livrer une approche complète (toutes les étapes, y compris avant et après installation) de manière peu détaillée (lien vers de bonne sources d’informations, détaillées elles) afin de tenir dans un blog sans souffrir d’une longueur rébarbative.

    Dans l’ordre voici les étapes d’une installation complète (sans toutefois tenir compte des dépendances de type comptes techniques, Active Directory, Reverse-proxy etc…)

    Les Frameworks .Net

    Le niveau de version des Framework dépend du code qui tournera sur vos applications.

    Attention : il faudra tenir compte des redémarrages éventuels (et très probables)

    Les Frameworks supportes les paramètres d’installation /q (quiet) /norestart (empêcher le redémarrage automatique si celui-ci est requis)

    N’oubliez pas d’installer les MAJ si nécessaire. Les paramètres sont identiques pour la plupart

    IIS

    Installer IIS est relativement simple, la méthode dépendant de la version choisie :

    Configurer IIS peut se révéler complexe en fonction des éléments que l’on veut paramétrer et de la version utilisée

    SQL Server

    L’installation de SQL dépend de la version et du choix au niveau SharePoint

    Pour paramétrer SQL Server, il faut la plupart du temps recourir à des scripts en Transact-SQL exécutable à partir, par exemple, de SQLCMD (http://msdn.microsoft.com/en-us/library/ms162773.aspx) voir utiliser les SQL Management Objects (http://msdn.microsoft.com/en-us/library/ms162169.aspx et http://msdn.microsoft.com/en-us/library/dd206997.aspx) à travers PowerShell

    Les Binaires SharePoint

    L’installation des binaire consiste à installer les composants nécessaires à SharePoint grâce à une série de packages MSI. C’est à ce moment que le type de serveur peut-être spécifié : WFE (frontal) Application ou Standalone (incluant donc SQL Server). C’est également le moment ou la clé d’activation est fournie ainsi que la version exacte de MOSS (Standard ou Enterprise). Attention, la clé fournie prend le pas sur le paramètre.

    Le tout se fait grâce à la commande setup.exe et son fichier d’entrée au format XML : WSS (http://technet.microsoft.com/fr-fr/library/cc288033.aspx), MOSS (http://technet.microsoft.com/fr-fr/library/cc262897.aspx)

    Il ne faut pas oublier d’en faire de même pour la language packs (http://technet.microsoft.com/en-us/library/cc288518.aspx)

    C’est également l’occasion d’incorporer les mises à jour, grâce au répertoire « Updates » (http://technet.microsoft.com/en-us/library/cc261890.aspx)

    Créer ou joindre une ferme

    La commande PSCONFIG effectuera les mêmes opérations que l’assistant d’installation avec un avantage : pouvoir spécifier le nom de la base de données de contenu du Central Admin et dès lors éviter l’affreux GUID : http://technet.microsoft.com/fr-fr/library/cc263093.aspx

    C’est également PSCONFIG qui mettra en place l’application Central Admin.

    Paramétrage de base

    Paramétrage avancé

    Beaucoup d’éléments de configuration (liés aux SSP en particulier) ne sont hélas pas directement accessibles via STSADM en standard. Il vous faudra soit recourir à :

    Des extensions de STSADM

    Du développement .Net (applications console par ex.)

    Des scripts PowerShell s’apparentant à du développement (usage quasi identique des API)

    Toutefois, certains paramètres avancés sont accessibles avec STSADM :

    Paramétrage IIS Post-Déploiement de SharePoint

    Une fois SharePoint déployé et paramétrer, la configuration IIS peut être finalisée :

    • Les Applications Pools
    • Les Paramètres spécifiques par Web Application

    Dans les deux cas, les méthodes détaillées plus haut (section IIS) s’avèreront être suffisantes dans la plupart des cas

    Gestion de sites et Ajout de contenu

    Pour ajouter du contenu, il est préférable de toujours recourir à l’utilisation des API, soit avec une application soit avec PowerShell :

    Active Directory

    Si vous utilisez Kerberos, la commande SETSPN (http://technet.microsoft.com/en-us/library/cc773257(WS.10).aspx) facilitera le paramétrage des Service Principal Names

     

     

    Si le déploiement automatisé est un facteur clé de l’industrialisation de votre environnement SharePoint, il convient de le renforcer par un Framework de déploiement afin d’en faciliter la gestion.

    Le Microsoft Deployment Toolkit 2010 (http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx) peut s’avérer d’une aide précieuse. Il existe également des alternatives commerciales

     

    Informations additionnelles

     

    C’est tout pour aujourd’hui, à chaque jour suffisant sa Payne, Max!

    Marc

    Tags:

    AD | Administration | IIS | SharePoint | Windows | Windows Server

    Plus aucune bonne raison de de ne pas passer à IIS pour vos projets web!

    by Marc 28. février 2010 07:42

    Microsoft France frappe très fort en mettant à disposition dès maintenant et gratuitement 5.000 serveurs tout équipés jusqu’au 30 juin pour vous permettre de tester IIS ainsi que des produits de gestion de contenu web tels que Joomla, Drupal, WordPress, DotNetNuke etc dans leurs moindres détails!

    Et après le 30 juin me direz vous? Et bien c’est simple, vous pourrez soit transférer votre serveur chez vous, soit vers un hébergeur proposant des solutions basées sur IIS!

    Ma Plateforme Web

    Cette initiative sera également l'occasion pour moi de poster quelques billets concernant IIS alors n'hésitez pas à repasser pas ici de temps en temps!

    Marc

    Tags:

    IIS | Windows | Divers