Webbservrar Apache httpd Linuxadministration II 1DV421 1
Referenslitteratur Administering and Securing the Apache Server Contributor: Appu, Ashok(Author) 2
Historia Rob McCool National Center for Supercomputing Applications Apache Group Version 1.0 i december 1995 3
Marknadsandelar Apache är den ledande programvaran inom webbservermarknaden Netcraft gjorde en undersökning i augusti där det visade sig att Apache hade 47% av marknaden 4% 11% 15% 47% 23% Apache IIS ngix Google Övriga 4
Om Apache Skapad helt i öppen källkod av programmerare över hela världen Klarar av de flesta serverskriptspråk, såsom PHP, ASP och CGI Modulbaserat Finns för flera operativsystem, t.ex. Windows, OS/2 och Linux Implementerar flera olika sätt för autentisering, däribland lösenordfiler, databaser och katalogtjänster 1.3, 2.0 och 2.2 är de versioner som utvecklas/underhålls 5
Förbättringar i Apache 2.x Skalbarheten Processer körs smidigare och mer effektivt = snabbare Snabbare processer = möjlighet att köra större installationer utan överbelastning UNIX-trådar Bättre stöd för icke-unix-baserade plattformar Stöd för IPv6 6
Vad Apache hantera? HTML Bilder Ljud Animationer Interaktiva skript Säkerhetsbaserade webblösningar Virtuella domäner M.m. 7
Systemkrav Helt beroende på serverns användningsområde Enkel 486 till Multiprocessor 8MB RAM och uppåt 6MB hårddiskutrymme och uppåt Går självklart utmärkt att köra i en virtuell miljö 8
Hur fungerar en webbserver? 1. Klienten ansluter med hjälp av en webbläsare mot webbservern 2. Webbservern letar upp filen som klienten frågar efter 3. Webbservern öppnar filen 4. Webbservern skickar filen till klienten som tar emot den i webbläsaren 1. 2. 4. 3. Klient Webbserver Filsystem 9
Funktioner Kärnan i Apache är liten och innehåller de centrala komponenterna Extra funktioner byggs upp av moduler som laddas in vid uppstart Moduler är individuella bitar kod Dessa moduler kan installeras/avinstalleras allt efter behov 10
Moduler Program eller rutin som utför en speciell funktion Omskrivning av Apache för version 0.8.* Två versioner, 1.3 och 2.x Ej kompatibla Några installeras som standard vid installation 11
Coremoduler core mpm_common leader beos, mpm_netware, mpm_os2, mpm_winnt perchild prefork worker 12
Andra moduler mod_access Funktionalitet för access-restriktioner för filer mod_alias Ger möjlighet att ändra katalog där filer ligger. T.ex: www.kalmar.se/ikoner Ska inte ligga i /var/www/ikoner, utan i /home/kalle/ikoner Hanterar även redirects för URLs mod_auth Hanterar autentiseringsfunktionalitet Skickar användarinformation i klartext mod_auth_anon, mod_auth_dbm mod_digest/mod_auth_digest Skickar lösenord krypterade med en MD5-funktion 13
Andra moduler forts. mod_dir Ger en avslutande / till URLs som pekar mot kataloger. T.ex.: www.kalmar.se/info ger www.kalmar.se/info/ mod_info Ger information om alla laddade moduler och serverinställningar på URL www.servernamn/server-info mod_mime Bestämmer filtyp antingen genom att läsa av filändelsen eller genom att läsa av dess metaheaders mod_mime_magic Läser helt enkelt av de första bitarna av en fil för att kunna bestämma vad för sorts fil det är mod_rewrite Skriver om URLs on-the-fly. T.ex: http://mail.kalmar.se ger https://webmail.kalmar.se:8080 14
Andra moduler forts. mod_speling Struntar i stor eller liten bokstav: www.kalmar.se/products.php == www.kalmar.se/products.php Klarar dock bara av en felstavning per URL Kan inte ta hand om felstavade användarnamn, såsom www.kalmar.se/~kalle mod_status Visar information om serverns status, såsom antal processer, hur mycket data som skickats, uptime, CPU-användande m.m., på URL www.servernamn/server-status mod_userdir Tillåter användare att ha egna websidor i sina hemkataloger. Default webkatalog är public_html. Deras URL blir www.servernamn/ ~username 15
Apaches konfiguration Konfiguration av Apache sker genom editering av dess konfigurationsfiler /etc/apache2/apache2.conf Huvudkonfigurationsfilen /etc/apache2/httpd.conf Fil för bakåtkompabilitet /etc/apache2/sites-avaliable/ Virtualhost-konfigurationer /etc/apache2/sites-enabled/ innehåller de siter som används /etc/apache2/mods-avaliable/ Modul-konfigurationer /etc/apache2/mods-enabled/ innehåller de moduler som används Konfigurationsfilerna är väldokumenterade och enkla att följa Många konfigurationsexempel finns på Apaches hemsida 16
Apaches konfiguration CentOS Konfiguration av Apache sker genom editering av dess konfigurationsfil /etc/httpd/conf/httpd.conf Huvudkonfigurationsfilen /etc/httpd/conf.d/* Konfigurationsfiler för vissa moduler, t.ex. mod_ssl 17
Apaches konfiguration forts. Konfigurationsfilen är uppbyggd av två delar Serverkonfiguration Anger generella inställningar för webbservern, såsom servernamn, tid innan timeout och vilka portar som servern ska lyssna på ServerName www.norden.net TimeOut 120 Listen 80 Direktiv Börjar med <Direktiv> och avslutas med </Direktiv> <Directory /www/katalog > </Directory> 18
Serverkonfiguration ServerName Anger namnet som webbservern ska använda sig av. Ofta webbserverns angivna domännamn. Listen Anger vilken/vilka portar som webbservern ska lyssna på. ServerRoot Anger roten för webbserverns konfigurationsfiler DocumentRoot Anger standardroten för webbdokumenten User & Group Anger vilka användar- och grupprättigheter som webbservern ska exekveras med ServerAdmin Anger e-postadressen för webbserveradministratören. Syns bland annat på felsidor. 19
Serverkonfiguration forts. TimeOut Anger antal sekunder innan en anslutning får timeout KeepAlive Anger om flera förfrågningar får skickas via samma anslutning (Persistent connection) ServerName www.norden.net Listen 80 ServerRoot /etc/httpd DocumentRoot /www/html User apache Group apache ServerAdmin admin@norden.net TimeOut 120 KeepAlive off 20
Options Options Kontrollerar vilka funktioner som tillåts i kataloger Options väljs bort genom att sätta ett framför dem Options Indexes Exempel Options All Alla options är påslagna förutom MultiViews Options ExecCGI Tillåt exekvering av CGI-skript Options FollowSymLinks Tillåt symboliska länkar Options Indexes Tillåt listning av katalogers innehåll <Directory /www/html/katalog > Options Indexes FollowsymLinks -ExecCGI </Directory> 21
Virtuella domäner Konfigureras med direktivet <VirtualHost> Flera domännamn på samma webbserver Används på bland annat webbhotell Använder samma konfigurationsparametrar som serverkonfigurationen ServerAlias används för att ange flera domännamn som utnyttjar samma VirtualHost NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin studentadmin@kalmar.se DocumentRoot /www/html/student ServerName student.kalmar.se ServerAlias www.student.se </VirtualHost> 22
<Directory> <Directory> Anger inställningar för en viss katalog <Directory /var/www/html/katalog > Options Indexes Order allow,deny Allow from all </Directory> <DirectoryMatch> Fungerar på samma sätt som <Directory>, men kan hantera reguljära uttryck <DirectoryMatch ^/www/.*/[0-9]{3} > </DirectoryMatch> Detta exempel matchar alla underkataloger till /www/ som består av tre siffror 23
<Files> <Files> Anger inställningar för vissa filer, antingen i en viss katalog eller för hela webbservern <Directory /var/www/html/hemligkatalog > <Files \.doc > Order allow,deny Allow from 192.168.0.1 Deny from all </Files> Options Indexes </Directory> <FilesMatch> Fungerar på samma sätt som <Files>, men kan hantera reguljära uttryck <FilesMatch \.(gif jpe?g png)$ > </FilesMatch> 24
<Location> <Location> Anger inställningar för en viss URL <Location /admin> SetHandler server-status Order deny,allow Allow from admin.kalmar.se Deny from all </Location> Exemplet ovan visar specifik konfiguration för URL domän.tld/admin <LocationMatch> Fungerar på samma sätt som <Location>, men kan hantera reguljära uttryck <LocationMatch /(extra special)/data > </LocationMatch> 25
Säkerhet Apache tillhandahåller många säkerhetslösningar för olika ändamål Åtkomstkontroll Allow, deny.htaccess Användarverifiering.htaccess LDAP Krypterad överföring SSL Certifikat Certificate Authority 26
Enkel åtkomstkontroll Order Anger i vilken ordning anrop ska tillåtas Tillåt alla anrop som standard Order allow, deny Neka alla anrop som standard Order allow, deny Allow from Anger vilka datorer, IP-adresser och domäner som får ansluta till webbservern Allow from 192.168.0.1 admin.kalmar.se 10.0 Exemplet ovan anger att IP-adressen 192.168.0.1, datorn med domännamn admin.kalmar.se samt att hela 10.0-nätverket får ansluta till webbservern 27
Enkel åtkomstkontroll forts. Deny from Anger vilka datorer, IP-adresser och domäner som nekas anslutning till webbservern Deny from 165.65.74.21.kalmar.se 10.0.1 Exemplet ovan anger att IP-adressen 165.65.74.21, datorer med huvuddomän kalmar.se samt 10.0.1-nätverket nekas anslutning till webbservern 28
Åtkomstkontroll forts. Kataloger kan även skyddas med hjälp av.htaccess-filer Dessa filer styr vad och hur innehållet i katalogerna ska skyddas Kan även ange funktioner som enbart ska gälla för en viss katalog Bör endast användas om du inte har tillgång till webbserverns konfigurationsfil, då samma åtkomstkontroll kan uppnås genom att använda sig av direktivet <Directory> 29
Åtkomstkontroll forts. För att.htaccess ska fungera måste AllowOverride vara angivet i serverkonfigurationen AuthConfig Tillåt autentiseringsfunktioner FileInfo Tillåt direktiv som behandlar dokument Indexes Tillåter direktiv som kontrollerar kataloglistning Limit Tillåt direktiv som kontrollerar åtkomst via Order, allow och deny Options Tillåt Options 30
Användarverifiering via.htaccess Exempel på användarverifiering via.htaccess AuthType Anger vilken typ av autentisering som används, kan vara Basic eller Digest AuthName Anger beskrivning på det skyddade området AuthUserFile Anger vilken fil som ska användas vid användarautentisering AuthGroupFile Anger vilken fil som ska användas vid gruppautentisering Require Anger vilka användare/grupper som tillåts åtkomst Require user root nisse pelle Require group admins webbadmins AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/user.file AuthGroupFile /www/passwords/group.file Require Group admins 31
.htaccess forts. Skapande av en AuthUserFile görs via kommandot htpasswd # htpasswd c /var/passwords/user.file nisse New password: mypassword Re-type new password: mypassword Adding password for user nisse När nu filen är skapad kan vi lägga till ännu en användare # htpasswd /var/passwords/user.file pelle New password: mypassword Re-type new password: mypassword Adding password for user pelle Ta bort användare htpasswd D /var/passwords/user.file pelle 32
.htaccess forts. user.file nisse:7eth72.49nfgw För att göra lösenorden säkrare kan MD5-kryptering användas # htpasswd m /var/passwords/user.file pelle New password: mypassword Re-type new password: mypassword Adding password for user pelle user.file nisse:7eth72.49nfgw pelle:$apr1$h52jg/..$eb6ssx6gmgo6cu8roqy/q0 group.file admins nisse pelle root 33
Kryptering Kryptering används ofta för säker kommunikation De viktigaste anledningarna Konfidentialitet Integritet Autentisering Omöjliggöra förnekelse av överfört meddelande Vid kryptering används oftast en av de två vanligaste metoderna Symmetrisk nyckel Asymmetrisk nyckel 34
Symmetrisk nyckel Snabb och effektiv om enbart konfidentialitet och integritet behövs Vid kryptering med symmetriska nycklar innehar alla medverkande parter samma nyckel Detta innebär att om en utomstående part får tag i denna nyckel är inte informationen konfidentiell längre Klarar inte av att binda meddelande till en viss person, då alla krypterar och dekrypterar med samma nyckel DES och AES är exempel på symmetrisk kryptering 35
Asymmetrisk nyckel Använder två olika nycklar En för kryptering (publik nyckel) En för dekryptering (privat nyckel) Sändaren krypterar meddelandet med mottagarens publika nyckel, och mottagaren dekrypterar meddelanden med sin privata nyckel Dessa nycklar kan även användas för att signera meddelandet, så att mottagaren kan verifiera vem meddelandet verkligen kommer ifrån Vid signering av ett meddelande signerar sändaren meddelandet med sin privata nyckel, och denna signatur verifieras sedan av mottagaren med sändarens publika nyckel RSA är ett exempel på asymmetrisk kryptering SSL och TLS bygger på RSA 36
Asymmetrisk kryptering Bono Edge Läsbar text Krypterad text Läsbar text Edges publika nyckel Edges privata nyckel 37
Asymmetrisk verifiering Bono Verifiering Edge Originaltext Signerad text Verifierad text Bonos privata nyckel Bonos publika nyckel 38
HTTPS HTTPS är en säker version av HTTP, där all kommunikation är krypterad via antingen Secure Sockets Layer (SSL) eller Transport Layer Security (TLS) SSL/TLS Kryptografiska protokoll som tillhandahåller säker överföring över Internet TLS är efterföljaren av SSL Används bland annat av banker, e-handel och mailtjänster Skyddar emot avlyssning och förfalskning av meddelanden Vilken grad av skydd som ges beror på hur webbservern är konfigurerad HTTPS använder port 443 istället för standardport 80 39
HTTPS forts. För att Apache ska kunna använda sig av HTTPS, krävs att modulen mod_ssl är installerad och att ett certifikat skapas och signeras Certifikat används vid verifiering av webbplatsens äkthet Certifikat skapas oftast av väletablerade certifikatsutfärdare, såsom VeriSign, Thawte Consulting och VISA 40
Certifikat Använder en digital signatur för att koppla en publik nyckel till en identitet Kan användas för att verifiera att en publik nyckel är korrekt Ett certifikat innehåller bland annat Publik nyckel som signerats Identitet, såsom ett namn på en person, dator eller organisation Utfärdare Validitetsperiod 41
Certificate authority Utfärdar och verifierar digitala signaturer Är oftast en betrodd enhet Speciell del av företaget Utomstående företag, såsom VeriSign och Thawte consulting Det är möjligt att själv skapa certifikat i Linux med hjälp av OpenSSL 42
Certifikat forts. Sätta igång SSL i Apache under Ubuntu > sudo a2enmod ssl I CentOS läggs en fil till i /etc/httpd/conf.d som innehåller SSLkonfiguration och laddar modulen 43
Certifikat forts. Skapa nyckel # openssl genrsa -des3 -out server.key 1024 Generating RSA private key, 1024 bit long modulus...++++++...++++++ unable to write 'random state e is 65537 (0x10001) Enter pass phrase for server.key: Detta skapar en unik nyckel Lösenordet bör vara minst åtta tecken långt 44
Certifikat forts. Skapa en CSR (Certificate Signing Request) # openssl req -new -key server.key -out server.csr Du kommer här att få fylla i land, företag osv. När detta är klart skapas CSR:en och läggs i server.csr 45
Certifikat forts. Signera certifikatet # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Detta kommando skapar den signerade nyckeln sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private Kopiera nu nycklarna till exempelvis följande kataloger 46
Konfigurera Apache med SSL Följande ska läggas till i konfigurationen för den VirtualHost du vill ha SSLkrypterad SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key Du måste även lägga till att Apache ska lyssna på port 443 Listen 443 47
Demo 48