joergkrause.de
Internet Information Services
Grundkurs für Softwareentwickler
Schwerpunkt Webentwicklung (HTTP Service)
Jö...
© joergkrause.de
Wer bin ich?
E-Mail:
joerg@krause.net
Profil:
de.linkedin.com/pub/joerg-krause/b/16a/a15
Twitter:
@joergi...
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
© joergkrause.de
Anti-Agenda
• Was hier nicht behandelt wird:
– Programmierung von Webanwendungen
– FTP
– SMTP
– PHP-Integ...
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
Optimierung
Architekt...
joergkrause.de
Geschichte
© joergkrause.de
Versionen
• 1.0 NT 3.5.1
• 2.0 NT 4
• 3.0 SP 1 NT 4 (ASP)
• 4.0 Option Pack NT 4
• 5.0 Windows 2000
• 5.1...
© joergkrause.de
Neues…
• 8.0 (Windows Server 2012 / Windows 8)
– Application Initialization
– Initialisierungsschritte (W...
© joergkrause.de
Neues…
• 8.5 (Windows Server 2012 R2 / Windows 8.1)
– Protokollierung in das
Windows-Ereignisprotokoll
– ...
joergkrause.de
Grundlagen
Das Wichtigste kurz zusammengefasst
© joergkrause.de
Gut zu wissen
• ISO OSI
• TCP/IP
• HTTP
• WebSockets
• Server Name Indication (SNI)
© joergkrause.de
ISO OSI-Modell
• International Organization for Standardization (ISO)
• Open Systems Interconnection (OSI...
© joergkrause.de
OSI auf TCP/IP
• Vereinfachtes Modell
• Diverse Protokoll-Stacks
Ebene Name Stack I Stack II Stack III
5 ...
© joergkrause.de
TCP/IP
• IP = Internet Protocol
– Adressierung
– IPv4
– IPv6
• TCP = Transmission Control Protocol
– Über...
© joergkrause.de
IP
• IPv4
• Adressraum 256*256*256*256 = 232
• Einteilung in Klassen
Klasse Erste Bits Präfix-Bits Netzwe...
© joergkrause.de
IP
• Punktschreibweise 0.0.0.0 nur für Menschen
• "0" reserviert für Netzwerke (mehrere Adressen)
• 255.2...
© joergkrause.de
TCP
• Ports dienen der Identifizierung von
Dienstapplikationen
Port Dienst
7 Echo
20/21 FTP
23 Telnet
25 ...
© joergkrause.de
HTTP
• Hypertext Transfer Protocol
Anforderung
(Request)
Antwort
(Response)
HTTP Client
(Browser)
HTTP Se...
© joergkrause.de
Bausteine
• Uniform Resource Locator (URL)
• HTTP
– Die Anforderung
• Verb + URL + Version
• Header
• Dat...
© joergkrause.de
Bausteine
• HTTP – Die Anforderung
GET http://www.iis.net/ HTTP/1.1
Accept: text/html, application/xhtml+...
© joergkrause.de
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 13144
Content-Type: text/html; charset=utf-8
Vary:...
© joergkrause.de
HTTP
• Eine Seite = viele Anforderungen
<html>
<head>
<link href="some.css" />
<link href="more.css" />
<...
© joergkrause.de
HTTP
• Anfragen einer Website
© joergkrause.de
• Wichtige Methoden in Web-Anwendungen
HTTP Methoden (Verben)
Methode Funktion Nutzung
GET Ressource anfo...
© joergkrause.de
HTTP Statuscodes
Codegruppe Bedeutung Erwartete Reaktion
1xx Information Empfangen, Server setzt Vorgang ...
© joergkrause.de
Wichtige Statuscodes
Code Name Einsatz
100 Continue Fortsetzen
101 Update Protokollwechsel
200 OK Anforde...
© joergkrause.de
• Client Fehler, Anforderungsfehler
Wichtige Statuscodes
Code Name Einsatz
400 Bad Request Falsche Anford...
© joergkrause.de
Wichtige Statuscodes
Code Name Einsatz
500 Internal Server Error Fehler / Ausnahme in der Serverapplikati...
© joergkrause.de
Demo
• Website abrufen
• Mit Fiddler untersuchen
• Requests verstehen
• HTTP verstehen
© joergkrause.de
WebSockets
• HTTP ist "Fire and Forget"
• HTTP muss immer vom Client getriggert werden
• Websockets erlau...
© joergkrause.de
WebSockets im Protokollstapel
• WebSockets im vereinfachten Internet-Modell
Ebene Name Stack
5 Anwendung ...
© joergkrause.de
WebSockets
• Anfordern via HTTP
• Bestätigung via StatusCode 101
GET ws://websocket.example.com/ HTTP/1.1...
© joergkrause.de
SNI
• SNI = Server Name Indication
• Ab IIS Version 8.0
• Erweiterung des TLS (Transport Layer Security) ...
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
joergkrause.de
Architektur & Arbeitsweise
Bausteine und Komponenten
© joergkrause.de
Komponenten
• Protokollempfänger (Listener)
– HTTP.sys
• Dienste (Services)
– W3SVC
– WAS
• Verwaltungswe...
© joergkrause.de
HTTP.sys
• Kernel Mode-Treiber
• HTTP und HTTPS Kommunikation
• Zertifikatsverwaltung
• Queue für den Wor...
© joergkrause.de
HTTP.sys – direkte Konfiguration
• Früher: httpcfg.exe
• Jetzt: netsh http
Kernel Mode
http.sys
User Mode...
© joergkrause.de
HTTP.sys – Zugriffsrechte
• Registrierung
Grand
IS
Administrator
?
User hat
ACL-Rechte
Deny
NEIN
NEIN
JA
...
© joergkrause.de
HTTP.sys
• Fehlerverhalten
– Worker Prozess stoppt/startet neu/ist im Fehlerzustand
– HTTP.sys queued ein...
© joergkrause.de
W3SVC und WAS
• World Wide Web Publishing Service (W3SVC)
• Windows Process Activation Services (WAS)
svc...
© joergkrause.de
Demo
• WAS und W3SVC
– im Taskmanager
– In der Dienstübersicht
© joergkrause.de
• Windows Process Activation Services
• Verwaltung der Konfiguration
– applicationHost.config
– reicht Ei...
© joergkrause.de
WAS
• Weiterreichen zum Worker Prozess
Weiterreichen der Anforderung
Listener
Adapter
WAS W3WP?
Ausführun...
© joergkrause.de
WAS
• Verwaltet die Worker Prozesse
– WAS alleine kontrolliert die Worker Prozesse
– Kommunikation via HT...
© joergkrause.de
Worker Prozess
• Verarbeitet die Anforderung
• w3wp.exe
• Selbststartend (kein Host), lang laufend, User ...
© joergkrause.de
Worker Prozess
• Ein Application Pool konfiguriert einen Worker
Prozess
Application Pool
w3wp.exe
AppDoma...
© joergkrause.de
Application Pool
• Prozessisolation, AppDomain-Isolation
• Ausführendes Konto
© joergkrause.de
Demo
• Application Pool Einstellungen
joergkrause.de
Arbeitsweise bei HTTP
Verarbeitung von Anforderungen
© joergkrause.de
Die Pipeline
• Klassisch (bis IIS 5 exklusiv, danach optional)
• Integriert (ab IIS 6)
© joergkrause.de
Die Pipeline
• Verarbeitung von Anforderungen
• Die Pipeline erzeugt Ereignisse
– Ereignis-Empfänger rufe...
© joergkrause.de
• Erst native Verarbeitung im W3SVC
• Dann Weiterleitung an aspnet_isapi.dll
• Dort wird die verwaltete U...
© joergkrause.de
> IIS 7.x
HTTP-Applikation
Request-
Handler
Request-
Handler
Request-
HandlerWorker Process
w3wp.exe
Inte...
© joergkrause.de
Vorteile der integrierten Pipeline
Request
Response
Authentifizierung
Autorisierung
Verarbeitung
Ausgabe ...
© joergkrause.de
Auf einen Blick
HTTP Protocol Stack (http.sys)
svchost.exe applicationHost.config
WAS
W3SVC
w3wp.exe
App ...
joergkrause.de
ASP.NET Integration
Die HTTP-Verarbeitung
© joergkrause.de
Bausteine der Pipeline
• Module
– Wirken auf jede Anforderung
– Merkmal: Aktiv, wenn konfiguriert
• Handl...
© joergkrause.de
Module
• Authentifizierung
• Autorisierung
• Kompression
• Cache
© joergkrause.de
Handler
• ASPX-Seitenverarbeitung
• Statische Dateien ausliefern
• Extensionless, z.B. für ASP.NET MVC
© joergkrause.de
Bausteine der Pipeline (ASP.NET)
Request Response
Pre Begin Request
Begin Request
Authenticate
Authorize
...
© joergkrause.de
Bausteine der Pipeline (MVC)
Request Response
Pre Begin Request
Begin Request
Authenticate
Authorize
Reso...
© joergkrause.de
Erweiterung der Pipeline (MVC)
Request
Response
IIS Pipeline
UrlRoutingModuleStatische Datei
Datei
gefund...
© joergkrause.de
Die Module
• ca. 30 Standardmodule
• Definition in
– %windir%system32inetsrvconfigapplicationhost.config
...
© joergkrause.de
Demo
• Module und Handler im
IIS Manager
© joergkrause.de
Übersicht Module
HTTP Protocol Support
ValidationRangeModule TraceVerbModule
OptionsVerbModule ProtocolSu...
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
joergkrause.de
Installation & Konfiguration
joergkrause.de
Installation
© joergkrause.de
Installation
• Server Manager (Windows Server 2012 R2)
© joergkrause.de
Installation
• Add Roles
– Web Server (IIS)
© joergkrause.de
Installation
• Role Services
– Elemente der Installation
joergkrause.de
Installation mit Paket-Manager
© joergkrause.de
Kommandozeile
• Kommandozeile mit angehobenen Rechten
• Neue Kommandozeile mit angehobenen Rechten
Es fol...
© joergkrause.de
Der Paket-Manager
• Automation der
– Installation von Windows-Features
– Installation von Updates / Hotfi...
© joergkrause.de
Optionen des Paket-Managers
• Wichtige Funktionen:
– /ip: Installieren
– /up: Deinstallieren
– /norestart...
© joergkrause.de
Installation mit Paket-Manager
• Beispiel für ein Installationsskript
start /w pkgmgr /ip:IIS-WebServerRo...
joergkrause.de
Installation mit PowerShell
© joergkrause.de
Installation mit der PowerShell
• PowerShell CommandLets:
– Install-WindowsFeature
(Alias: Add-WindowsFea...
© joergkrause.de
Installation mit der PowerShell
• Alternativ auch Paket-Manager via PowerShell:
$packages = "IIS-WebServe...
© joergkrause.de
Vorbereitung der PowerShell
• CommandLets nicht verfügbar?
import-module ServerManager
© joergkrause.de
Installation mit der PowerShell
• Interaktiv via ISE (Integrated Scripting Environment)
Skript-Editor
She...
© joergkrause.de
Informationen abrufen
Get-WindowsFeature -Name web-server | Format-List -Property *
© joergkrause.de
Rollen installieren
Install-WindowsFeature -Name Web-Server
Neustart erforderlich?
Befehl erfolgreich
© joergkrause.de
Features
• Verwaltungswerkzeuge:
Install-WindowsFeature -Name Web-Mgmt-Tools
• Wenn man alle Features hab...
© joergkrause.de
Weitere Installationselemente
• Fernwartung (remote Zugriff auf IIS-Manager)
• Standardpfade der Sites (s...
© joergkrause.de
Beispielskript
#$Policy = "Unrestricted"
$Policy = "RemoteSigned"
If ((get-ExecutionPolicy) -ne $Policy) ...
© joergkrause.de
Demo
• Rollen mit PowerShell
installieren
joergkrause.de
Hinweise zur Installation
© joergkrause.de
Was ist bei der Installation wichtig?
• Sorgfältige Auswahl der Module
• Weniger Module heißt
– weniger A...
© joergkrause.de
Installation
• Module, die explizit installiert werden (können):
– HTTP:
• Default Document
• Directory B...
© joergkrause.de
Installation
• Module, die explizit installiert werden (Fortsg.):
– Performance:
• Static Content Compres...
© joergkrause.de
Installation
• Module, die explizit installiert werden (Fortsg.):
– FTP
– Web Core
– Management Tools
© joergkrause.de
Demo
• IIS-Module nachinstallieren
• Installationsskript exportieren
• Installation überprüfen
joergkrause.de
Konfiguration
© joergkrause.de
WAS Konfiguration
• Global
• Protokoll
• Application Pools
• Sites
© joergkrause.de
Konfiguration
web.config
Virtual Directory
web.config
Sub Directory
web.config
Application
web.config
Sub...
© joergkrause.de
Speicherort der Dateien
• machine.config
• web.config
• applicationHost.config
© joergkrause.de
Konfigurationsschema
• XML basiert
• Delegierbar
• Vererbung steuerbar
• Zugriff über
– Editor
– IIS Mana...
© joergkrause.de
Konfigurationsschema
• Standardmäßig sind…
– …alle IIS Abschnitte gesperrt, außer:
• Default Document
• D...
© joergkrause.de
Konfigurationsschema
• Delegierung heißt:
– Konfiguration sperren, “overrideMode”
– ACLs auf alle Dateien...
© joergkrause.de
Konfigurationsschema
• Elemente sperren
• Beispiel:
lockElements="providers,element1,element2"
lockAllEle...
© joergkrause.de
Konfigurationsschema
• Attribute sperren
lockAttributes="attribute1,attribute2,attribute3"
lockAllAttribu...
© joergkrause.de
Konfigurationsschema
• Oft sind Listen erforderlich (Collections)
• Beispiel: Provider
• Listen haben Ste...
© joergkrause.de
Konfigurationsschema
• Sperren der Elemente zum Entfernen
• Sperren von einzelnen Elementen einer Collect...
© joergkrause.de
Konfigurationsschema
• Schema-Datei (XML Schema, XSD):
• Konfiguration ist Case Sensitive
– Gilt auch für...
© joergkrause.de
Demo
• Konfiguration anschauen:
– machine.config
– web.config
– applicationHost.config
© joergkrause.de
Gemeinsame Konfiguration
• Load Balancer
• Serverfarmen / Fail Over Cluster
• Migrationsszenarien
applica...
© joergkrause.de
Gemeinsame Konfiguration
• Wie kommt die applicationHost.config auf den
gemeinsamen Server?
– Exportfunkt...
© joergkrause.de
Gemeinsame Konfiguration
1. MMC Funktion
2. Pfadeinstellungen
© joergkrause.de
Gemeinsame Konfiguration
• Auswirkung auf die Konfigurationsdatei:
• Mit Domänen-User:
<configSections>
<...
© joergkrause.de
Demo
• Konfiguration verteilen:
– User einrichten (Nicht-Domäne)
– Konfiguration exportieren
– Konfigurat...
joergkrause.de
Administration & Werkzeuge
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
© joergkrause.de
Allgemeine Hinweise
• Nur installieren, was benötigt wird
– Angriffsfläche reduzieren
– Speicherbedarf ve...
joergkrause.de
Application Pool, Site, Bindung
© joergkrause.de
Application Pool
Allgemein
Leistung
Überwachung
© joergkrause.de
Sites und ihre Bausteine
• Site
– Applikation
– Bindung
– Virtuelle Verzeichnisse
• Container für
– Appli...
© joergkrause.de
Site: Definition
<sites>
<site name="Default Web Site" id="1">
<application path="/">
<virtualDirectory p...
© joergkrause.de
Bindung
• Definiert den physikalischen Endpunkt
• Besteht aus:
– Adresse (Wo?)
– Protokoll (Wie?)
© joergkrause.de
Bindung: Adresse
• Je nach Protokoll
• Bei HTTP / HTTPS:
– IP (oder * zur Bindung an alle physischen Adre...
© joergkrause.de
Besonderheit Host Header
• Typischer HTTP-Request:
• Header "Host" liefert die Host-Information
• DNS bin...
© joergkrause.de
Besonderheit Host Header
• Durchleitung der Anfrage-Informationen
• Spart öffentliche IP-Adressen
• DNS i...
© joergkrause.de
Applikationen
• Gruppe von Dateien, die Inhalte liefern
• Pfad zur Applikation ist Teil des URL der Site
...
© joergkrause.de
Virtuelles Verzeichnis
• Pfad im IIS der einen externen Teil des URL auf
einen physikalischen Pfad auf de...
joergkrause.de
Werkzeuge
Administration der IIS
© joergkrause.de
Übersicht
• IIS Manager (MMC GUI)
• Kommandozeile
– CMD: appcmd.exe
– PS1: IIS CommandLet
• Code
– WMI Sc...
© joergkrause.de
Eigenschaften
• IIS und ASP.NET gemeinsam verwalten
• Eine Datenbasis für alle Werkzeuge
• Administration...
© joergkrause.de
IIS Manager
• Grafische Oberfläche via Management Console
• Fernzugriff auf Server (über HTTP)
• Erweiter...
© joergkrause.de
Globale Konfiguration
• Generischer Editor
• Funktionsdelegation
• Zugriffsrechte auf MMC (nur Site-Ebene...
© joergkrause.de
Remote Zugriff
• Freigabe
• Authentifizierung
• Verbindung
• Verschlüsselung
• Protokollierung
• IP-Besch...
© joergkrause.de
Administrationsskripte
Besser immer mit Skript
© joergkrause.de
Kommandozeile
• Für Batch-Dateien
• appcmd.exe
• Syntax:
– appcmd (cmd) (object) <identifier> < /param:va...
© joergkrause.de
C:> appcmd list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2...
© joergkrause.de
C:> appcmd list config /section:? | findstr system.webServer
system.webServer/globalModules
system.webSer...
© joergkrause.de
set appcmd=%systemroot%system32inetsrvAPPCMD.EXE
%appcmd% add site /name:MyNewSite /bindings:"http/*:81:"...
© joergkrause.de
Demo
• Batch erstellen:
– Application Pool
– Site
– Einstellungen Protokoll etc.
© joergkrause.de
PowerShell
• Muss als Admin laufen
• Bis IIS7 separate Installation
• Ab IIS 8 Teil des Windows Betriebss...
© joergkrause.de
Demo
• Skript erstellen:
– Application Pool
– Site
– Einstellungen Protokoll etc.
© joergkrause.de
Programmierung
• Verwaltete API für IIS
– Microsoft.Web.Administration
– Typisiert für IIS-Objekte (Pool,...
© joergkrause.de
Programmierung
ServerManager iisManager = new ServerManager();
foreach(WorkerProcess w3wp in iisManager.W...
© joergkrause.de
Demo
• Kommandozeile erstellen:
– Application Pool
– Site
– Einstellungen Protokoll etc.
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
joergkrause.de
Sicherheit
Absichern einer IIS-Installation
Verschlüsseln von Verbindungen
Beschränken von Verbindungen
Ver...
joergkrause.de
TLS (SSL)
© joergkrause.de
TLS (SSL) Einrichten
• TLS = Transport Layer Security
– (früher SSL = Secure Socket Layer)
– Seit SSL 3.0...
© joergkrause.de
Grundlagen Verschlüsselung
• Der Weg vom Sender zum Empfänger
• Problem:
Wie kommt der Schlüssel zum Empf...
© joergkrause.de
Grundlagen Verschlüsselung
• Lösung: Asymmetrische Kryptografie
Öffentlicher
Schlüssel
Daten
Daten
versch...
© joergkrause.de
Grundlagen Verschlüsselung
• Asymmetrische Verfahren sind aufwändig
– (RSA ca. Faktor 1000 langsamer als ...
© joergkrause.de
Grundlagen Verschlüsselung
• Zertifikat
– digitaler Datensatz mit Eigenschaften
– Standard für Zertifikat...
© joergkrause.de
Grundlagen der Verschlüsselung
• Dateierweiterungen
– .CER – DER- oder Base64-kodiertes Zertifikat
– .CRT...
© joergkrause.de
Grundlagen Verschlüsselung
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm...
© joergkrause.de
Grundlagen Verschlüsselung
• Begriffe (Auswahl):
– PKI = Public Key Infrastructure
• System zum Herausgeb...
© joergkrause.de
-----BEGIN CERTIFICATE-----
MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox
DTALBgNVBAgT...
© joergkrause.de
Zertifikat beschaffen
Root CA
Intermediate CA Intermediate CA Intermediate
Issuing CAs Issuing CAs Issuin...
joergkrause.de
SSL in den IIS
Einrichtung und Konfiguration
© joergkrause.de
Vorbereitung
• Wahl des Zertifikats:
– Valid From und Valid To gültig / sinnvoll?
– Common Name (CN) pass...
© joergkrause.de
Testzertifikat
• "Self Signed"
• Test-Root-Zertifikat und Test-Zertifikat mit makecert
• Test-Zertifikat ...
© joergkrause.de
Testzertifikat mit makecert
• Anlegen und Speichern eines Testzertifikats
makecert -r
-pe
-n "CN=www.your...
© joergkrause.de
OID
• Object Identifier
– Baum mit Objektbeschreibungswerten
– Private Knoten (kostenlose Registrierung) ...
© joergkrause.de
OID
• So entsteht die OID
1. ISO
3. Identified Organization
6. dod (US department of defence)
1. Internet...
© joergkrause.de
Aktuelle Konfiguration
• Entscheidend ist http.sys!
netsh http show sslcert
© joergkrause.de
Konfiguration
• SSL optional oder zwingend
© joergkrause.de
Bindungen
• Standard-Port für SSL: 443
• Einstellungen Via IIS Manager / Skript / .NET
• Konfiguration:
<...
© joergkrause.de
Ablauf
• Zwei Plätze:
1. Bindungsinformationen in applicationHost.config
2. Assoziierte SSL-Konfiguration...
© joergkrause.de
Kommandozeile
appcmd.exe
set config -section:system.applicationHost/sites
/siteDefaults.bindings
.[protoc...
© joergkrause.de
.NET-Code
• Ausführung in einer Konsolenapplikation
using (ServerManager serverManager = new ServerManage...
© joergkrause.de
Demo
• Zertifikat erstellen
• Installieren
• Testen
© joergkrause.de
Konfiguration verschlüsseln
© joergkrause.de
Demo
• Konfiguration schützen
© joergkrause.de
Beschränken von Verbindungen
• Authentifizierung
• Autorisierung:
– IP-Beschränkungen
– URL Autorisierung...
© joergkrause.de
Authentifizierung & Autorisierung
1. Authentifizierung
– Wer bist du?
– Diverse Verfahren
2. Autorisierun...
© joergkrause.de
Authentifizierung
Methode Anmeldeverfahren Benutzerdatenbank
Anonymer Zugriff Keines AD, lokales Konto
Ba...
© joergkrause.de
Das "anonyme" Konto
• Keine Operation ohne Identität
• Die anonymen Zugriffe laufen unter IUSR ab
• IUSR ...
© joergkrause.de
IUSR
• IUSR
– Kein Kennwort ("built in")
– Für Gastzugang einfach ACL auf IUSR setzen (Read)
– Kennwort k...
© joergkrause.de
Start
Authentifizierungsablauf
Anonym
?
Start
Impersonate
IUSR
Send 401
Per-
missions
OK?
200 OK
Other
Au...
joergkrause.de
Beschränkungen
Auswahl der wichtigsten
Sicherheitsbeschränkungen
© joergkrause.de
IP-Beschränkungen
• Standard:
– IP oder IP-Bereich
– Explizit erlauben oder explizit verbieten
• Erweiter...
© joergkrause.de
URL-Autorisierung
• Zugriffsbeschränkungen durch URLs
• Ersetzt Beschränkungen durch ACLs
• Funktion "Aut...
© joergkrause.de
URL-Autorisierung
• In der web.config der Anwendung
• Element <location> ist das Elternelement
<location ...
© joergkrause.de
Anforderungsfilter
• Standardbeschränkungen:
– Kritische Dokumente sind ausgefiltert (Configs, DLLs, …)
•...
© joergkrause.de
Anforderungsfilter
• Beispiel Kommandozeile
• Im IIS-Manager (MMC)
appcmd set config /section:requestfilt...
© joergkrause.de
Anforderungsfilter
• Spezifische Fehler bei Verstoß gegen die Regeln
URL Sequenz verboten 404.5
Verb verb...
joergkrause.de
Checklisten zum Härten
Härten einer IIS-Installation
© joergkrause.de
IIS Absichern (Checkliste I)
• Verzeichniszugriff
– Beschränkungen anonym zugreifbarere Verzeichnisse
– I...
© joergkrause.de
IIS Absichern (Checkliste II)
• Konfiguration
– DEBUG OFF in web.config
– TRACE FALSE in web.config
– Nic...
© joergkrause.de
IIS Absichern (Checkliste III)
• Sicherung der Kommunikation
– HTTPS aktiviert
– Zertifikate aktuell, ver...
© joergkrause.de
IIS Absichern (Checkliste IV)
• Protokollierung und Überwachung
– Misslungene Anmeldeversuche regelmäßig ...
© joergkrause.de
IIS Absichern (Checkliste V)
• Konten
– Verwaltete Konten für Application Pools
– IUSR abgeschaltet
– Ano...
© joergkrause.de
IIS Absichern (Checkliste VI)
• ASP.NET
– State Service aus (speziell bei MVC)
• System
– WebDAV aus
– FT...
© joergkrause.de
Hilfreiche Werkzeuge
• Microsoft Security Compliance Manager 3.0
• SQL Server Express benötigt
• Nicht nu...
© joergkrause.de
Security Compliance Manager 3.0
• Liste von Einstellungen über alle Produkte
• Empfehlung und Erklärung z...
© joergkrause.de
Agenda
1 2 3 4 5 6
Geschichte
+
Grundlagen
Installation
+
Konfiguration
Fehlersuche
+
Optimierung
Archite...
joergkrause.de
Fehlersuche
© joergkrause.de
Werkzeuge
• Fiddler (Telerik, Freeware)
• LogParser 2.2
• Microsoft Network Monitor 3.4
• Wireshark
• SSL...
© joergkrause.de
HTTP Diagnose
• Pakete korrekt?
• Bandbreite okay?
• Authentifizierung passt?
• Verschlüsselung aktiv?
• ...
joergkrause.de
Optimierung
© joergkrause.de
Verstehen
• Einfluss auf Performance des Servers:
– Bandbreite
– Anzahl HTTP-Requests
• Einfluss im Brows...
© joergkrause.de
Timeline
DNS
Request
Transfer
Server
Processing
Transfer
Response
Processing
150 ms
50 ms
200 ms
100 ms
5...
© joergkrause.de
Timeline
DNS
Request
Transfer
Server
Processing
Transfer
Response
Processing
150 ms
50 ms
200 ms
100 ms
5...
© joergkrause.de
Tools
• Fiddler (Telerik)
• F12 (IE, Chrome), Firebug (Firefox)
– Profiler
– Netzwerk
– CSS
– HTML
– Java...
© joergkrause.de
IIS/Server-Optimierung
• Pipeline Optimierung
• Prozess Konfiguration Optimierung
• CDN
© joergkrause.de
Pipeline Optimierung
• Ziel:
– Schnellere Verarbeitung
• Vorgehensweise:
– Entfernen nicht benutzter Modu...
© joergkrause.de
Pipeline Optimierung
© joergkrause.de
Prozesskonfiguration
• Ziel:
– Optimale Nutzung von Ressourcen
• Vorgehensweise:
– Anpassen der Prozessko...
© joergkrause.de
Prozesskonfiguration
• maxWorkerThreads: 20 pro Kern (4 Kerne == 80 Threads)
– Höher möglich, wenn wenige...
© joergkrause.de
Verbindungskonfiguration
• Anzahl gleichzeitiger Verbindungen zu einer IP-
Adresse:
– Standard 2
– Höhere...
© joergkrause.de
• Ziel:
– Schnellere Requests
– Weniger Latenz
• Technik:
– CDN nutzen
?
CDN (Content Delivery Network)
© joergkrause.de
• Für allgemeine Dateien, wie jQuery, Knockout etc.
bietet sich Microsoft, Google etc. an
CDN (Content De...
© joergkrause.de
• Für eigene gibt es kostenpflichtige Dienste
– Cachefly (einfach, Upload/Distribute)
– EdgeCast (komplex...
© joergkrause.de
Fragen
www.joergkrause.de
Nächste SlideShare
Wird geladen in …5
×

Internet Information Services (deutsch)

1.177 Aufrufe

Veröffentlicht am

Eine kompakte Einführung in die aktuellen IIS

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Internet Information Services (deutsch)

  1. 1. joergkrause.de Internet Information Services Grundkurs für Softwareentwickler Schwerpunkt Webentwicklung (HTTP Service) Jörg Krause Berater, Trainer, Autor
  2. 2. © joergkrause.de Wer bin ich? E-Mail: joerg@krause.net Profil: de.linkedin.com/pub/joerg-krause/b/16a/a15 Twitter: @joergisageek Profilname: www.xing.com/profile/Joerg_Krause6 About.me: joerg.krause Web: www.joergkrause.de www
  3. 3. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit
  4. 4. © joergkrause.de Anti-Agenda • Was hier nicht behandelt wird: – Programmierung von Webanwendungen – FTP – SMTP – PHP-Integration – Common Gateway Interface, CGI / FastCGI – DNS / DHCP – Windows Server allgemein
  5. 5. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit
  6. 6. joergkrause.de Geschichte
  7. 7. © joergkrause.de Versionen • 1.0 NT 3.5.1 • 2.0 NT 4 • 3.0 SP 1 NT 4 (ASP) • 4.0 Option Pack NT 4 • 5.0 Windows 2000 • 5.1 Windows XP • 6.0 Windows Server 2003, XP Pro 64Bit • 7.0 Windows Server 2008, Vista • 7.5 Windows Server 2008 R2, Windows 7 • 8.0 Windows Server 2012, Windows 8 • 8.5 Windows Server 2012 R2, Windows 8.1 Aktuell Redesign
  8. 8. © joergkrause.de Neues… • 8.0 (Windows Server 2012 / Windows 8) – Application Initialization – Initialisierungsschritte (Warm-up) – Konfiguration für ASP.NET 4.5 angepasst – Mehr Leistungsbegrenzungsoptionen (Throttling) für Sandbox- und Testumgebungen – Dynamische Beschränkung von IP-Adressen – WebSocket-Protokoll – Server Name Indication (SNI) und Multi-Tenant SSL Deployment – Präventation gegen Angriffe auf FTP-Kennwörter (nur FTP-Server)
  9. 9. © joergkrause.de Neues… • 8.5 (Windows Server 2012 R2 / Windows 8.1) – Protokollierung in das Windows-Ereignisprotokoll – Mehr Logging-Optionen, z.B. eigene Felder möglich für: • Request Header – If-Match, Proxy-Authorization, Max-Forwards • Response Header – Last-Modified, ETag • Server Variable – ALL_RAW, REMOTE_HOST, SCRIPT_NAME – Dynamische Site-Aktivierung – Suspend für Worker-Prozess (vorher nur Terminierung) bei Erreichen des Schwellwertes
  10. 10. joergkrause.de Grundlagen Das Wichtigste kurz zusammengefasst
  11. 11. © joergkrause.de Gut zu wissen • ISO OSI • TCP/IP • HTTP • WebSockets • Server Name Indication (SNI)
  12. 12. © joergkrause.de ISO OSI-Modell • International Organization for Standardization (ISO) • Open Systems Interconnection (OSI) Modell Schicht Name Protokolle Einheiten 7 Anwendung HTTP, FTP Daten 6 Darstellung 5 Sitzung 4 Transport TCP, UDP Segmente 3 Vermittlung ICMP, IP Pakete 2 Sicherung Ethernet Frames 1 Bitübertragung Bits
  13. 13. © joergkrause.de OSI auf TCP/IP • Vereinfachtes Modell • Diverse Protokoll-Stacks Ebene Name Stack I Stack II Stack III 5 Anwendung HTTP, FTP DHCP, DNS PING 4 Transport TCP UDP ICMP 3 Internet IP 2 Netzwerk ARP 1 Physikalisch / Link Ethernet
  14. 14. © joergkrause.de TCP/IP • IP = Internet Protocol – Adressierung – IPv4 – IPv6 • TCP = Transmission Control Protocol – Übertragung – Dienst über Port
  15. 15. © joergkrause.de IP • IPv4 • Adressraum 256*256*256*256 = 232 • Einteilung in Klassen Klasse Erste Bits Präfix-Bits Netzwerke Suffix-Bits Hosts/NW A 0xxx 7 128 24 16.777.216 B 10xx 14 16.384 16 65.536 C 110x 21 2.097.152 8 256 D 1110 Multicast E 1111 Reserviert
  16. 16. © joergkrause.de IP • Punktschreibweise 0.0.0.0 nur für Menschen • "0" reserviert für Netzwerke (mehrere Adressen) • 255.255.0.0 ist ein Netzwerk (als Maske) • 123.117.11.76 mit der Maske 255.255.0.0 ist – das Netzwerk 123.117.0.0 – mit dem Host 11.76 (2892)
  17. 17. © joergkrause.de TCP • Ports dienen der Identifizierung von Dienstapplikationen Port Dienst 7 Echo 20/21 FTP 23 Telnet 25 SMTP 53 DNS 80 HTTP Standard 443 HTTPS Standard (SSL)
  18. 18. © joergkrause.de HTTP • Hypertext Transfer Protocol Anforderung (Request) Antwort (Response) HTTP Client (Browser) HTTP Server (IIS)
  19. 19. © joergkrause.de Bausteine • Uniform Resource Locator (URL) • HTTP – Die Anforderung • Verb + URL + Version • Header • Daten – Die Antwort • Version + Statuscode + Statustext • Header • Daten protocol://hostname:port/path-and-file-name
  20. 20. © joergkrause.de Bausteine • HTTP – Die Anforderung GET http://www.iis.net/ HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: de-DE,en-US;q=0.5 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) Accept-Encoding: gzip, deflate Host: www.iis.net DNT: 1 Proxy-Connection: Keep-Alive Cookie: omniID=1418555811742_52c0_810f_7d07_8c863dc10d32; Leerzeile
  21. 21. © joergkrause.de HTTP/1.1 200 OK Cache-Control: private Content-Length: 13144 Content-Type: text/html; charset=utf-8 Vary: Accept-Encoding Server: Microsoft-IIS/8.0 X-Powered-By: ARR/2.5 X-Powered-By: ASP.NET Date: Tue, 30 Dec 2014 11:45:31 GMT <!DOCTYPE HTML> Bausteine • HTTP – Die Antwort Leerzeile
  22. 22. © joergkrause.de HTTP • Eine Seite = viele Anforderungen <html> <head> <link href="some.css" /> <link href="more.css" /> <script src="active.js"> </head> <body> <img src="figure.png" /> </body> </html> Anforderung (Request) Antwort (Response) Anforderung (Request) Antwort (Response) Anforderung (Request) Antwort (Response) Anforderung (Request) Antwort (Response)
  23. 23. © joergkrause.de HTTP • Anfragen einer Website
  24. 24. © joergkrause.de • Wichtige Methoden in Web-Anwendungen HTTP Methoden (Verben) Methode Funktion Nutzung GET Ressource anfordern HTTP, REST HEAD Kopfzeile analog zu GET anfordern HTTP POST Daten zum Webserver senden HTTP, REST PUT Daten auf dem Webserver speichern HTTP, REST DELETE Ressource löschen REST TRACE Diagnosedaten anfordern allgemein OPTIONS Liste der unterstützten Methoden anfordern allgemein CONNECT Verbindung durch Proxy anfordern allgemein
  25. 25. © joergkrause.de HTTP Statuscodes Codegruppe Bedeutung Erwartete Reaktion 1xx Information Empfangen, Server setzt Vorgang fort 2xx Erfolg Empfangen und verarbeitet, verstanden, bedient 3xx Umleitung Der Client wird zu einer Aktion aufgefordert 4xx Client Fehler Anfrage konnte nicht bedient/verstanden werden 5xx Server Fehler Der Server konnte wegen Fehlern nicht antworten • Statusgruppen
  26. 26. © joergkrause.de Wichtige Statuscodes Code Name Einsatz 100 Continue Fortsetzen 101 Update Protokollwechsel 200 OK Anforderung erledigt 301 Moved Permanently Dauerhaft neuer Ort 302 Moved Temporarily Zeitweilig neuer Ort 304 Not Modified Ressource unverändert • Information, Bestätigung, Aufforderung
  27. 27. © joergkrause.de • Client Fehler, Anforderungsfehler Wichtige Statuscodes Code Name Einsatz 400 Bad Request Falsche Anforderung 401 Authentication Required Anmeldung erforderlich 403 Forbidden Geschützt, Anmeldung fehlgeschlagen 404 Not Found Nicht gefunden 405 Method Not Allowed Methode nicht erlaubt 408 Timeout Zeit abgelaufen 414 URI too Large Adresszeile zu lang
  28. 28. © joergkrause.de Wichtige Statuscodes Code Name Einsatz 500 Internal Server Error Fehler / Ausnahme in der Serverapplikation 501 Method Not Implemented Methode unbekannt, z.B. "Get" statt "GET" 502 Bad Gateway Proxy oder Gateway sendet unbekannte Anfrage 503 Service Unavailable Der bedienende Dienst ist nicht verfügbar 504 Gateway Timeout Proxy oder Gateway reagiert nicht • Serverfehler
  29. 29. © joergkrause.de Demo • Website abrufen • Mit Fiddler untersuchen • Requests verstehen • HTTP verstehen
  30. 30. © joergkrause.de WebSockets • HTTP ist "Fire and Forget" • HTTP muss immer vom Client getriggert werden • Websockets erlauben bidirektionale Verbindungen • Websockets Schema: – ws:// – wss:// (Verschlüsselt) • Im IIS ab 8.0 • Im Browser ab IE 10, Chrome, Firefox, Safari
  31. 31. © joergkrause.de WebSockets im Protokollstapel • WebSockets im vereinfachten Internet-Modell Ebene Name Stack 5 Anwendung WebSocket 4 Transport TCP 3 Internet IP 2 Netzwerk ARP 1 Physikalisch / Link Ethernet
  32. 32. © joergkrause.de WebSockets • Anfordern via HTTP • Bestätigung via StatusCode 101 GET ws://websocket.example.com/ HTTP/1.1 Origin: http://example.com Connection: Upgrade Host: websocket.example.com Upgrade: websocket HTTP/1.1 101 WebSocket Protocol Handshake Date: Wed, 16 Oct 2013 10:07:34 GMT Connection: Upgrade Upgrade: WebSocket
  33. 33. © joergkrause.de SNI • SNI = Server Name Indication • Ab IIS Version 8.0 • Erweiterung des TLS (Transport Layer Security) Protokolls • Ablauf einer gesicherten Verbindung: – Browser fordert Zertifikat an – Browser vergleicht URL mit der des Zertifikats – Passt das wird normal weiterverfahren • Mit SNI sendet der Browser die Anforderungsdaten sofort mit  der Server kann das passende Zertifikat auswählen • Spart individuelle IP-Adressen für SSL-Sites • Mehrere Zertifikate auf einer IP-Adresse
  34. 34. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit
  35. 35. joergkrause.de Architektur & Arbeitsweise Bausteine und Komponenten
  36. 36. © joergkrause.de Komponenten • Protokollempfänger (Listener) – HTTP.sys • Dienste (Services) – W3SVC – WAS • Verwaltungswerkzeuge (MMC, PowerShell, …)
  37. 37. © joergkrause.de HTTP.sys • Kernel Mode-Treiber • HTTP und HTTPS Kommunikation • Zertifikatsverwaltung • Queue für den Worker Prozess • Cache für ausgehende Daten (Response) http.sys Response CacheApp Pool Queue App Pool Queue App Pool Queue
  38. 38. © joergkrause.de HTTP.sys – direkte Konfiguration • Früher: httpcfg.exe • Jetzt: netsh http Kernel Mode http.sys User Mode HTTP Server API httpcfg.exe netsh http IIS Listener
  39. 39. © joergkrause.de HTTP.sys – Zugriffsrechte • Registrierung Grand IS Administrator ? User hat ACL-Rechte Deny NEIN NEIN JA URL Register allowed? Best Match for URL Grand JA
  40. 40. © joergkrause.de HTTP.sys • Fehlerverhalten – Worker Prozess stoppt/startet neu/ist im Fehlerzustand – HTTP.sys queued eingehende Anfragen (Requests) – HTTP.sys bedient Anfragen ggf. mit Fehlercode (500) – HTTP.sys wartet, bis der Worker Prozess wieder aktiv ist Request WP aktiv? Aktion Queue WP aktiv? 500 JA NEIN NEIN JA Warten Response
  41. 41. © joergkrause.de W3SVC und WAS • World Wide Web Publishing Service (W3SVC) • Windows Process Activation Services (WAS) svchost.exe W3SVC WAS Leistungs- überwachung HTTP.sys Verwaltung Prozess- Verwaltung Listener Adapter Interface Konfigurations- verwaltung http:// net.tcp://
  42. 42. © joergkrause.de Demo • WAS und W3SVC – im Taskmanager – In der Dienstübersicht
  43. 43. © joergkrause.de • Windows Process Activation Services • Verwaltung der Konfiguration – applicationHost.config – reicht Einstellungen an den W3SVC weiter – W3SVC konfiguriert den HTTP.sys Weiterreichen der Konfiguration WAS applicationHost.config WAS HTTP.sysW3SVC
  44. 44. © joergkrause.de WAS • Weiterreichen zum Worker Prozess Weiterreichen der Anforderung Listener Adapter WAS W3WP? Ausführung Applikation Ja Nein App Pool Factory http:// net.tcp:// W3SVC HTTP.sys
  45. 45. © joergkrause.de WAS • Verwaltet die Worker Prozesse – WAS alleine kontrolliert die Worker Prozesse – Kommunikation via HTTP wird vom W3SVC an WAS geleitet – Mapping der Application Pools zu Worker Prozessen – Startet neue Worker Prozesse bei Bedarf – Nutzt Listener Adapter für alle Anfragen außer HTTP – Nutzt W3SVC für HTTP, dieser nutzt HTTP.sys intern – WAS kümmert sich um die gesamte Konfiguration
  46. 46. © joergkrause.de Worker Prozess • Verarbeitet die Anforderung • w3wp.exe • Selbststartend (kein Host), lang laufend, User Mode • Kernfunktionen eines Webservers – Anforderung  Verarbeitung  Antwort • Bedient immer einen Application Pool – Der Pool konfiguriert den Worker Prozess – Der Pool gruppiert Worker Prozesse gleicher Konfiguration
  47. 47. © joergkrause.de Worker Prozess • Ein Application Pool konfiguriert einen Worker Prozess Application Pool w3wp.exe AppDomain AppDomain Application Pool w3wp.exe Application Pool w3wp.exe AppDomain AppDomain AppDomain Sonderfall WebGarden AppDomain
  48. 48. © joergkrause.de Application Pool • Prozessisolation, AppDomain-Isolation • Ausführendes Konto
  49. 49. © joergkrause.de Demo • Application Pool Einstellungen
  50. 50. joergkrause.de Arbeitsweise bei HTTP Verarbeitung von Anforderungen
  51. 51. © joergkrause.de Die Pipeline • Klassisch (bis IIS 5 exklusiv, danach optional) • Integriert (ab IIS 6)
  52. 52. © joergkrause.de Die Pipeline • Verarbeitung von Anforderungen • Die Pipeline erzeugt Ereignisse – Ereignis-Empfänger rufen die zugeordneten Module auf – Module erzeugen dann die Antwort • Integriert meint: – ASP.NET und IIS haben ein gemeinsames Event-Modell – Verwaltete Module (.NET) für alle Anforderungen
  53. 53. © joergkrause.de • Erst native Verarbeitung im W3SVC • Dann Weiterleitung an aspnet_isapi.dll • Dort wird die verwaltete Umgebung aufgerufen Nicht verwalteter Code Verwalteter Code > IIS 7.x ISAPI HTTP-Applikation Request- Handler Request- Handler Request- Handler aspnet_isapi.dll Worker Prozess w3wp.exe ISAPI Klassische Pipeline
  54. 54. © joergkrause.de > IIS 7.x HTTP-Applikation Request- Handler Request- Handler Request- HandlerWorker Process w3wp.exe Integrierte Pipeline • Ein Übergang am Anfang • Ein Übergang am Ende
  55. 55. © joergkrause.de Vorteile der integrierten Pipeline Request Response Authentifizierung Autorisierung Verarbeitung Ausgabe Cache Übergänge sind String-Operationen C++: ABCDEF0 .NET: 6ABCDEF Null-Terminiert Anzahl Zeichen Jeder Übergang ist teuer!
  56. 56. © joergkrause.de Auf einen Blick HTTP Protocol Stack (http.sys) svchost.exe applicationHost.config WAS W3SVC w3wp.exe App Module Module Module User Mode Kernel Mode Internet
  57. 57. joergkrause.de ASP.NET Integration Die HTTP-Verarbeitung
  58. 58. © joergkrause.de Bausteine der Pipeline • Module – Wirken auf jede Anforderung – Merkmal: Aktiv, wenn konfiguriert • Handler – Bedienen bestimmte Anforderungen – Merkmal: Aktiv, wenn durch Dateierweiterung erreicht
  59. 59. © joergkrause.de Module • Authentifizierung • Autorisierung • Kompression • Cache
  60. 60. © joergkrause.de Handler • ASPX-Seitenverarbeitung • Statische Dateien ausliefern • Extensionless, z.B. für ASP.NET MVC
  61. 61. © joergkrause.de Bausteine der Pipeline (ASP.NET) Request Response Pre Begin Request Begin Request Authenticate Authorize Resolve Cache Map Handler Aquire State Pre Execute Handler Execute Handler End Request Log Request Update Cache Release State Handler Managed Unmanaged ASPX ASHX FastCGI Static File
  62. 62. © joergkrause.de Bausteine der Pipeline (MVC) Request Response Pre Begin Request Begin Request Authenticate Authorize Resolve Cache Map Handler Aquire State Pre Execute Handler Execute Handler End Request Log Request Update Cache Release State Handler Managed IHttpHandler RoutingModule
  63. 63. © joergkrause.de Erweiterung der Pipeline (MVC) Request Response IIS Pipeline UrlRoutingModuleStatische Datei Datei gefunden? RouteTable.RoutesCustom Route Handler Custom IHttpHandler MvcRouteHandler ControllerFactory Action Method ActionResultKein ViewResult IViewEngine View Engine Direkte Ausgabe Eigene ViewEngine Standard ViewResult Routing Controller Controller Action Execution View Renderer
  64. 64. © joergkrause.de Die Module • ca. 30 Standardmodule • Definition in – %windir%system32inetsrvconfigapplicationhost.config • Teils nativ (unmanaged), teils verwaltet (managed) – nativ  C++ / ISAPI – verwaltet  .NET
  65. 65. © joergkrause.de Demo • Module und Handler im IIS Manager
  66. 66. © joergkrause.de Übersicht Module HTTP Protocol Support ValidationRangeModule TraceVerbModule OptionsVerbModule ProtocolSupportModule Logging and Diagnostics HttpLoggingModule CustomLoggingModule Configuration and Metadata Caches TokenCacheModule UriCacheModule SiteCacheModule FileCacheModule Core Web Server DirectoryListingModule CustomErrorModule DynamicCompressionModule StaticCompressionModule StaticFileModule DefaultDocumentModule HttpCacheModule RequestMonitorModule TracingModule Authent./Author. BasicAuthModule DigestAuthModule WindowsAuthModule CertificateAuthModule AnonymousAuthModule AccessCheckModule UrlAuthorizationModule Extensibility ISAPIModule ISAPIFilterModule CGIModule ServerSideIncludeModule ManagedEngineModule Publishing DavModule RequestForwarderModule HttpRedirectionModule RequestFilteringModule
  67. 67. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit
  68. 68. joergkrause.de Installation & Konfiguration
  69. 69. joergkrause.de Installation
  70. 70. © joergkrause.de Installation • Server Manager (Windows Server 2012 R2)
  71. 71. © joergkrause.de Installation • Add Roles – Web Server (IIS)
  72. 72. © joergkrause.de Installation • Role Services – Elemente der Installation
  73. 73. joergkrause.de Installation mit Paket-Manager
  74. 74. © joergkrause.de Kommandozeile • Kommandozeile mit angehobenen Rechten • Neue Kommandozeile mit angehobenen Rechten Es folgt die Abfrage des Kennworts! runas /user:Administrator cmd.exe start /w runas /user:Administrator cmd.exe Angemeldeter Benutzer
  75. 75. © joergkrause.de Der Paket-Manager • Automation der – Installation von Windows-Features – Installation von Updates / Hotfixes – Bereitstellung von aktualisierten Sprachpaketen start /w pkgmgr /ip:"Feature1;Feature2" /n:<answer_file> Paket-Manager Auf Beenden warten (/WAIT) Neues Kommandozeilenfenster Liste der Funktionen Ergebnisse in Datei
  76. 76. © joergkrause.de Optionen des Paket-Managers • Wichtige Funktionen: – /ip: Installieren – /up: Deinstallieren – /norestart: Verhindert den automatischen Neustart, falls dieser erforderlich sein sollte
  77. 77. © joergkrause.de Installation mit Paket-Manager • Beispiel für ein Installationsskript start /w pkgmgr /ip:IIS-WebServerRole;IIS-WebServer;IIS- CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS- DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS- ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS- ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS- HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS- RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS- Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS- DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS- IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS- RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS- HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS- WebServerManagementTools;IIS-ManagementConsole;IIS- ManagementScriptingTools;IIS-ManagementService;IIS- IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS- LegacyScripts;IIS-LegacySnapIn;IIS-FTPPublishingService;IIS-FTPServer;IIS- FTPManagement;WAS-WindowsActivationService;WAS-ProcessModel;WAS- NetFxEnvironment;WAS-ConfigurationAPI
  78. 78. joergkrause.de Installation mit PowerShell
  79. 79. © joergkrause.de Installation mit der PowerShell • PowerShell CommandLets: – Install-WindowsFeature (Alias: Add-WindowsFeature) – Get-WindowsFeature – Remove-WindowsFeature • Alternativ auch Paket-Manager via PowerShell
  80. 80. © joergkrause.de Installation mit der PowerShell • Alternativ auch Paket-Manager via PowerShell: $packages = "IIS-WebServerRole;" + "IIS-WebServer;" + "IIS-CommonHttpFeatures;" + "IIS-StaticContent;" + "IIS-DefaultDocument;" + # ... weitere Pakete "IIS-ManagementConsole;" + "IIS-ManagementService;" + "IIS-LegacySnapIn;" + "IIS-FTPManagement;" + "WAS-NetFxEnvironment;" + "WAS-ConfigurationAPI" Start-Process "pkgmgr" "/ip:$packages"
  81. 81. © joergkrause.de Vorbereitung der PowerShell • CommandLets nicht verfügbar? import-module ServerManager
  82. 82. © joergkrause.de Installation mit der PowerShell • Interaktiv via ISE (Integrated Scripting Environment) Skript-Editor Shell (Kommandozeile)
  83. 83. © joergkrause.de Informationen abrufen Get-WindowsFeature -Name web-server | Format-List -Property *
  84. 84. © joergkrause.de Rollen installieren Install-WindowsFeature -Name Web-Server Neustart erforderlich? Befehl erfolgreich
  85. 85. © joergkrause.de Features • Verwaltungswerkzeuge: Install-WindowsFeature -Name Web-Mgmt-Tools • Wenn man alle Features haben will: Add-WindowsFeature -Name Web-Common-Http, Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext, Web-ISAPI-Filter,Web-Http-Logging, Web-Request-Monitor,Web-Basic-Auth, Web-Windows-Auth,Web-Filtering, Web-Performance,Web-Mgmt-Console, Web-Mgmt-Compat,RSAT-Web-Server, WAS -IncludeAllSubFeature
  86. 86. © joergkrause.de Weitere Installationselemente • Fernwartung (remote Zugriff auf IIS-Manager) • Standardpfade der Sites (statt c:inetpubwwwroot) • Rechte (ACLs) auf die Standardpfade • Standard-Application Pools
  87. 87. © joergkrause.de Beispielskript #$Policy = "Unrestricted" $Policy = "RemoteSigned" If ((get-ExecutionPolicy) -ne $Policy) { Write-Host "Script Execution is disabled. Enabling it now" Set-ExecutionPolicy $Policy -Force Write-Host "Please Re-Run this script in a new powershell enviroment" Exit } $InetPubRoot = "D:Inetpub" $InetPubLog = "D:InetpubLog" $InetPubWWWRoot = "D:InetpubWWWRoot" Add-WindowsFeature -Name Web-Common-Http,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Http-Logging,Web-Request-Monitor,Web-Basic-Auth,Web-Windows- Auth,Web-Filtering,Web-Performance,Web-Mgmt-Console,Web-Mgmt-Compat,RSAT-Web-Server,WAS -IncludeAllSubFeature Import-Module WebAdministration New-Item -Path $InetPubRoot -type directory -Force -ErrorAction SilentlyContinue New-Item -Path $InetPubLog -type directory -Force -ErrorAction SilentlyContinue New-Item -Path $InetPubWWWRoot -type directory -Force -ErrorAction SilentlyContinue $InetPubOldLocation = @(get-website)[0].physicalPath.ToString() $InetPubOldLocation = $InetPubOldLocation.Replace("%SystemDrive%",$env:SystemDrive) Copy-Item -Path $InetPubOldLocation -Destination $InetPubRoot -Force -Recurse $Command = "icacls $InetPubWWWRoot /grant BUILTINIIS_IUSRS:(OI)(CI)(RX) BUILTINUsers:(OI)(CI)(RX)" cmd.exe /c $Command $Command = "icacls $InetPubLog /grant ""NT SERVICETrustedInstaller"":(OI)(CI)(F)" cmd.exe /c $Command #Changing Log Location $Command = "%windir%system32inetsrvappcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:$InetPubLog" cmd.exe /c $Command $Command = "%windir%system32inetsrvappcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:$InetPubLog" cmd.exe /c $Command $Command = "%windir%system32inetsrvappcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:$InetPubLog" cmd.exe /c $Command #Changing the Default Website location Set-ItemProperty 'IIS:SitesDefault Web Site' -name physicalPath -value $InetPubWWWRoot If (!(Test-Path "C:inetpubtempapppools")) { New-Item -Path "C:inetpubtempapppools" -type directory -Force -ErrorAction SilentlyContinue } Remove-Item $InetPubOldLocation -Recurse -Force $Command = "IISRESET" Invoke-Expression -Command $Command
  88. 88. © joergkrause.de Demo • Rollen mit PowerShell installieren
  89. 89. joergkrause.de Hinweise zur Installation
  90. 90. © joergkrause.de Was ist bei der Installation wichtig? • Sorgfältige Auswahl der Module • Weniger Module heißt – weniger Angriffsfläche – bessere Performance – höhere Stabilität – geringere Updatebedarf
  91. 91. © joergkrause.de Installation • Module, die explizit installiert werden (können): – HTTP: • Default Document • Directory Browsing • HTTP Errors • Static Content • HTTP Redirection • WebDAV Publishing – Health & Diagnostics: • Logging, Custom Logging, Logging Tools • Request Monitor • Tracing
  92. 92. © joergkrause.de Installation • Module, die explizit installiert werden (Fortsg.): – Performance: • Static Content Compression • Dynamic Content Compression – Security: • Request Filtering • IP Filtering • Auth Modules: Basic, Digest, Windows • SSL Certificates, Client Mapping • URL Authorization – Development • .NET / ASP.NET / CGI / ISAPI / SSI / WebSockets
  93. 93. © joergkrause.de Installation • Module, die explizit installiert werden (Fortsg.): – FTP – Web Core – Management Tools
  94. 94. © joergkrause.de Demo • IIS-Module nachinstallieren • Installationsskript exportieren • Installation überprüfen
  95. 95. joergkrause.de Konfiguration
  96. 96. © joergkrause.de WAS Konfiguration • Global • Protokoll • Application Pools • Sites
  97. 97. © joergkrause.de Konfiguration web.config Virtual Directory web.config Sub Directory web.config Application web.config Sub Directory web.config Site Abschnitte können geblockt werden Vererbung setzt sich auf Verzeichnisebene fort Virtuelle Vererbung der Einstellungen machine.config .NET Global applicationHost.config IIS Global Global web.config ASP.NET Global
  98. 98. © joergkrause.de Speicherort der Dateien • machine.config • web.config • applicationHost.config
  99. 99. © joergkrause.de Konfigurationsschema • XML basiert • Delegierbar • Vererbung steuerbar • Zugriff über – Editor – IIS Manager (MMC) – Skripte – Programmierung (.NET) – Kommandozeilenwerkzeug – PowerShell
  100. 100. © joergkrause.de Konfigurationsschema • Standardmäßig sind… – …alle IIS Abschnitte gesperrt, außer: • Default Document • Directory Browsing • HTTP Header • HTTP Redirects – …alle .NET-Framework- / ASP.NET-Abschnitte offen
  101. 101. © joergkrause.de Konfigurationsschema • Delegierung heißt: – Konfiguration sperren, “overrideMode” – ACLs auf alle Dateien anwenden <section name="defaultDocument" overrideModeDefault="Allow" /> Allow Deny <location overrideMode="Allow"> <system.webServer> <security> <authentication> </authentication> </security> </system.webServer> </location> Allow Deny
  102. 102. © joergkrause.de Konfigurationsschema • Elemente sperren • Beispiel: lockElements="providers,element1,element2" lockAllElementsExcepts="" <location overrideMode="Allow"> <system.webServer> <security> <authentication> <windowsAuthentication enabled="true" lockElements="providers"> <providers> <add value="Negotiate" /> <add value="NTLM" /> </providers> </windowsAuthentication> </authentication> </security> </system.webServer> </location> Name des Elements
  103. 103. © joergkrause.de Konfigurationsschema • Attribute sperren lockAttributes="attribute1,attribute2,attribute3" lockAllAttributesExcept="" <location overrideMode="Allow"> <system.webServer> <security> <authentication> <windowsAuthentication enabled="true" lockAttributes="enabled"> <providers> <add value="Negotiate" /> <add value="NTLM" /> </providers> </windowsAuthentication> </authentication> </security> </system.webServer> </location> Name des Attributes Beispiel:
  104. 104. © joergkrause.de Konfigurationsschema • Oft sind Listen erforderlich (Collections) • Beispiel: Provider • Listen haben Steuerelemente: – <add> – <remove> – <clear>
  105. 105. © joergkrause.de Konfigurationsschema • Sperren der Elemente zum Entfernen • Sperren von einzelnen Elementen einer Collection: <windowsAuthentication enabled="true" > <providers lockElements="remove,clear"> <add value="Negotiate" /> <add value="NTLM" /> </providers> </windowsAuthentication> <windowsAuthentication enabled="true" > <providers> <add value="Negotiate" /> <add value="NTLM" lockItem="true" /> </providers> </windowsAuthentication>
  106. 106. © joergkrause.de Konfigurationsschema • Schema-Datei (XML Schema, XSD): • Konfiguration ist Case Sensitive – Gilt auch für Anweisungen in Skriptumgebungen – applicationPool ≠ ApplicationPool %windir%system32inetsrvconfigschemaIIS_schema.xml
  107. 107. © joergkrause.de Demo • Konfiguration anschauen: – machine.config – web.config – applicationHost.config
  108. 108. © joergkrause.de Gemeinsame Konfiguration • Load Balancer • Serverfarmen / Fail Over Cluster • Migrationsszenarien applicationHost.config
  109. 109. © joergkrause.de Gemeinsame Konfiguration • Wie kommt die applicationHost.config auf den gemeinsamen Server? – Exportfunktion
  110. 110. © joergkrause.de Gemeinsame Konfiguration 1. MMC Funktion 2. Pfadeinstellungen
  111. 111. © joergkrause.de Gemeinsame Konfiguration • Auswirkung auf die Konfigurationsdatei: • Mit Domänen-User: <configSections> <section name="configurationRedirection" /> </configSections> <configurationRedirection enabled="true" path="machinenamecentralconfig$" userName="LocalUser" password="p@ssw0rd" /> <configurationRedirection enabled="true" path="machinenamecentralconfig$" userName="domainuser" password="p@ssw0rd" />
  112. 112. © joergkrause.de Demo • Konfiguration verteilen: – User einrichten (Nicht-Domäne) – Konfiguration exportieren – Konfiguration kopieren – Konfiguration auf UNC-Pfad
  113. 113. joergkrause.de Administration & Werkzeuge
  114. 114. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit + Härtung
  115. 115. © joergkrause.de Allgemeine Hinweise • Nur installieren, was benötigt wird – Angriffsfläche reduzieren – Speicherbedarf verringern – Kontrolle erhöhen • Installation identisch auf allen Servern – Vermeide "503 Service Unavailable"
  116. 116. joergkrause.de Application Pool, Site, Bindung
  117. 117. © joergkrause.de Application Pool Allgemein Leistung Überwachung
  118. 118. © joergkrause.de Sites und ihre Bausteine • Site – Applikation – Bindung – Virtuelle Verzeichnisse • Container für – Applikationen und virtuelle Verzeichnisse • Zugriff – erfolgt über eine oder mehrere Bindungen Site Applikation Virtuelles Verzeichnis Virtuelles Verzeichnis Bindung Internet
  119. 119. © joergkrause.de Site: Definition <sites> <site name="Default Web Site" id="1"> <application path="/"> <virtualDirectory path="/" physicalPath="%SystemDrive%inetpubwwwroot" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:" /> </bindings> </site> <siteDefaults> <logFile logFormat="W3C" directory="%SystemDrive%inetpublogsLogFiles" /> <traceFailedRequestsLogging directory="%SystemDrive%inetpublogsFailedLogs" /> </siteDefaults> <applicationDefaults applicationPool="DefaultAppPool" /> <virtualDirectoryDefaults allowSubDirConfig="true" /> </sites>
  120. 120. © joergkrause.de Bindung • Definiert den physikalischen Endpunkt • Besteht aus: – Adresse (Wo?) – Protokoll (Wie?)
  121. 121. © joergkrause.de Bindung: Adresse • Je nach Protokoll • Bei HTTP / HTTPS: – IP (oder * zur Bindung an alle physischen Adressen) – Port – Host Header (optional) Ein oder mehrere Bindungen pro Site Protokoll IP Port
  122. 122. © joergkrause.de Besonderheit Host Header • Typischer HTTP-Request: • Header "Host" liefert die Host-Information • DNS bindet mehrere Namen an eine IP • "Host Header" löst dies in den IIS wieder auf GET http://www.iis.net/ HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: de-DE,en-US;q=0.5 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) Accept-Encoding: gzip, deflate Host: www.iis.net DNT: 1 Proxy-Connection: Keep-Alive Cookie: s_cc=true; s_sq=%5B%5BB%5D%5D;
  123. 123. © joergkrause.de Besonderheit Host Header • Durchleitung der Anfrage-Informationen • Spart öffentliche IP-Adressen • DNS ist nicht Teil der IIS www.iis.net Auflösung auf 212.17.42.100 www.asp.net www.wcf.net www.iis.net www.asp.net www.wcf.net Browser DNS Applikationen IIS Bindung an 212.17.42.100
  124. 124. © joergkrause.de Applikationen • Gruppe von Dateien, die Inhalte liefern • Pfad zur Applikation ist Teil des URL der Site • Jede Site muss eine Root-Applikation haben • Jede Site kann mehrere Applikationen enthalten • Die Isolation der Applikationen erfolgt über den Application Pool
  125. 125. © joergkrause.de Virtuelles Verzeichnis • Pfad im IIS der einen externen Teil des URL auf einen physikalischen Pfad auf der Festplatte abbildet
  126. 126. joergkrause.de Werkzeuge Administration der IIS
  127. 127. © joergkrause.de Übersicht • IIS Manager (MMC GUI) • Kommandozeile – CMD: appcmd.exe – PS1: IIS CommandLet • Code – WMI Scripting (VBScript auf "rootWebAdministration") – .NET (VB/C# auf Microsoft.Web.Administration)
  128. 128. © joergkrause.de Eigenschaften • IIS und ASP.NET gemeinsam verwalten • Eine Datenbasis für alle Werkzeuge • Administration ist delegierbar Kontrollfluss der Werkzeuge IIS Manager .NET Wrapper Microsoft.Web.Administration appcmd WMI COM API *.config*.config
  129. 129. © joergkrause.de IIS Manager • Grafische Oberfläche via Management Console • Fernzugriff auf Server (über HTTP) • Erweiterbar via .NET/WinForms
  130. 130. © joergkrause.de Globale Konfiguration • Generischer Editor • Funktionsdelegation • Zugriffsrechte auf MMC (nur Site-Ebene) • Benutzer (Nur wenn andere als Windows-Auth) • Entfernte Verwaltungsdienste (Remote Zugriff) • Gemeinsame Konfiguration • Web Plattform Installer
  131. 131. © joergkrause.de Remote Zugriff • Freigabe • Authentifizierung • Verbindung • Verschlüsselung • Protokollierung • IP-Beschränkungen
  132. 132. © joergkrause.de Administrationsskripte Besser immer mit Skript
  133. 133. © joergkrause.de Kommandozeile • Für Batch-Dateien • appcmd.exe • Syntax: – appcmd (cmd) (object) <identifier> < /param:value … >* – cmd = Kommando, z.B. • add, list, delete, set – object = Ziel des Kommandos, muss Kommando kennen • Site, App, VDir, Apppool, Config, Backup, WP, Request, Module, Trace – identifier = Name oder ID – param:value = Parameter, optional, wiederholbar, u.a. • /text, /config, /xml, /commit – /? = Hilfe, (object) /? = Hilfe zu Ziel
  134. 134. © joergkrause.de C:> appcmd list sites SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started) SITE "Site1" (id:2,bindings:http/*:81:,state:Started) SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped) C:> appcmd list requests REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost) C:> appcmd list requests /apppool.name:DefaultAppPool C:> appcmd list requests /wp.name:3567 C:> appcmd list requests /site.id:1 Filter nach Application Pool, Worker Process oder Site Anzeigen und Filtern
  135. 135. © joergkrause.de C:> appcmd list config /section:? | findstr system.webServer system.webServer/globalModules system.webServer/serverSideInclude system.webServer/httpTracing ... C:> appcmd list config /section:directoryBrowse <system.webServer> <directoryBrowse enabled="true" /> </system.webServer> C:> appcmd list config /section:directoryBrowse /config:* <system.webServer> <directoryBrowse enabled="true" showFlags="Extension, Size, Time, Date" /> </system.webServer> C:> appcmd list config /section:directoryBrowse /text:* CONFIG CONFIG.SECTION: system.webServer/directoryBrowse path: MACHINE/WEBROOT/APPHOST overrideMode: Inherit [system.webServer/directoryBrowse] enabled:"true" showFlags:"Extension, Size, Time, Date" IIS Abschnitt – ebenso “system.web” und “system.applicationHost” Zeigt nicht explizit gesetzte Attribute an Konfiguration
  136. 136. © joergkrause.de set appcmd=%systemroot%system32inetsrvAPPCMD.EXE %appcmd% add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"D:New folder" %appcmd% add apppool /name:MyNewSiteAppPool /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated" %appcmd% set app "MyNewSite/" /applicationPool:"MyNewSiteAppPool" %appcmd% list site /name:MyNewSite pause Sites und Application Pool
  137. 137. © joergkrause.de Demo • Batch erstellen: – Application Pool – Site – Einstellungen Protokoll etc.
  138. 138. © joergkrause.de PowerShell • Muss als Admin laufen • Bis IIS7 separate Installation • Ab IIS 8 Teil des Windows Betriebssystems • Snap-In: – Web-ScriptingTools http://technet.microsoft.com/en-us/library/hh867899.aspx
  139. 139. © joergkrause.de Demo • Skript erstellen: – Application Pool – Site – Einstellungen Protokoll etc.
  140. 140. © joergkrause.de Programmierung • Verwaltete API für IIS – Microsoft.Web.Administration – Typisiert für IIS-Objekte (Pool, Site) – Schwach typisiert für ASP.NET • Verwaltete API für Konfiguration – System.Configuration – Typisiert für .NET und ASP.NET – Eigene Typisierung
  141. 141. © joergkrause.de Programmierung ServerManager iisManager = new ServerManager(); foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) { Console.WriteLine("W3WP ({0})", w3wp.ProcessId); foreach(Request request in w3wp.GetRequests(0)) { Console.WriteLine("{0} - {1},{2},{3}", request.Url, request.ClientIPAddr, request.TimeElapsed, request.TimeInState); } }
  142. 142. © joergkrause.de Demo • Kommandozeile erstellen: – Application Pool – Site – Einstellungen Protokoll etc.
  143. 143. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit + Härtung
  144. 144. joergkrause.de Sicherheit Absichern einer IIS-Installation Verschlüsseln von Verbindungen Beschränken von Verbindungen Verschlüsselung der Konfiguration
  145. 145. joergkrause.de TLS (SSL)
  146. 146. © joergkrause.de TLS (SSL) Einrichten • TLS = Transport Layer Security – (früher SSL = Secure Socket Layer) – Seit SSL 3.0 nur noch TLS genannt – TLS 1.0 = SSL 3.1 – Einsatz überwiegend mit HTTPS • Zertifikat erstellen / beschaffen • Verwendung konfigurieren • Bindungen einstellen
  147. 147. © joergkrause.de Grundlagen Verschlüsselung • Der Weg vom Sender zum Empfänger • Problem: Wie kommt der Schlüssel zum Empfänger? Schlüssel Daten Daten verschlüsselt Schlüssel Daten
  148. 148. © joergkrause.de Grundlagen Verschlüsselung • Lösung: Asymmetrische Kryptografie Öffentlicher Schlüssel Daten Daten verschlüsselt Privater Schlüssel Daten Empfänger A gibt ein Schlüsselpaar heraus, mit dem der Sender B mittels des öffentlichen Teils die Nachricht verschlüsselt und nur der Empfänger A kann diese wieder entschlüsseln
  149. 149. © joergkrause.de Grundlagen Verschlüsselung • Asymmetrische Verfahren sind aufwändig – (RSA ca. Faktor 1000 langsamer als AES) • Sie werden nur benutzt, um einen symmetrischen Schlüssel sicher auszutauschen • Asymmetrisches Verfahren: – RSA (Rivest Shamir Adleman) • Symmetrische Verfahren sind billiger • Symmetrische Verfahren bei TLS: – DES – Triple DES – AES (auch Rijndael genannt)
  150. 150. © joergkrause.de Grundlagen Verschlüsselung • Zertifikat – digitaler Datensatz mit Eigenschaften – Standard für Zertifikate mit öffentlichem Schlüssel: – X.509 – Aktuell X.509v3 (Version 3) • Bindung an ein "Distinguished Name" oder "Alternative Name" – E-Mail, DNS-Eintrag (URL), IP
  151. 151. © joergkrause.de Grundlagen der Verschlüsselung • Dateierweiterungen – .CER – DER- oder Base64-kodiertes Zertifikat – .CRT – DER- oder Base64-kodiertes Zertifikat – .CSR – Base64-kodierte Zertifizierungsanfrage – .DER – DER-kodiertes Zertifikat – .P12 / .PFX – PKCS#12, kann öffentliche Zertifikate und private Schlüssel (Kennwort-geschützt) enthalten. – .P7C – PKCS#7-signierte Datenstruktur ohne Dateninhalt, nur mit Zertifikaten oder Zertifikatsperrlisten – .PEM – Base64-kodiertes Zertifikat -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- Anfang und Ende, wenn der Inhalt Base64-kodiert ist
  152. 152. © joergkrause.de Grundlagen Verschlüsselung Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: md5WithRSAEncryption Issuer: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root CA/Email=administrator@sopac.org Validity Not Before: Nov 20 05:47:44 2001 GMT Not After : Nov 20 05:47:44 2002 GMT Subject: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=www.sopac.org/Email=administrator@sopac.org Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:ba:54:2c:ab:88:74:aa:6b:35:a5:a9:c1:d0:5a: 9b:fb:6b:b5:71:bc:ef:d3:ab:15:cc:5b:75:73:36: b8:01:d1:59:3f:c1:88:c0:33:91:04:f1:bf:1a:b4: 7a:c8:39:c2:89:1f:87:0f:91:19:81:09:46:0c:86: 08:d8:75:c4:6f:5a:98:4a:f9:f8:f7:38:24:fc:bd: 94:24:37:ab:f1:1c:d8:91:ee:fb:1b:9f:88:ba:25: da:f6:21:7f:04:32:35:17:3d:36:1c:fb:b7:32:9e: 42:af:77:b6:25:1c:59:69:af:be:00:a1:f8:b0:1a: 6c:14:e2:ae:62:e7:6b:30:e9 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: FE:04:46:ED:A0:15:BE:C1:4B:59:03:F8:2D:0D:ED:2A:E0:ED:F9:2F X509v3 Authority Key Identifier: keyid:E6:12:7C:3D:A1:02:E5:BA:1F:DA:9E:37:BE:E3:45:3E:9B:AE:E5:A6 DirName:/C=FJ/ST=Fiji/L=Suva/O=SOPAC/OU=ICT/CN=SOPAC Root CA/Email=administrator@sopac.org serial:00 -----BEGIN CERTIFICATE----- MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox DTALBgNVBAgTBEZpamkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQww CgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0B CQEWF2FkbWluaXN0cmF0b3JAc29wYWMub3JnMB4XDTAxMTEyMDA1NDc0NFoXDTAy MTEyMDA1NDc0NFowgYkxCzAJBgNVBAYTAkZKMQ0wCwYDVQQIEwRGaWppMQ0wCwYD VQQHEwRTdXZhMQ4wDAYDVQQKEwVTT1BBQzEMMAoGA1UECxMDSUNUMRYwFAYDVQQD Ew13d3cuc29wYWMub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbmlzdHJhdG9yQHNv cGFjLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAulQsq4h0qms1panB 0Fqb+2u1cbzv06sVzFt1cza4AdFZP8GIwDORBPG/GrR6yDnCiR+HD5EZgQlGDIYI 2HXEb1qYSvn49zgk/L2UJDer8RzYke77G5+IuiXa9iF/BDI1Fz02HPu3Mp5Cr3e2 JRxZaa++AKH4sBpsFOKuYudrMOkCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBT+BEbtoBW+wUtZA/gtDe0q4O35LzCBtgYDVR0jBIGuMIGrgBTmEnw9oQLl uh/anje+40U+m67lpqGBj6SBjDCBiTELMAkGA1UEBhMCRkoxDTALBgNVBAgTBEZp amkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQwwCgYDVQQLEwNJQ1Qx FjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0BCQEWF2FkbWluaXN0 cmF0b3JAc29wYWMub3JnggEAMA0GCSqGSIb3DQEBBAUAA4GBADSN+2ULhVviRAnw VTE7KSv0/apf27gRGsarM2dZwQTeNN8IVy7GYNz31OLxc5dXI1ACY/x4ljSzysQb xUzIFmm7nEp+ABlIYuJRqzr6/YjN4J3vZ1Da/ksTxQyM/K1ute5A4/00EJ+tNL3b Bu0JPfKmgSJjFtyuMwxw/Qpsr7xa -----END CERTIFICATE-----
  153. 153. © joergkrause.de Grundlagen Verschlüsselung • Begriffe (Auswahl): – PKI = Public Key Infrastructure • System zum Herausgeben digitaler Zertifikate – CA = Certificate Authority • Hierarchisches System von Zertifizierungsstellen – CRL = Certificate Revocation List • Zertifikatssperrliste, Liste ungültiger Zertifikate – RA = Registration Authority • Organisation, wo Zertifikate beantragt werden können – VA = Validation Authority • Dienst, wo Zertifikate geprüft werden können – DS = Directory Service • Durchsuchbares Verzeichnis mit ausgestellten Zertifikaten
  154. 154. © joergkrause.de -----BEGIN CERTIFICATE----- MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox DTALBgNVBAgTBEZpamkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQww CgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0B CQEWF2FkbWluaXN0cmF0b3JAc29wYWMub3JnMB4XDTAxMTEyMDA1NDc0NFoXDTAy MTEyMDA1NDc0NFowgYkxCzAJBgNVBAYTAkZKMQ0wCwYDVQQIEwRGaWppMQ0wCwYD VQQHEwRTdXZhMQ4wDAYDVQQKEwVTT1BBQzEMMAoGA1UECxMDSUNUMRYwFAYDVQQD Ew13d3cuc29wYWMub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbmlzdHJhdG9yQHNv cGFjLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAulQsq4h0qms1panB 0Fqb+2u1cbzv06sVzFt1cza4AdFZP8GIwDORBPG/GrR6yDnCiR+HD5EZgQlGDIYI 2HXEb1qYSvn49zgk/L2UJDer8RzYke77G5+IuiXa9iF/BDI1Fz02HPu3Mp5Cr3e2 JRxZaa++AKH4sBpsFOKuYudrMOkCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBT+BEbtoBW+wUtZA/gtDe0q4O35LzCBtgYDVR0jBIGuMIGrgBTmEnw9oQLl uh/anje+40U+m67lpqGBj6SBjDCBiTELMAkGA1UEBhMCRkoxDTALBgNVBAgTBEZp amkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQwwCgYDVQQLEwNJQ1Qx FjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0BCQEWF2FkbWluaXN0 cmF0b3JAc29wYWMub3JnggEAMA0GCSqGSIb3DQEBBAUAA4GBADSN+2ULhVviRAnw VTE7KSv0/apf27gRGsarM2dZwQTeNN8IVy7GYNz31OLxc5dXI1ACY/x4ljSzysQb xUzIFmm7nEp+ABlIYuJRqzr6/YjN4J3vZ1Da/ksTxQyM/K1ute5A4/00EJ+tNL3b Bu0JPfKmgSJjFtyuMwxw/Qpsr7xa -----END CERTIFICATE----- Arbeitsweise der PKI (Nutzersicht) CA VA RA 4. Ausstellung 3. Information 6. Prüfung 5. Authentifizierung Nutzer Shop -----BEGIN CERTIFICATE----- MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox DTALBgNVBAgTBEZpamkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQww CgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0B CQEWF2FkbWluaXN0cmF0b3JAc29wYWMub3JnMB4XDTAxMTEyMDA1NDc0NFoXDTAy MTEyMDA1NDc0NFowgYkxCzAJBgNVBAYTAkZKMQ0wCwYDVQQIEwRGaWppMQ0wCwYD VQQHEwRTdXZhMQ4wDAYDVQQKEwVTT1BBQzEMMAoGA1UECxMDSUNUMRYwFAYDVQQD Ew13d3cuc29wYWMub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbmlzdHJhdG9yQHNv cGFjLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAulQsq4h0qms1panB 0Fqb+2u1cbzv06sVzFt1cza4AdFZP8GIwDORBPG/GrR6yDnCiR+HD5EZgQlGDIYI 2HXEb1qYSvn49zgk/L2UJDer8RzYke77G5+IuiXa9iF/BDI1Fz02HPu3Mp5Cr3e2 JRxZaa++AKH4sBpsFOKuYudrMOkCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwLAYJ YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud DgQWBBT+BEbtoBW+wUtZA/gtDe0q4O35LzCBtgYDVR0jBIGuMIGrgBTmEnw9oQLl uh/anje+40U+m67lpqGBj6SBjDCBiTELMAkGA1UEBhMCRkoxDTALBgNVBAgTBEZp amkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQwwCgYDVQQLEwNJQ1Qx FjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0BCQEWF2FkbWluaXN0 cmF0b3JAc29wYWMub3JnggEAMA0GCSqGSIb3DQEBBAUAA4GBADSN+2ULhVviRAnw VTE7KSv0/apf27gRGsarM2dZwQTeNN8IVy7GYNz31OLxc5dXI1ACY/x4ljSzysQb xUzIFmm7nEp+ABlIYuJRqzr6/YjN4J3vZ1Da/ksTxQyM/K1ute5A4/00EJ+tNL3b Bu0JPfKmgSJjFtyuMwxw/Qpsr7xa -----END CERTIFICATE-----
  155. 155. © joergkrause.de Zertifikat beschaffen Root CA Intermediate CA Intermediate CA Intermediate Issuing CAs Issuing CAs Issuing CAs
  156. 156. joergkrause.de SSL in den IIS Einrichtung und Konfiguration
  157. 157. © joergkrause.de Vorbereitung • Wahl des Zertifikats: – Valid From und Valid To gültig / sinnvoll? – Common Name (CN) passend zur URL der Site? – Issuer (Herausgeber) in der Liste vertrauter Stammzertifikate?
  158. 158. © joergkrause.de Testzertifikat • "Self Signed" • Test-Root-Zertifikat und Test-Zertifikat mit makecert • Test-Zertifikat mit Powershell – New-SelfSignedCertificate
  159. 159. © joergkrause.de Testzertifikat mit makecert • Anlegen und Speichern eines Testzertifikats makecert -r -pe -n "CN=www.yourserver.com" -b 01/01/2015 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "Self-Signed" Privater Schlüssel exportierbar Name nach X.500 Gültig ab (Valid From/begin) Gültig bis (Valid To/end) Store (X.509 store name) Location (currentuser/localmachine) Key Type (exchange/signature) Provider CryptoAPI Provider Type Zertifikatstyp (OID-Format)
  160. 160. © joergkrause.de OID • Object Identifier – Baum mit Objektbeschreibungswerten – Private Knoten (kostenlose Registrierung) möglich – Wurzel: • 0: ITU-T (Telecommunication Standardization Sector) • 1: ISO • 2: ITU-T + ISO Joint • OID ist ein Meta-Standard http://www.oid-info.com/faq.htm http://www.codingfreaks.de/2012/04/02/gultige-oids-in-makecert-exe/
  161. 161. © joergkrause.de OID • So entsteht die OID 1. ISO 3. Identified Organization 6. dod (US department of defence) 1. Internet 5. Security 5. mechanisms 7. pkix (Public Key Infrastructure) 3. kp (Extended Key Purpose) 1 serverAuth Test eines OID: http://oid-info.com/get/1.3.6.1.5.5.7.3.1 "Indicates that a certificate can be used as an SSL server certificate"
  162. 162. © joergkrause.de Aktuelle Konfiguration • Entscheidend ist http.sys! netsh http show sslcert
  163. 163. © joergkrause.de Konfiguration • SSL optional oder zwingend
  164. 164. © joergkrause.de Bindungen • Standard-Port für SSL: 443 • Einstellungen Via IIS Manager / Skript / .NET • Konfiguration: <bindings> <binding bindingInformation="mystore:443:" protocol="https" sslFlags="0"> </bindings> 0: IP/Port, ein Zertifikat pro Kombination 1: Host Name und IP (SNI Verfahren) 2: Zentrales SSL-Zertifikat (kein SNI) 3: Zentrales SSL-Zertifikat mit SNI
  165. 165. © joergkrause.de Ablauf • Zwei Plätze: 1. Bindungsinformationen in applicationHost.config 2. Assoziierte SSL-Konfiguration in http.sys • Beim Start der Site – IIS sendet Bindungsdaten von Konfiguration an http.sys – http.sys beginnt auf dem Port zu lauschen • Beim Verbindungsaufbau: – http.sys schaut in seine Konfiguration nach der IP:Port- Kombination – http.sys sucht Zertifikat anhand Hash & Store
  166. 166. © joergkrause.de Kommandozeile appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.bindings .[protocol='https', bindingInformation='*:443:mysite.de'] .bindingInformation:"127.0.0.1:80:" /commit:apphost
  167. 167. © joergkrause.de .NET-Code • Ausführung in einer Konsolenapplikation using (ServerManager serverManager = new ServerManager()) { var config = serverManager.GetApplicationHostConfiguration(); var sitesSection = config.GetSection("system.applicationHost/sites"); var siteDefaultsElement = sitesSection.GetChildElement("siteDefaults"); var bindingsCollection = siteDefaultsElement.GetCollection("bindings"); var bindingElement = bindingsCollection.CreateElement("binding"); bindingElement["protocol"] = @"http"; bindingElement["bindingInformation"] = @"127.0.0.1:8080:"; bindingsCollection.Add(bindingElement); serverManager.CommitChanges(); }
  168. 168. © joergkrause.de Demo • Zertifikat erstellen • Installieren • Testen
  169. 169. © joergkrause.de Konfiguration verschlüsseln
  170. 170. © joergkrause.de Demo • Konfiguration schützen
  171. 171. © joergkrause.de Beschränken von Verbindungen • Authentifizierung • Autorisierung: – IP-Beschränkungen – URL Autorisierung – ISAPI- und CGI-Beschränkungen – Anforderungsfilter
  172. 172. © joergkrause.de Authentifizierung & Autorisierung 1. Authentifizierung – Wer bist du? – Diverse Verfahren 2. Autorisierung – Was darfst du? – Diverse Stufen
  173. 173. © joergkrause.de Authentifizierung Methode Anmeldeverfahren Benutzerdatenbank Anonymer Zugriff Keines AD, lokales Konto Basic Abfragedialog AD, lokales Konto Client Zertifikat Zertifikatsauswahl AD IIS Zertifikat mit Mapping Zertifikatsauswahl AD, lokales Konto Digest Abfragedialog AD Forms HTML-Formular ASP.NET Membership Windows Abfragedialog AD, lokales Konto
  174. 174. © joergkrause.de Das "anonyme" Konto • Keine Operation ohne Identität • Die anonymen Zugriffe laufen unter IUSR ab • IUSR ist in der Gruppe IIS_IUSRS • Minimale Ausführungsrechte in der ACL: – Read • Für aktive Programme: – Read & Execute – List folder contents
  175. 175. © joergkrause.de IUSR • IUSR – Kein Kennwort ("built in") – Für Gastzugang einfach ACL auf IUSR setzen (Read) – Kennwort kann nicht ablaufen – Kopieren der ACL mit xcopy /o • Identische SID auf allen Windows-Systemen • IIS_USRS – Worker Prozess fügt Token der Pool-Identität dynamisch der Gruppe hinzu – Das Pool-Konto muss deshalb nicht konfiguriert werden <anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />
  176. 176. © joergkrause.de Start Authentifizierungsablauf Anonym ? Start Impersonate IUSR Send 401 Per- missions OK? 200 OK Other Auth? config config config Success ? Authenticate Send 403 Impersonate User HTTP Request config Per- missions OK? config Yes No No No Yes Yes Yes No
  177. 177. joergkrause.de Beschränkungen Auswahl der wichtigsten Sicherheitsbeschränkungen
  178. 178. © joergkrause.de IP-Beschränkungen • Standard: – IP oder IP-Bereich – Explizit erlauben oder explizit verbieten • Erweiterung: – Dynamische Beschränkung – Anzahl konkurrierender Anforderungen http://www.iis.net/downloads/microsoft/dynamic-ip-restrictions
  179. 179. © joergkrause.de URL-Autorisierung • Zugriffsbeschränkungen durch URLs • Ersetzt Beschränkungen durch ACLs • Funktion "Authorization Rules" – Ebene Verzeichnis – Ebene Datei
  180. 180. © joergkrause.de URL-Autorisierung • In der web.config der Anwendung • Element <location> ist das Elternelement <location path="bobsSecret.aspx"> <system.webServer> <security> <authorization> <remove users="" roles="BobAndFriends" verbs="" /> <add accessType="Allow" users="Bob" /> </authorization> </security> </system.webServer> </location>
  181. 181. © joergkrause.de Anforderungsfilter • Standardbeschränkungen: – Kritische Dokumente sind ausgefiltert (Configs, DLLs, …) • Beschränkungsfunktionen: – Dateierweiterung – URL-Segmente – Verbs (HTTP-Methoden) – Non-ASCII (z.B. UTF-8) – Doppelt encodete Anfragen – Maximale Länge der Anfrage – Maximale Länge des URL – Maximale Länge des Query Strings
  182. 182. © joergkrause.de Anforderungsfilter • Beispiel Kommandozeile • Im IIS-Manager (MMC) appcmd set config /section:requestfiltering /allowhighbitcharacters:true |
  183. 183. © joergkrause.de Anforderungsfilter • Spezifische Fehler bei Verstoß gegen die Regeln URL Sequenz verboten 404.5 Verb verboten 404.6 Dateierweiterung nicht zugelassen 404.7 Verstecktes Segment (Verzeichnis) erkannt 404.8 Anforderungs-Kopfzeile (Request Header) zu lang 404.10 URL doppelt encodet 404.11 Non-ASCII (high bit) Zeichen 404.12 Inhalt zu lang 404.13 URL zu lang 404.14 Query String zu lang 404.15
  184. 184. joergkrause.de Checklisten zum Härten Härten einer IIS-Installation
  185. 185. © joergkrause.de IIS Absichern (Checkliste I) • Verzeichniszugriff – Beschränkungen anonym zugreifbarere Verzeichnisse – IISAdmin, IISHelp, IISSamples entfernen – PARENT PATH config entfernt – Website Root nicht auf dem Systemlaufwerk – Verzeichnis durchsuchen abgeschaltet – Kein SDK, Visual Studio etc. installiert
  186. 186. © joergkrause.de IIS Absichern (Checkliste II) • Konfiguration – DEBUG OFF in web.config – TRACE FALSE in web.config – Nicht benötigte HTTP-Module entfernt – Nicht benötigte Handler entfernt (z.B. *.hta, *.shtml)
  187. 187. © joergkrause.de IIS Absichern (Checkliste III) • Sicherung der Kommunikation – HTTPS aktiviert – Zertifikate aktuell, vertraut und korrekt – Remote Administration aus oder abgesichert – Standardkommunikation nur Port 80 und 443 – IPSec für alle internen Verbindungen
  188. 188. © joergkrause.de IIS Absichern (Checkliste IV) • Protokollierung und Überwachung – Misslungene Anmeldeversuche regelmäßig prüfen – Protokolle auswerten – Erweitertes Protokollierungsformat benutzen
  189. 189. © joergkrause.de IIS Absichern (Checkliste V) • Konten – Verwaltete Konten für Application Pools – IUSR abgeschaltet – Anonymer Zugriff aus – Remote Login aus (außer Admin, wenn Bedarf) – Lokaler Login aus (außer Admin)
  190. 190. © joergkrause.de IIS Absichern (Checkliste VI) • ASP.NET – State Service aus (speziell bei MVC) • System – WebDAV aus – FTP und SMTP aus – System-Shares aus (C$, D$ usw.) – SMB aus – TELNET aus – IIS nicht auf Domain Controller – DMZ konfiguriert – Updates aktuell (Windows, .NET)?
  191. 191. © joergkrause.de Hilfreiche Werkzeuge • Microsoft Security Compliance Manager 3.0 • SQL Server Express benötigt • Nicht nur IIS, allgemeines Werkzeug
  192. 192. © joergkrause.de Security Compliance Manager 3.0 • Liste von Einstellungen über alle Produkte • Empfehlung und Erklärung zu allen Einstellungen Aktueller Status Empfehlung Erklärungen
  193. 193. © joergkrause.de Agenda 1 2 3 4 5 6 Geschichte + Grundlagen Installation + Konfiguration Fehlersuche + Optimierung Architektur + Arbeitsweise Administration + Werkzeuge Sicherheit + Härtung
  194. 194. joergkrause.de Fehlersuche
  195. 195. © joergkrause.de Werkzeuge • Fiddler (Telerik, Freeware) • LogParser 2.2 • Microsoft Network Monitor 3.4 • Wireshark • SSLDiag • MSConfig.exe • JMeter (Apache, Open Source) • Loadrunner (HP, Freemium)
  196. 196. © joergkrause.de HTTP Diagnose • Pakete korrekt? • Bandbreite okay? • Authentifizierung passt? • Verschlüsselung aktiv? • Angriffe gesehen?
  197. 197. joergkrause.de Optimierung
  198. 198. © joergkrause.de Verstehen • Einfluss auf Performance des Servers: – Bandbreite – Anzahl HTTP-Requests • Einfluss im Browser: – JavaScript – Rendering
  199. 199. © joergkrause.de Timeline DNS Request Transfer Server Processing Transfer Response Processing 150 ms 50 ms 200 ms 100 ms 500 ms 200 ms 50 ms 150 ms S 1.400 ms
  200. 200. © joergkrause.de Timeline DNS Request Transfer Server Processing Transfer Response Processing 150 ms 50 ms 200 ms 100 ms 500 ms 200 ms 50 ms 150 ms S 1.400 ms
  201. 201. © joergkrause.de Tools • Fiddler (Telerik) • F12 (IE, Chrome), Firebug (Firefox) – Profiler – Netzwerk – CSS – HTML – JavaScript Debugger • Vieles auch online, z.B. – Pingdom – Browserstack http://tools.pingdom.com/fpt/ http://www.browserstack.com
  202. 202. © joergkrause.de IIS/Server-Optimierung • Pipeline Optimierung • Prozess Konfiguration Optimierung • CDN
  203. 203. © joergkrause.de Pipeline Optimierung • Ziel: – Schnellere Verarbeitung • Vorgehensweise: – Entfernen nicht benutzter Module in der web.config ?
  204. 204. © joergkrause.de Pipeline Optimierung
  205. 205. © joergkrause.de Prozesskonfiguration • Ziel: – Optimale Nutzung von Ressourcen • Vorgehensweise: – Anpassen der Prozesskonfiguration an die konkreten Hardwarebedingungen ?
  206. 206. © joergkrause.de Prozesskonfiguration • maxWorkerThreads: 20 pro Kern (4 Kerne == 80 Threads) – Höher möglich, wenn wenige CPU-intensive Arbeit (z.B. viel Async, Service Calls), dann sind Werte bis 100 möglich. • maxIOThreads: 20 pro Kern – Für Dateioperationen, Datenbankzugriff, Web Service Calls, interne Requests etc. Bei schneller Hardware, 10 Gbit Netz, SSD etc, sind Werte bis 100 möglich. • minWorkerThreads, minIOThreads: Standard 1 – Steuert Beginn der Request-Warteschlange, mindestens der Wert muss frei sein, damit NICHT gequeued wird. • memoryLimit: Anteil (%) vom Systemspeicher, den der Worker-Prozess belegen darf – Wenn die Anwendung alleine ist, darf der Wert hoch sein, z.B. 80. Bei vielen Lecks oder anderen Anwendungen, vor allem COM, Wert verringern.
  207. 207. © joergkrause.de Verbindungskonfiguration • Anzahl gleichzeitiger Verbindungen zu einer IP- Adresse: – Standard 2 – Höhere Werte heute mehr als sinnvoll
  208. 208. © joergkrause.de • Ziel: – Schnellere Requests – Weniger Latenz • Technik: – CDN nutzen ? CDN (Content Delivery Network)
  209. 209. © joergkrause.de • Für allgemeine Dateien, wie jQuery, Knockout etc. bietet sich Microsoft, Google etc. an CDN (Content Delivery Network)
  210. 210. © joergkrause.de • Für eigene gibt es kostenpflichtige Dienste – Cachefly (einfach, Upload/Distribute) – EdgeCast (komplex, DNS Caching) CDN (Content Delivery Network)
  211. 211. © joergkrause.de Fragen www.joergkrause.de

×