610 likes | 768 Views
MSDN Live för utvecklare av utvecklare. Resurser för utvecklare. Helt dedikerad till säkerhet Artiklar Introduktion till säkerhet Loggning i ASP.NET WSE Filmer Evenemang Förslag??? http://www.microsoft.se/msdn/security. Resurser för utvecklare. MSDN TV Nivå 100-200 30 minuter
E N D
Resurser för utvecklare • Helt dedikerad till säkerhet • Artiklar • Introduktion till säkerhet • Loggning i ASP.NET • WSE • Filmer • Evenemang • Förslag??? • http://www.microsoft.se/msdn/security
Resurser för utvecklare • MSDN TV • Nivå 100-200 • 30 minuter • 1-2 demonstrationer • Se direkt eller ladda ned • 31 sessioner tillgängliga • Säkerhet • SOA • XML Web Services • ...
Resurser för utvecklare • MSDN Subscription • Individuell prenumeration • Prioriterad tillgång till mjukvara • Automatisk månadsvis uppdatering
Varför just den här dagen? • Applikationssäkerhet är ett resultat av ett effektiv partnerskap mellan: • Arkitekter • Utvecklare • Administratörer • Utvecklare bidrar till säkerhet genom att… • förstå befintliga säkra tekniker vid utveckling • förstå var sårbarheter uppstår och hur de undviks • Under utvecklingen använda sig av riktlinjer och rekommendationer som förbättrar säkerheten • Den här dagen ger en genomgång av utvecklarens roll vid förbättring av säkerhet
Grundläggande säkerhet för utvecklare Johan LindforsDeveloper EvangelistMicrosoft AB
Vad kommer vi gå igenom • Varför är det viktigt med säkerhet? • Jag är ju utvecklare!!! • Att anamma riktlinjer och rekommendationer • Säkerhetstekniker och teknologier • Utvecklare: Hur går jag vidare?
Vad kommer vi gå igenom • Varför är det viktigt med säkerhet? • Jag är ju utvecklare!!! • Att anamma riktlinjer och rekommendationer • Säkerhetstekniker och teknologier • Utvecklare: Hur går jag vidare?
“Trustworthy Computing” “Trustworthy Computing” har fyra hörnstenar: Tillförlitlighet innebär att ett datorsystem är pålitligt, är tillgängligt när det behövs, och uppträder förväntat och på korrekta nivåer. Säkerhet innebär att ett system har lätt att återhämta sig efter en attack, och att konfidentialiteten, integriteten och tillgängligheten av både systemet och dess data är skyddat. Avskildhet innebär att personer kan själv ha kontroll över sin personliga information och att organisationer som använder informationen troget skyddar den. Affärsintegritet handlar om att företag i vår industri ansvarar för sina kunder och hjälper dem hitta lämpliga lösningar för deras affärsutmaningar, adresserar problem med produkter eller tjänster och är öppna i interaktionen med kunden. Bill Gates, Juli 18, 2002
Applikationer i en fientlig miljö • Mobila användare kopplar upp sig över publika nätverk • Anställda kopplar upp sig mot företagets nätverk • Anställda kopplar upp sig mot andra nätverk • Partners kopplar sig mot XML Web services • Krav på Internet • Fler och fler applikationer kräver Internet • Internet är en fientlig miljö • Arroganta eller naiva processer • Svaga interna processer gör applikationer sårbara
Organisations- attacker Hackers Automatiserade attacker Skyddad data DoS Säkerhetsintrångav misstag Tappad uppkoppling “Denial of Service” (DoS) Virus, trojaner, maskar Vanliga attacker
Konsekvenser? • Virus, finansiella bedrägerier, sabotage av nätverk och andra intrång kan resultera i: • Stulen “intellectual property” • Försämrad tillgänglighet • Förlorad produktivitet • Skadat rykte på marknaden • Förlorat förtroende från kunder • Svåra finansiella förluster på grund av missade intäkter
Exempel på säkerhetsintrång • CodeRed masken • Började infektera datorer juli 19, 2001 • Infekterade över 359 000 datorer på 14 timmar • Utnyttjade en känd “buffer overflow”-sårbarhet i IIS • ILoveYou • Infekterade genom en .vbs-bilaga till e-post • Kopior skickades till alla mottagare i adressböcker • Raderar bilder och .mp3 filer och kunde förstöra registret • Nimda masken • Uttnyttjade en sårbarhet i “Web Server folder traversal” • Drabbade internet hårt september 18, 2001
Hackers mot administratörer Säkerhet mot enkelhet Behöver jag säkerhet… Säkerhet som en eftertanke Utmaningar med säkerhet En hacker behöver bara förstå en sårbarhet En adminstratör måste kunna säkra alla attackytor Hackers har obegränsat med tid Adminstratörer arbetar under tid och kostnadspress Säkra system är svåra att använda Komplexa och svåra lösenord, är också svåra att minnas Användare föredrar enkla lösenord Utvecklare och beslutsfattare tror inte att säkerhet adderar något affärsvärde Att adressera sårbarheter precis innan lansering är extremt dyrt
Vad kommer vi gå igenom • Varför är det viktigt med säkerhet? • Jag är ju utvecklare!!! • Att anamma riktlinjer och rekommendationer • Säkerhetstekniker och teknologier • Utvecklare: Hur går jag vidare?
Holistisk syn på säkerhet • Säkerheten är enbart så bra som den svagaste länken • Säkerhet måste tänkas på i alla nivåer • Vid design, utveckling och utrullning • På nätverket, datorer och applikationer
Tidslinje Genomför externgranskning Analyserahot Lär av misstagoch applicera Inventerasäkerhetskompetensvid anställning Bestäm kriterierför säkerhet Testa luckoroch sårbarheter Koncept Lansering Efterlansering Design klar Testplanerklara Kodenklar Lös säkerhetsfrågor, verifiera kodmot riktlinjer Utbildadeltagare iprojektet Tester av datapåverkan och minsta rättigheter Genomför granskning avsäkerhetsgrupp =pågående
Säkerhetsramverket SD3 • Säker arkitektur och kod • Hotbildsanalys • Mindre sårbarheter ”Secure bydesign” • Minskad exponering av sårbarheter • Slå av funktioner som inte används • Använd så få rättigheter som möjligt ”Secure bydefault” ”Secure indeployment” • Identifiera, skydda och hantera • Använd riktlinjer, arkitektur • Utbilda personalen
Hot och sårbarhetsanalys • Hotbildsmodellering är en säkerhetsbaserad analys av en applikation • Hjälper utvecklingsteamet förstå var applikationen är mest sårbar • Bestämmer vilka hot som kräver åtgärd och vilka åtgärder som bör tas • En kritisk del av designprocessen • Omöjligt att bygga säkra system utan en god förståelse av dina hot • Minskar kostnaden att säkra en applikation • Billigare att hitta en säkerhetsbug i designen och föreslå lösningen innan kodning påbörjas
Pågående utbildning • Den här dagen räcker inte! • Förstå hur säkerhetsfunktioner fungerar • Förstå hur dessa funktioner kan användas för att bygga säkra system • Förstå hur sårbarheter ser ut för att kunna identifiera felaktig kod vid genomgångar • Lär att undvika vanliga sårbarheter • Lär av misstag
Utbildning efter idag! • Cornerstone • Kurser och seminarier • Certifieringar • Jönsson & Lepp • Kurser och seminarier • Certifieringar • Nexus • Workshops och laborationer
Riktlinjer för bättre säkerhet (1/2) • Använd hotbildsmodellering • Använd utbildning • Lär er vanliga säkerhetsdefekter och undvik dem • Förstå användandet och korrekt förfarande av tekniker för säkerhet • Använd kodgranskning och fokusera på kod som: • Gör åtkomst till nätverket • Kör som grundinställning • Använder icke autentiserade protokoll • Exekverar med höga rättigheter
Riktlinjer för bättre säkerhet (2/2) • Använd verktyg: • Bygg verktyg för att skala ut och uppåt • Det bästa verktyget är mellan dina öron! • Fundera på att migrera till hanterad kod! • Återuppfinn inte hjulet • Undvik egna krypteringsalgoritmer • Använd lösningar för infrastrukturen som SSL/TLS • Använd erkända komponentiserade lösningar som CAPICOM eller namnrymden i .NET Framework för kryptering
Vad kommer vi gå igenom • Varför är det viktigt med säkerhet? • Jag är ju utvecklare!!! • Att anamma riktlinjer och rekommendationer • Säkerhetstekniker och teknologier • Utvecklare: Hur går jag vidare?
Två vanliga sårbarheter • Användarinmatning • “All inmatning är OND, tills motsatsen är bevisad!” • “Buffer Overruns” • “SQL Injection” • “Cross-site Scripting” • Allt annat
Överblick av säkerhetstekniker • Utvecklare behöver förstå användande och förfaranden av säkerhetstekniker: • Kryptering och hashning • Digitala signaturer • Digitala certifikat • Säker kommunikation • Autentisering • Auktorisering • Brandväggar • “Auditing” • “Patchar” och uppdateringar
Data Vad är kryptering? • Kryptering är processen för att förvanska data • Skydda en användares identitet eller data • Verifierar att data kommer från avsedd användare • En nyckel är en binär sträng som kan variera resultatet av en kryptering • Kryptering är aldrig starkare än vad nyckeln erbjuder Nyckel Krypteringsalgoritm
Data Data Privat nyckel är kändav sändare och mottagare Kryptering Dekryptering Symmetrisk kryptering • Använder samma algoritm och nyckel för att kryptera och dekryptera • Är snabb och effektiv • Har en utmaning i säkert utbyte av nycklar, vilket tenderar att ske ofta
Bertil Publik nyckel Asymmetrisk kryptering • Meddelanden krypteras med en publik nyckel och kan bara dekrypteras med en privat nyckel och vice versa • Asymmetrisk kryptering är säkrare än symmetrisk, men inte lika effektiv Anna Privat nyckel Publik nyckel
Data Data Data Hashning och identiteter Bertil Anna Hash- algoritm Hashvärde Om hashvärdena stämmer överrens så stämmer data Hashalgoritm Hashvärde Hashvärde Anna skickar data och hashvärdet till Bertil
Bertil Anna Hash algoritm Data Data Hash- algoritm Annaspublika nyckel Hashvärde Hashvärde Hashvärde AnnasPrivatanyckel Digitala signaturer Hashvärden stämmer: Data kommer från ägaren av den privata nyckeln och är korrekt
Publiknyckel Digitala certifikat
Hur skapar vi certifikat? Privat nyckel Användare Privat/Publikt nyckelpar Dator Publik nyckel Tjänst Applikation “Certification Authority” Certifieradadministratör
IPSec “RPC Encryption” SSL/TLS Säker kommunikation • Tekniker för säker kommunkation • Erkända lösningar som använder kryptering för att skydda integriteten på data över nätverket • Tekniker innehåller: • IPSec, SSL/TLS, “RPC Encryption”
Hur används IPSEC? IPSec regler IPSec regler Handskakning och överrenskommelse TCP lager TCP lager IPSec IPSec Krypterade paket över IP
Hur fungerar SSL? Webbserverrotcertifikat 2 Meddelande Säkerwebbserver Säker webbläsare 3 4 HTTPS 1 Användaren surfar till en säker webbserver genom HTTPS Webbläsaren skapar en unik sessionsnyckel och krypterar den med webbserverns publika nyckel, som genereras från rotcertifikatet Webbservern tar emot sessionsnyckeln och dekrypterar den med sin privata nyckel Efter uppkopplingen är gjord så sker all kommunikation mellan webbläsare och server säkert 1 2 3 4
Autentisering • Autentisering • Verifiering av identiteten genom att acceptera utsagor och bevis och validering av dessa • Säker kommunikation • Kryptering av data är inte tillräckligt! • Autentisering av mottagare är kritiskt för att veta vem som använder data
Autentisering • “Basic authentication” • “Digest authentication” • Digitala signaturer och digitala certifikat • Integrerad autentisering • Kerberos version 5 • NTLM • Microsoft Passport • Biometrik
”Basic Authentication” • Enkel men effektiv • Stöds av alla stora webbläsare – visar ett inloggningsfönster för användarnamn ochlösenord • Användarnamn och lösenord skickas som ren text så detta måste kombineras med SSL/TLS • Enkelt att programmera och installera • Information om användare måste hanteras på servern
5 Active Directory Server 6 1 Begäran Utmaning Lösenord X$!87ghy5 2 4 Lösenord Klient X$!87ghy5 3 “Digest Algorithm” ”Digest Authentication”
När använda certifikat? • I webbapplikationer • SSL/TLS använder X.509 certifikat för att autentisera • Autentiserar klienten genom data från klientens X.509 certifikat • Certifikatet genereras av en CA som servern har ett rotcertifikat för • I distribuerade applikationer: • Applikationen använder kommunikationskanaler med SSL/TLS • Klient och serverapplikationer autentiseras med certifikat • Andra säkerhetsapplikationer • På smarta kort • Klientens certifikat lagras ofta på ett “smartcard”
Klient Integrerad autentisering? Kan inte använda integrerad autentisering Intranetlösning? Nej Brandvägg Ja Windows 2000 eller senare? Nej NTLM - Server autentisering Integrerat iWindows Ja Active Directory domän? Nej Kerberos - Klient och server autentisering Ja
TGT TGT ST ST Åtkomst till tjänst KDC KDC 2 2 Server 1 3 1 3 4 TGT sparas lokalt Klient Klient Session skapas “Service Ticket“ ST Kerberos version 5 Inloggning “Ticket-Granting Ticket” TGT
Auktorisering • Efter att “anropare” är autentiserade • Vad tillåter jag att dem gör? • Auktorisering erbjuder åtkomst till resurser • Rättigheter tilldelas för komponenter som filer, kataloger, inställningar i registret och applikationer • Användarbaserade • Grupper eller roller • Kodbaserade • Rättigheter på kod
Auktorisering • IIS rättigheter (och restriktioner i IP/DNS ) • .NET rollbaserad säkerhet • .NET kodbaserad säkerhet • NTFS “Access Control Lists” (ACL) till användare och grupper • Konton i SQL Server • Rättigheter i SQL Server
Webb eller applikationsserver Databas eller annan server med resurser A A B B C C Delegering och ”Impersonation” • Identitet på klienten används för att direkt komma åt underliggande resurser • Komponenten använder en nivå av “impersonation” i operativsystemet om resurser existerar på samma dator • Delegering krävs om resursen finns på en annan dator
Webb eller applikationsserver Databas eller annan server med resurser Roll 1 1 A B Roll 2 2 C ”Trusted Subsystem” • Klienter mappas mot roller • Använd dedikerade service-konton i Windows för varje roll som behöver åtkomst till underliggande resurser • Resurshanterar i databasen “litar på” de överliggande systemet att autentisera på dess vägnar
Brandväggar • Brandväggar kan erbjuda: • Säker grind mot internet för interna klienter • Filtrering av paket • “Circuit-level filtering” • Filtrering av applikationer • “Auditing” • Brandväggar kan inte erbjuda: • Skydd mot attacker på applikationsnivå över HTTP eller HTTPS
Granskning – ”Auditing” • Bygg in granskning och loggning i applikationer för att spåra: • Åtkomst till filer • Icke godkända och godkända försök till inloggning • Brister i applikationen • Fördelar med granskning: • Hjälper administratörer upptäcka intrång och misstänkta aktiviteter • Erbjuder spårbarhet för tvister gällande förnekanden • Hjäper till att ställa en diagnos på säkerhetsbrister • Fixar problem och förhindrar att dem återkommer