Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
WebbservrarApache httpdLinuxadministration II 1DV421
1
Thursday, August 22, 13
Referenslitteratur
• Administering and Securing the Apache Server
• Contributor: Appu, Ashok(Author)
2
Thursday, August 22, 13
Historia
• Rob McCool
• National Center for Supercomputing Applications
• Apache Group
• Version 1.0 i december 1995
3
Thursday, August 22, 13
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
11%4%
15%
23%
47%
Apache IIS ngix Google Övriga
4
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
Vad Apache hantera?• HTML
• Bilder
• Ljud
• Animationer
• Interaktiva skript
• Säkerhetsbaserade webblösningar
• Virtuella domäner
• M.m.
7
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
Coremoduler• core
• mpm_common
• leader
• beos, mpm_netware, mpm_os2, mpm_winnt
• perchild
• prefork
• worker
12
Thursday, August 22, 13
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
Thursday, August 22, 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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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å
• Direktiv
• Börjar med <Direktiv> och avslutas med </Direktiv>
ServerName www.norden.netTimeOut 120Listen 80
<Directory ”/www/katalog”>…</Directory>
18
Thursday, August 22, 13
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
Thursday, August 22, 13
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.netListen 80ServerRoot /etc/httpdDocumentRoot /www/htmlUser apacheGroup apacheServerAdmin [email protected] 120KeepAlive off
20
Thursday, August 22, 13
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
Thursday, August 22, 13
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 [email protected] DocumentRoot /www/html/student ServerName student.kalmar.se ServerAlias www.student.se</VirtualHost>
22
Thursday, August 22, 13
<Directory>• <Directory>
• Anger inställningar för en viss katalog
• <DirectoryMatch>
• Fungerar på samma sätt som <Directory>, men kan hantera reguljära uttryck
• Detta exempel matchar alla underkataloger till /www/ som består av tre siffror
<Directory ”/var/www/html/katalog”> Options Indexes Order allow,deny Allow from all</Directory>
<DirectoryMatch ”^/www/.*/[0-9]{3}”>…</DirectoryMatch>
23
Thursday, August 22, 13
<Files>• <Files>
• Anger inställningar för vissa filer, antingen i en viss katalog eller för hela webbservern
• <FilesMatch>
• Fungerar på samma sätt som <Files>, men kan hantera reguljära uttryck
<Directory ”/var/www/html/hemligkatalog”> <Files ”\.doc”> Order allow,deny Allow from 192.168.0.1 Deny from all </Files> Options Indexes</Directory>
<FilesMatch ”\.(gif|jpe?g|png)$”>…</FilesMatch>
24
Thursday, August 22, 13
<Location>• <Location>
• Anger inställningar för en viss URL
• 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
<Location /admin> SetHandler server-status Order deny,allow Allow from admin.kalmar.se Deny from all</Location>
<LocationMatch ”/(extra|special)/data”>…</LocationMatch>
25
Thursday, August 22, 13
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
Thursday, August 22, 13
Enkel åtkomstkontroll• Order
• Anger i vilken ordning anrop ska tillåtas
• Tillåt alla anrop som standard
• Neka alla anrop som standard
• Allow from
• Anger vilka datorer, IP-adresser och domäner som får ansluta till webbservern
• 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
Order allow, deny
Order allow, deny
Allow from 192.168.0.1 admin.kalmar.se 10.0
27
Thursday, August 22, 13
Enkel åtkomstkontroll forts.
• Deny from
• Anger vilka datorer, IP-adresser och domäner som nekas anslutning till webbservern
• 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
Deny from 165.65.74.21 .kalmar.se 10.0.1
28
Thursday, August 22, 13
Å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
Thursday, August 22, 13
Å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
Thursday, August 22, 13
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 BasicAuthName "Password Required"AuthUserFile /www/passwords/user.fileAuthGroupFile /www/passwords/group.fileRequire Group admins
31
Thursday, August 22, 13
.htaccess forts.• Skapande av en AuthUserFile görs via kommandot htpasswd
• När nu filen är skapad kan vi lägga till ännu en användare
• Ta bort användare
# htpasswd –c /var/passwords/user.file nisseNew password: mypasswordRe-type new password: mypasswordAdding password for user nisse
# htpasswd /var/passwords/user.file pelleNew password: mypasswordRe-type new password: mypasswordAdding password for user pelle
htpasswd –D /var/passwords/user.file pelle
32
Thursday, August 22, 13
.htaccess forts.• user.file
• För att göra lösenorden säkrare kan MD5-kryptering användas
• user.file
• group.file
nisse:7Eth72.49nfGw
# htpasswd –m /var/passwords/user.file pelleNew password: mypasswordRe-type new password: mypasswordAdding password for user pelle
nisse:7Eth72.49nfGwpelle:$apr1$h52JG/..$eb6ssX6Gmgo6Cu8ROqy/q0
admins nisse pelle root
33
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
Asymmetrisk kryptering
Bono Edge
Läsbar text
Edges publika nyckel Edges privata nyckel
Krypterad text Läsbar text
37
Thursday, August 22, 13
Asymmetrisk verifiering
Bono Edge
Originaltext
Bonos privata nyckel Bonos publika nyckel
Signerad text Verifierad text
Verifiering
38
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
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
Thursday, August 22, 13
Certifikat forts.
• Sätta igång SSL i Apache under Ubuntu
• I CentOS läggs en fil till i /etc/httpd/conf.d som innehåller SSL-konfiguration och laddar modulen
> sudo a2enmod ssl
43
Thursday, August 22, 13
Certifikat forts.
• Skapa nyckel
• Detta skapar en unik nyckel
• Lösenordet bör vara minst åtta tecken långt
# openssl genrsa -des3 -out server.key 1024Generating RSA private key, 1024 bit long modulus.....................++++++.................++++++ unable to write 'random state’e is 65537 (0x10001) Enter pass phrase for server.key:
44
Thursday, August 22, 13
Certifikat forts.
• Skapa en CSR (Certificate Signing Request)
• 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
# openssl req -new -key server.key -out server.csr
45
Thursday, August 22, 13
Certifikat forts.
• Signera certifikatet
• Detta kommando skapar den signerade nyckeln
• Kopiera nu nycklarna till exempelvis följande kataloger
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
sudo cp server.crt /etc/ssl/certssudo cp server.key /etc/ssl/private
46
Thursday, August 22, 13
Konfigurera Apache med SSL
• Följande ska läggas till i konfigurationen för den VirtualHost du vill ha SSL-krypterad
• Du måste även lägga till att Apache ska lyssna på port 443
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
Listen 443
47
Thursday, August 22, 13
Demo
48
Thursday, August 22, 13