Server

Synnerligen intressant om Server


Hypertext Transfer Protocol

Hypertext Transfer Protocol (HTTP) är det kommunikationsprotokoll som används för att överföra webbsidor på informationsnätverket WWW, World Wide Web på Internet. Det ursprungliga syftet med HTTP var att tillhandahålla en metod för att överföra HTML-sidor från webbservrar till webbklienter. Utvecklingen av HTTP koordinerades av World Wide Web Consortium (W3C) och arbetsgrupper i Internet Engineering Task Force och kulminerade i publicerandet av en serie RFC:er, av vilka RFC 2616 (tidigare RFC 2068) är av störst vikt, som definierar HTTP/1.1, den version av HTTP som idag är i bredast tillämpning. HTTP bygger på ett förfrågan/svar-förfarande mellan klient och server. En HTTP-klient, vanligen en webbläsare, som skall hämta en HTML-fil, en bild eller annan fil från en webbserver skickar en förfrågan bestående av en kort textsträng till en TCP-port på servern, vanligen nummer 80. Textsträngen innehåller information om vilken version av HTTP som används, och vilken fil (eller annan resurs eller information) som klienten vill att servern skall skicka. En HTTP-förfrågan kan till exempel se ut som följande: "GET /index.html HTTP/1.1" (vilket med hjälp av HTTP version 1.1 skulle begära en överföring av serverns indexdokument till webbläsaren). Med förfrågan skickas ofta även ett eller flera MIME-meddelanden som innehåller extra information om vad klienten vill ha, till exempel preferens för olika språk och filformat. I HTTP 1.1 (till skillnad från 1.0) är MIME-parametern "Host" (namnet på den anropade webbservern) obligatorisk och måste skickas med varje förfrågan för att servern skall svara. När förfrågan mottagits av servern svarar denna med att skicka tillbaka ett kort svar, tillsammans med en datamängd som innehåller det efterfrågade dokumentet om detta återfanns på servern. Tidiga versioner av HTTP kunde endast skicka en enda HTTP-förfrågan per TCP-koppling. Detta skapade problem vid webbsidor som innehöll många bilder, eftersom webbläsaren var tvungen att hämta varje bild för sig. I Netscape löstes problemet genom att alltid använda fyra TCP-kopplingar, och växelvis använda dem till att hämta bilder. Denna lösning ledde dock till prestandaproblem eftersom varje TCP-koppling var fristående från varandra och inte kunde reagera på stockning i nätet. I senare versioner av HTTP har man lagt till speciella funktioner för att kunna hämta flera filer samtidigt med samma TCP-koppling, vilket bidrar till att minska problemen. HTTP definierar åtta kommandon som en klient kan skicka till en resurs på en HTTP-server. Metoderna GET och HEAD är definierade som säkra, med andra ord avsedda uteslutande för informationshämtning. Icke-säkra metoder (som POST, PUT och DELETE) bör presenteras i webbklienten på något särskilt sätt (till exempel som knappar istället för länkar), så att användaren blir medveten om de potentiella effekterna av deras användning. HTTP-servrar förväntas implementera åtminstone metoderna GET och HEAD, och om möjligt även OPTIONS. Svaret från webservern innehåller en HTTP-statuskod, som anger huruvida förfrågan lyckats och i annat fall på vilket sätt den misslyckats (filen saknas, har flyttats eller kräver autentisering, webbservern har tillfälliga problem, förfrågan är felformulerad etc.). HTTP förekommer i ett antal olika versioner, som alltid anges explicit. Klientförfrågan (avslutas med en tom rad, så att förfrågan i sin helhet avslutas med två radbrytningar, var och en i form av vagnreturstecken (<, CR>, ) följt av ett radbytestecken (<, LF>, ).). "Host"-strängen väljer värdens domännamn om flera finns att välja på för den kontaktade datorn. Detta tillåter samma dator att köra flera webbservrar, med olika associerade domännamn, så kallade virtual hosting. Detta var en frivillig komplementsfunktion i HTTP/1.0, men måste stödas av HTTP/1.1-servrar. Svar från servern (följs av en blank rad och texten i det efterfrågade dokumentet).

Lightweight Directory Access Protocol

Lightweight Directory Access Protocol (LDAP) definierar ett protokoll och en datamodell för kommunikation med en katalogtjänst. LDAP skapades av Tim Howes, Steve Kille och Wengyik Yeong. LDAP används för att utföra snabba och effektiva sökningar på katalogservrar. Standarden, som LDAP baseras på (X.500), använder OSI-modellen som protokoll-modell medan LDAP använder TCP/IP. Innan LDAP-servrar började komma, använde LDAP-klienter en LDAP-gateway, som gjorde om LDAP-trafiken till X.500-trafik. Protokollet X.500 har dock förändrats och kan nu användas direkt över TCP/IP. X.500 använder Directory Access Protocol (DAP) för att komma åt X.500-katalogtjänster. LDAP var till en början ett lättviktigt alternativ för att ge åtkomst till X.500-katalogtjänster, men har på senare tid expanderat och blivit lika komplex som X.500. En klient kopplar upp mot en LDAP-server via TCP-porten 389 (standard). Ett alternativ för att få säker anslutning är att koppla upp via en SSL-tunnel (port 636). Detta sätt utfasades i.o.m. att LDAPv2 officiellt gick i pension (2003). Det nya sättet är att använda LDAPv3 Transport Layer Security (TLS) (operationen Start TLS). Klienten skickar förfrågningarna till servern asynkront medan servern skickar sina svar i turordning. Dessa operationer kan en klient göra förfrågningar om. Servern skickar svar på dessa förfrågningar men kan också skicka ett "Unsolicited Notifications". Meddelandet är inte ett svar på en förfrågan utan skickas till exempel innan anslutningen gör timeout. Protokollet ger åtkomst till LDAP-kataloger (även X.500-kataloger). Exempel från LDAP (på engelska), som representeras i LDAP Data Interchange Format (LDIF). dn avser namnet på kataloguppgiften och är inte ett attribut. cn=John Doe är uppgiftens RDN dc=example, dc=com är föräldrarnas DN. Attributen består av namn som är lätta att förstå. Till exempel dn står för Distinguished Name (unikt namn), mail står för e-mail och sn står för surname (efternamn). När klienten skickar en förfrågan, skickas ett meddelandeid med som servern skickar med tillbaka. Servern skickar även med en resultatkod som indikerar om det gått bra, blivit något fel eller något annat specialfall inträffat. Operationen StartTLS upprättar en säker anslutning via TLS-protokollet. Detta erbjuder datasekretess och/eller dataintegritet. Servern autentiserar klienten med operationen Bind. Anslutningen bör vara skyddad med TLS, då det finns enkla autentiseringar som skickar DN och lösenord i klartext. Förutom autentisering sätts LDAP-protokollversionen. Operationen Bind måste vara först i sessionen om LDAPv2 används. Detta behövs inte i LDAPv3. Operationerna sök och jämför används för att söka och läsa poster. baseObject: Den DN (Distinguished Name) där sökningen ska starta. scope: BaseObject (sök bara efter namngivna posten), singleLevel (poster direkt under roten DN), eller wholeSubtree (hela subträdet med början vid roten DN). filter: Hur varje post ska undersökas. derefAliases: Om och hur aliasposter ska följas (poster som hänvisar till andra poster). attributes: Vilka attribut som ska skickas tillbaka i resultatposterna. sizeLimit, timeLimit: Maximala antalet poster och maximala söktiden. typesOnly: Skicka tillbaka attributtyperna, inte deras värden. Till denna parameter hör Lägg till (add), Ta bort (delete) och Ändra (modify). För att kunna utföra dessa operationer så måste DN vara specificerat. Denna operation används för definiera nya operationer. Hit hör Cancel, Password, Modify och StartTLS. Operationen skickas tillsammans med ett meddelande-id. Servern avbryter operationen (som har meddelande-id), om den vill. Abandon skickar inget svar tillbaka. Operationen Cancel har definierats att göra samma sak som Abandon och även skicka tillbaka ett svar. Används för att stänga ner en anslutning. Inget svar skickas tillbaka. LDAP används inom bl.a. tre områden av program. Start TLS - använder LDAPv3 Transport Layer Security (TLS) för en säker anslutning.

Secure Shell

Användaren autentiseras vanligen med lösenord eller med RSA- eller DSA-nycklar. Det fanns en efterfrågan på en fri version av SSH. 1999 hittade Björn Grönvall versionen 1.2.12 av programmet, vilken var den sista av Ylönen som helt använde fria licenser. På basen av denna utvecklades OpenSSH. År 2006 klassificerade IETF SSH-2 som internetstandard, och fastställde att SSH-1 inte längre bör användas. De flesta servrar och klienter stödjer idag SSH-2. Programvara som inte stödjer SSH-2 används emellertid fortfarande av många, vilket gör det svårt att avvara SSH-1. SSH används idag av mängder av program, men används mest. Vid vidarebefordring av portar är kommunikationen säkrad mellan tunnelns ändpunkter. Om klienten kontaktar en SSH-server på samma dator och denna kopplas till en SSH-server på den egentliga värddatorn kan man använda program och protokoll som i sig är osäkra utan att förbindelsen kan avlyssnas eller manipuleras av datorer på nätet mellan ändpunkterna. Användningsområdet för sådana SSH-transporter inkluderar databasservrar, e-postservrar, Windows' fjärrskrivbord och VNC-anslutningar. Det är inte ovanligt att datorer med SSH-server som är direktanslutna till internet utsätts för tusentals oauktoriserade inloggningsförsök dagligen. Datorer som är direktanslutna till Internet brukar därför aldrig tillåta SSH-inloggning med root som användarnamn. Inloggningsmöjligheten kan begränsas till vissa användare eller användargrupper (möjligen "users", som innefattar vanliga användare men inte användarnamn för specialändamål). Det förra gör att angriparen inte får andra rättigheter än vad den specifika användaren har, och då i regel måste hitta andra svagheter för att fullfölja attacken, det senare att illasinnade måste gissa (eller ta reda på) både användarnamn och lösenord för att kunna logga in, vilket gör det betydligt svårare. Dessa inställningar görs på Unix-maskiner vanligen i filen /etc/ssh/sshd_config. Det är inte ovanligt att inloggning som root eller för alla är avstängd som förval, och administratören alltså måste bestämma vem eller vilka grupper som skall få logga in. Användargrupperna kan regleras med nyckelorden "AllowUsers", "DenyUsers", "AllowGroups" och "DenyGroups". Man kan också reglera från vilka datorer inloggning är tillåten, till exempel (på Unix) med direktiv i filen /etc/hosts.allow. Ytterligare sätt att försvåra intrång av den här typen är att använda olika säkerhetsdaemoner som till exempel sshguard. Dessa fungerar vanligtvis så att de automatiskt, till exempel via iptables eller /etc/hosts.conf, blockerar ip-adresser till klienter som genererat ett visst antal misslyckade inloggningsförsök. Risken med detta är att man kan utestänga legitima användare genom inloggningsförsök med samma ip-adress, antingen ifråga om fleranvändardatorer eller datorer bakom samma NAT-värd eller möjligen med förfalskade ip-adresser (TCP borde försvåra förfalskning) – eller helt enkelt så att den legitima användaren misslyckas för många gånger. En mer avancerad metod är "dörrknackning" ("port knocking"), som innebär att man först måste kontakta vissa andra portar för att sshd-porten över huvud taget skall öppnas. En enklare variant, som dock ger bara begränsat stöd, är välja att låta SSH-servern lyssna på en annan port än den vanliga, varvid den inte hittas utan att en mängd portar undersöks. På datorer med många användare är standardlösningar ofta nödvändiga. Därvid är det viktigt att så långt som möjligt tvinga användare att använda starka lösenord. I sammanhang där man lägger stor vikt vid säkerheten kan man förbjuda inloggning med lösenord och istället endast använda RSA- eller DSA-nycklar, varvid det är nyckelhanteringen som blir den svaga punkten.

Network Time Protocol

NTP eller Network Time Protocol är ett protokoll för att synkronisera tiden i ett nätverk med varierande svarstider. Det är speciellt designat för att motstå effekterna av varierande lagg (jitter). NTP använder UDP-porten 123 som sitt transportskikt. NTP skapades av Dave Millis från University of Delaware, och släpptes 1984 och är ett av de äldsta protokollen som fortfarande används idag. Han har sedan fortsatt underhålla protokollet med ett team av frivilliga personer. NTP använder Marzullos algoritm med tidsformatet UTC och har stöd för flera funktioner . En sådan funktion är tillägg av skottsekunder. NTPv4 kan normalt uppehålla en hastighet inom 10 millisekunder över internet och uppnå en noggrannhet av 200 mikrosekunder eller bättre i ett lokalt nätverk under ideala förhållanden. En så kallad "NTP Unix daemon" är en process som körs oavbrutet på en maskin med stöd för NTP och det mesta av protokollet är implementerat i denna process. För att få den bästa prestandan från NTP är det viktigt att ha en PLL-krets på operativsystemskärnan, istället för att bara använda den externa NTP daemon – alla de senaste versionerna av Linux, BSD och Solaris operativsystem har sådant stöd. Ett mindre avancerat alternativ till NTP kallas Simple Network Time Protocol (SNTP). Den kräver ingen lagring av information om skapade förbindelser och kan användas när man inte behöver exaktheten hos NTP. NTP använder ett hierarkiskt system för att skapa bättre kommunikation, vilket kallas för "clock strata". Dessa strata innefattar. Stratum 0 är enheter så som atomur, GPS-klockor och andra former av radiobaserade klockor. Detta är högsta nivån i hierarkin. Stratum 1 kallas även för primära NTP-servrar. Stratum 1-servrar hämtar sin tid från stratum 0-enheter via direktkopplingar, så som RS-232. Stratum 2 kallas även för sekundära NTP-servrar. Dessa hämtar sin tid från stratum 1-servrarna, det vill säga från de primära servrarna. Stratum 3 hämtar sin tid från stratum 2-servrar och fungerar på samma sätt som en stratum 2-server i övrigt. Andra servrar kan i sin tur hämta tid från en stratum 3-server. För varje nivå minskar exaktheten något, dock knappt märkbart för normal användning. Sexton är den maximala strata-nivån för NTP version 4. 1993 etablerades en svensk NTP-server via företaget STUPI AB. Televerket/Telia hade tidigare krävt 100 000 USD per år för samma tjänst men STUPI lyckades ordna detta för en startkostnad om 5000 USD. Då Telia själva började använda nättjänsten men inte önskade betala samma belopp för sitt användande så blev Telias nät spärrat med BGP-filtrering. Statens Provningsanstalt erbjuder idag NTP-tjänster via ett flertal servrar.

Skräppostfilter

Ett skräppostfilter, spamfilter eller spamskydd är ett program som har till uppgift att automatiskt skilja skräppost (även kallat spam) från önskad e-post, så kallad värdepost. Skräppostfilter kan köras på såväl enskilda persondatorer som e-postservrar. Filter på servern överlåter administrationen till den som underhåller e-postservern (till exempel internetleverantören), men det kan vara svårt att avgöra om värdepost av misstag sållats bort som skräppost. Därför är filter som körs på e-postservrar ofta restriktiva med att märka meddelanden som skräppost. Dessa är relativt lätta att lura genom att till exempel skriva \/!agra. Eftersom många av dessa program räknar ord och poängsätter dessa kan det också räcka med att stoppa in ett antal vanliga ord i meddelandet för att det skall slinka igenom. Man kan också använda sig av SPF, om avsändarens domän stöder det. SPF innebär att den legitima avsändaren specificerar i sin DNS-server vilka IP-adresser som får lov att skicka med en viss avsändardomän. Om avsändande mejlservers IP-adress inte stämmer mot SPF:en så innebär det att mejlet är förfalskat och kan slängas/nekas på direkten. Det innebär att man kan skippa eventuella svartlistningar av IP-adresser (Se nedan) om avsändar-IP:t godkänns i SPF. Om en SPF-godkänd avsändare spammar, så kan man blockera dess e-postadress, då den är verifierad som äkta. Eftersom avsändarens e-postadress nästan alltid är förfalskad är det enda som fungerar att spärra avsändarens e-postserver. Det finns ett antal databaser som kan utnyttjas för att direkt kontrollera om det inkommande meddelandet kommer från en sådan svartlistad server. En tjänst som kan användas för att anmäla skräppostande är Spamcop. Förutom att rapporter vidarebefordras till en rad ansvariga administratörer går också informationen till ovannämnda databaser. E-postfilter är en funktion i e-postprogram som automatiskt kan utföra åtgärder på e-brev. Åtgärderna utförs normalt efter regler som användaren har satt upp, till exempel baserat på avsändare, ord från innehållet eller andra egenskaper hos brevet. Värt att notera är att det är skillnad på om filtreringsfunktionen utförs i e-postservern eller i e-postklienten. I det förra fallet fungerar oftast (beroende på server) filtret oberoende av om användaren läser sin e-post, medan det i det senare fallet krävs att användaren har e-postklienten med filtret igång och är uppkopplad mot servern. E-postservrar kan också ställas in så att de alltid avvisar meddelanden den första gången de anländer till servern. En riktig e-postserver kommer att försöka skicka meddelandet igen, medan skräppostare sällan gör det. Microsoft bemöter skräpposthotet med plattformen IMF, baserad på Microsoft Hosted Exchange. IMF utnyttjar flera olika tekniker för att identifiera och avvisa skräppost, bland annat innehållsanalys, svartlistning och grålistning. Microsoft IMF tillhandahålls av tredjepartsleverantörer. Kategorisering av e-brev i en mapp. Skicka förutbestämda svar på inkommande brev. Borttagning av inkommande brev, vilket kan vara praktiskt för att ta bort så kallad skräppost.


Server