Web Applications - Security and Scalability Checklist - DefCamp 2012

DefCamp
DefCampDefCamp
Web applications
 Security and scalability checklist

             Cuprins:

             1. Introducere

             2. Checklist generic

             3. Checklist specific



www.distinct.ro                             1
                          Pagina 1 din 30
1. Introducere


    Bogdan Belu - www.bogdanbelu.ro
    
     16 ani de experienta tehnica (administrare de sistem, programare,
    datacenter)
    
      din 2001 director general la Distinct (www.distinct.ro), furnizor de
    managed services si datacenter sub sloganul “plus prin
    responsabilitate”




www.distinct.ro                                                   2
                             Pagina 2 din 30
Definirea problemei
Despre ce discutam? Checklist-ul unui administrator de sistem responsabil de
sistemele pe care ruleaza o aplicatie web.

- doctrina de securitate se transpune intr-un plan de implementare

- estimare necesitati (SLA, targets) vs disponibilitati (buget)

- nu poti proteja 100%, obiectivul este sa faci neviabil atacul asupra sistemului

- principii: KISS, usable, multiple layers, de fond nu de forma, “expect the worst”, "security
is as good as it's weakest link"

- in general ai de-a face cu doua mari clase de amenintari:

A. compromiterea securitatii informatice (patrundere neautorizata, furt de date, modificari
de date, etc)

B. Denial of Service

www.distinct.ro                                                      3
                              Pagina 3 din 30
2. Checklist generic




www.distinct.ro                         4
                      Pagina 4 din 30
2.1 Backups
2.1 Backups - "shit happens. e bine sa ai optiunea sa dai timpul inapoi"

- ideal: posibilitate de restore a sistemului la orice punct din trecutul apropiat (zeci
    de zile)

- faci backup ?

- merge si restore ? ("The backup procedure works fine, but the restore is tricky! ")

- ce viteza de restore ai ?

- in cat timp trebuie facut restore ? (RTO - Recovery Time Objective )

- cate ore de modificari iti permiti sa pierzi ? - (RPO - Recovery Point Objective)

- folosesti si backup incremental ?

- monitorizezi backup-urile ?



www.distinct.ro                                                       5
                                Pagina 5 din 30
2.1 Backups
- daca ai mai multe servere la care faci backup, restore-ul va fi consistent ?

- backup-urile la bazele de date/application data sunt consistente ?

- crezi ca RAID este backup ?

- backup-ul trebuie sa fie criptat ?

- backup-ul este transmis securizat ?

- backup-ul poate fi compromis daca sursa este compromisa ?

- backup-ul este stocat securizat ? (poate deveni vulnerabilitate chiar el)

- ai un sistem la indemana pe care poti sa faci restore de test ?

- sistemele de backup&restore sunt "usable"? (ex: preferi sa faci restore manual la cateva
fisiere in loc sa folosesti tool-ul de restore complet)


www.distinct.ro                                                      6
                              Pagina 6 din 30
2.2 Monitorizare
2.2 Monitorizare - "ca sa rezolvi o problema trebuie mai intai sa stii de ea"

- ai un sistem de monitorizare ?

- ai mecanisme de detectie implementate ?

- ai mecanisme de alertare catre cei interesati ? (ex: mail, sms, tichet de incident, etc)

- ai implementate verificari periodice standard (ex: disk space, numar procese, load
average) ?

- monitorizezi integritatea datelor aplicatiei ?

- trebuie implementate verificari specifice aplicatiei ? (ex: nr de row-uri dintr-un anumit
tabel nu trebuie sa depaseasca X)




www.distinct.ro                                                      7
                               Pagina 7 din 30
2.2 Monitorizare
- ai loguri ?

- sunt logurile suficient de detaliate ?

- logurile sunt stocate si remote ?

- logurile remote pot fi compromise daca sistemul este compromis ?

- ai nevoie de loguri detaliate ale tranzactiilor pe HTTP (inclusiv POSTs, request
headers) ?

- ai nevoie de un IDS ?

- ai tool-uri de securitate ce scaneaza sistemul periodic ? (ex: antivirus/security
suite, nessus, logwatch, msec, rootkit detector)

- rapoartele de la tool-urile de securitate sunt verificate metodic de cineva ?

- ai nevoie de un file integrity checker ? (ex: samhain)

www.distinct.ro                                                      8
                               Pagina 8 din 30
2.2 Monitorizare
- stii cum functioneaza sistemul in mod normal (ca referinta) ?


- ai grafice pe datele numerice returnate de senzori ? (ex: nagios perf data)


- graficele sunt/trebuie verificate periodic ?


- intervalul la care faci verificarile este suficient de scurt ?


- sistemul de monitorizare este suficient de usor de folosit (usability) ?


- numarul de false pozitives returnat de sistem este rezonabil ?




www.distinct.ro                                                       9
                                Pagina 9 din 30
2.3 Detectie si rezolvare
    2.3 Detectarea modalitatii de infiltrare si rezolvare - "cum iti dai seama prin ce
    modalitate a fost compromis sistemul"

    - ai o procedura standard prin care investighezi bresele de securitate ?

    - ai toate informatiile de care ai putea avea nevoie logate pe un sistem
    necompromis ?

    - pui sistemul offline si/sau ii faci o copie in timpul investigatiei ?

    - esti atent sa nu distrugi dovezile in timpul cercetarii ?

    - tii un log cu operatiile facute in timpul investigatiei ?




www.distinct.ro                                                         10
                               Pagina 10 din 30
2.3 Detectie si rezolvare
    - poti produce un quick fix rapid ? daca nu poti, cine poate sa te ajute si in cat
    timp/la ce costuri ?

    - ai timp sa repari vulnerabilitatea inainte de a repune sistemul in productie sau
    trebuie sa lucrezi pe live ?

    - e nevoie sa ai un sistem complet de rezerva pentru a-l inlocui pe cel compromis ?




www.distinct.ro                                                  11
                            Pagina 11 din 30
2.4 Securitate retea
    2.4 Securitatea schimburilor de date prin retea - "pentru ca sistemul tau
    interactioneaza cu altele"

    - ai identificat fluxurile de date in/out ?

    - pentru fiecare flow te-ai intrebat daca ai nevoie de:

       - confidentialitate
       - asigurare integritate
       - autentificare
       - autorizare
       - non-repudiere
       - audit

    - ce se intampla daca un alt sistem cu care interactionezi dar de care nu esti
    responsabil este compromis si trimite date periculoase ?




www.distinct.ro                                               12
                                 Pagina 12 din 30
2.5 Sistem de lucru
    2.5 Sistem de lucru – este important sa lucrezi metodic

    - ai implementat un sistem de tichete de incident ?

    - ai un knowlege base cu documentatie ? (ex: instructiuni de instalare, cum stii ca
     sistemul functioneaza normal, date de contact persoane implicate)

    - informatiile din knowledge base sunt accesibile doar persoanelor indreptatite ?

    - ai definite niste proceduri de lucru generale ? (ex: OS upgrade)

    - ai definite niste proceduri specifice de lucru pe aplicatia web respectiva ? (ex: cum
    se da restart la firewall fara sa afectezi functionalitatea aplicatiei)

    - daca apar schimbari in doctrina le poti implementa usor ?

    - sistemul de lucru este usable ? (altfel nu va fi folosit cum trebuie)




www.distinct.ro                                                       13
                             Pagina 13 din 30
2.5 Sistem de lucru
    - cand esti obligat sa accepti un compromis de securitate (ex: ridicare restrictie per
    IP pentru ca cineva trebuie sa acceseze urgent de acasa) evaluezi riscurile si
    informezi factorii de decizie ?

    - schimbarile in sistem sunt documentate si verificate la fel ca setup-ul initial ?

    - schimbarile temporare devin permanente ? cum previi acest lucru ?

    - documentezi schimbarile ? (ex: tichete, knowledge base, comment-uri in config
    files)

    - informezi de schimbari si celelalte parti implicate ?

    - sunt alocate suficente resurse pentru rezolvarea fluxului de tichete create ?

    - ai o adresa de abuse@domain.tld pe care sa primesti reclamatii/sesizari ?

    - sistemul de lucru este el insusi secure ?


www.distinct.ro                                                      14
                             Pagina 14 din 30
2.6 Scalabilitate
    2.6 Scalabilitate - cresti capacitatea sistemului in caz de DoS

    - ce faci in caz de DoS ?

    - poti opri atacul la sursa ?

    - poti opri atacul macar partial (ex: blocare link de net international) ?

    - ai mecanisme de detectie si blocare ? sunt aceste mecanisme scalabile in cazul
    unui atac de amploare ?

    - ce metode de accelerare a codului ai la dispozitie (ex: apc, hphp, eaccelerator,
    flashcache, reverse caching proxy) ?




www.distinct.ro                                                       15
                              Pagina 15 din 30
2.6 Scalabilitate
    - implementezi de la inceput sau poti implementa rapid metode de scalare orizontale
     ?

       - frontends/reverse proxies (ex: varnish, nginx)

       - mai multe application servers (ex: Apache)

       - file system distribuit

       - object storage distribuit (ex: memcache)

       - database distribuit (ex: replication, clustering)

    - poti modifica repede in fisierele de configuratie ale aplicatiei ? (ex: sa schimbi
    datele de conectare la sql)




www.distinct.ro                                                  16
                                  Pagina 16 din 30
3. Checklist specific




www.distinct.ro                          17
                      Pagina 17 din 30
3.1 Virtualizare

    - folosesti masini virtuale ?

    - folosesti clonare de masini virtuale ? (ex: clona devel, scalabilitate, templates)

    - folosesti live migration ?

    - separi serviciile in masini virtuale separate ? (ex: sql, reverse proxy, web, phpbb)

    - nu rulezi aplicatii in masina fizica ?




www.distinct.ro                                                      18
                              Pagina 18 din 30
3.2 System updates
    - in general, poti sa faci updates fara sa afectezi permanent functionalitatea
    aplicatiei web ?

    - faci system updates ?

    - update-urile sunt automate sau manuale ?

    - procesul de update este supervizat de cineva ?

    - cat de usor poti sa faci upgrade la kernel fara sa afectezi sistemul ?

    - daca faci update la librarii strici aplicatia ? (ex: glibc, binutils)

    - ai o procedura prin care sa faci update la aplicatiile generice folosite ? (ex:
    webserver, sql server, reverse proxy) ?

    - poti sa faci update la php fara sa strici aplicatia web ?


www.distinct.ro                                                           19
                               Pagina 19 din 30
3.3 Web application code
    3.3 Web application code

    - este nevoie de 'full code audit' sau de o evaluare de suprafata ?

    - pui intrebari cheie developerului aplicatiei ?

      - aplicatia a fost scrisa respectand standarde de securitate ?
      - valideaza input-ul de la utilizator ? (POST, GET, Headere, Cookies, etc)
      - crede ca aplicatia este 100% sigura ? (daca e sigur e clar ca e o problema)
    - foloseste plugin-uri fara reputatie/neauditate/cunoscute cu probleme de
    securitate ?
      - foloseste CAPCHA acolo unde este cazul ?
      - datele sunt stocate securizat ? (ex: este nevoie de o partitie criptata?)
      - exista parole stocate in clar ?
      - aplicatia da prea multe informatii despre servere ? (ex: local paths, php notices,
    debugs)




www.distinct.ro                                                    20
                              Pagina 20 din 30
3.3 Web application code
       - aplicatia genereaza emailuri ? acestea pot fi folosite pentru spam ?
       - se foloseste un sistem de source control ?
        - exista procedura de instalare si descrierea aplicatiei in scris ? (peste 3 ani s-ar
    putea sa fie de folos)
       - de ce versiuni de software din sistem depinde aplicatia ? (ex: PHP 5.2)
        - foloseste rate limiting ca protectie la atacuri bruteforce (ex: contul de admin se
    blocheaza automat dupa 3 incercari nereusite de acces ?)

    - zona de administrare a aplicatiei este protejata ? este nevoie de o protectie
    suplimentara ?

    - codul aplicatiei este separat de datele aplicatiei ?

    - cum se face deployment             ?   (ex:   modificare   direct   pe   sistemul   live,
    modificare/testare pe devel)

    - clona de devel este secure ?

    - procedura de code audit se aplica si pe schimbarile ulterioare din aplicatie ?

www.distinct.ro                                                      21
                             Pagina 21 din 30
3.4 Control acces
    - controlezi toate portile de intrare in sistem ? (ex: nu cumva si-a mai facut
    developerul un shell pentru uz propriu)

    - exista o politica de folosire a parolelor/cheilor de intrare in sistem ?

      - parolele sunt suficent de grele ?
      - parolele folosite uzual sunt prea grele ca sa fie tinute minte si trebuie notate pe
    ceva ? (le face mai putin sigure)
      - sunt preferate cheile in locul parolelor ?
      - aceasi parola este folosita pe mai multe servere ?
      - folosesti aceasi parola si pentru root si pentru mysql root ?
      - aplicatia web se conecteaza la baza de date ca root ?
       - parolele trebuie schimbate periodic sau la aparitia unui eveniment (ex: plecare
    angajat) ?

    - exista accese folosite in comun de mai multi utilizatori ? (ex: toti developerii se
    logheaza ca admin)




www.distinct.ro                                                        22
                              Pagina 22 din 30
3.4 Control acces
    - poti pune la dispozitia developerilor/content managerilor un sistem de vpn usable
    (ex: ipsec, openvpn)

    - este preferat sftp in locul ftp ?

    - developerii/content managerii au IP-uri fixe sau dinamice ?

    - suplimentezi controalele de acces din aplicatie (ex: admin login) cu protectiile tale
    'known good' (ex: htaccess, restrictii pe IP) ?

    - esti pregatit si pentru atacurile ce vin din interiorul retelei ?

    - ai audit trail suficent de detaliat pe control acces in loguri ?

    - ai evaluat si controlul accesului fizic la echipamente si linii de transmisie ?

    - esti familiar cu tehnicile de social engineering si te protejezi de ele ?




www.distinct.ro                                                           23
                               Pagina 23 din 30
3.4 Control acces
    - instalezi firewall si pe fiecare componenta a sistemului ?

       - politica default de firewall este REJECT/DROP ?

       - controlezi din firewall atat intrarea pachetelor in sistem cat si iesirea pachetelor
    inspre exterior ? (ex: accesul pe port 80 dinspre server spre internet)

       - firewallul este DNS-aware ? (se pot pune reguli si pe hostname in cazul ip-urile
    dinamice sau site-urilor din exterior ce isi schimba ip-ul des)

       - exista portite de comunicare de informatii spre exterior dinspre server (ex: via
    icmp echo request sau dns requests ?

       - poti pune in firewall reguli ce expira automat dupa un anumit timp ?




www.distinct.ro                                                      24
                             Pagina 24 din 30
3.5 System hardening
    - dupa instalare aplici metodele de reducere a "suprafetei de risc" a sistemului ? (ex:
    scos parole slabe, sters useri in plus, shells, suids, servicii/procese nefolosite, etc) ?

    - aplici metodele standard de securizare pentru aplicatii ? (ex: Apache, PHP)

    - aplici metodele standard de securizare pentru aplicatii web stock ? (ex:
    Wordpress, phpBB, Joomla)

    - faci un pentest pe versiunea finala a sistemului ?

    - faci un scalability test pe versiunea finala a sistemului ?

    - folosesti security policies ? (ex: SELinux)




www.distinct.ro                                                      25
                              Pagina 25 din 30
3.5 System hardening

    - separi privilegiile pentru utilizatori si aplicatii ? (ex: cron-urile din aplicatia web nu
    trebuie sa ruleze ca root)

    - folosesti rate-limiting contra brute force pe diversele componente ale solutiei ?

    - instalezi firewall ?

    - ai nevoie de IPS ?

    - ai nevoie de un IDS ?




www.distinct.ro                                                        26
                              Pagina 26 din 30
3.6 Toolbox
    - ai un 'toolbox' de diagnoza si analiza ? (ex: live rescue cd, tcpdump, ngrep,
    wireshark, dstat, atop, foremost)

    - esti familar aceste tool-uri ?

    - aceste tool-uri sunt/trebuie instalate pe sistem de la inceput ?

    - daca nu sunt instalate deja, se pot instala repede la nevoie ?




www.distinct.ro                                                     27
                              Pagina 27 din 30
3.7 Informare permanenta
    - ai mecanisme prin care sa fii informat de noutatile (vulnerabilitati, updates) legate
    de software-ul pe care il folosesti ?

    - informarile critice de le vendori ajung direct in sistemul de tichete ?

    - transmiti valorile de securitate in care crezi si celorlalti implicati in functionarea
    aplicatiei ? (programatori, content manageri, project manageri)

    - atunci cand ti se cere sa faci compromisuri pe securitate comunici corect impactul
    estimat ?

    - iti dezvolti permanent cultura profesionala ?




www.distinct.ro                                                       28
                              Pagina 28 din 30
Concluzii

Doctrina ta de securitate:

1) sa existe si sa includa cel putin elementele de baza

2) sa fie implementata intr-un sistem sustenabil in timp

3) sistemul nu trebuie sa te lase sa uiti sau sa treci cu vederea principiile de la care ai
   plecat

4) sistemul trebuie sa includa si o componenta de actualizare periodica pentru el insusi




www.distinct.ro                                                    29
                              Pagina 29 din 30
Incheiere



    - Aceasta prezentare o gasiti si online la www.bogdanbelu.ro


    - Q&A




www.distinct.ro                                                    30
                            Pagina 30 din 30
1 of 30

Recommended

Prezentare defcamp 2012 Bogdan Belu by
Prezentare defcamp 2012 Bogdan BeluPrezentare defcamp 2012 Bogdan Belu
Prezentare defcamp 2012 Bogdan BeluDistinct Buzz
297 views30 slides
Neculai Monica-Viviana.Tipuri de protectie by
Neculai Monica-Viviana.Tipuri de protectieNeculai Monica-Viviana.Tipuri de protectie
Neculai Monica-Viviana.Tipuri de protectieviviana
219 views9 slides
Tipuri de protectie in documente word by
Tipuri de protectie in documente  wordTipuri de protectie in documente  word
Tipuri de protectie in documente wordgalan
457 views11 slides
DefCamp 2012 @Bucharest by
DefCamp 2012 @BucharestDefCamp 2012 @Bucharest
DefCamp 2012 @BucharestDefCamp
848 views11 slides
Sdd2 by
Sdd2Sdd2
Sdd2nubianca
301 views7 slides
Modul 1 concepte de baza ale tehnologiei informatiei by
Modul 1   concepte de baza ale tehnologiei informatieiModul 1   concepte de baza ale tehnologiei informatiei
Modul 1 concepte de baza ale tehnologiei informatieiLivius Bucur
3.7K views31 slides

More Related Content

Similar to Web Applications - Security and Scalability Checklist - DefCamp 2012

Securitatea Retelelor. Viermele Internetului by
Securitatea Retelelor. Viermele InternetuluiSecuritatea Retelelor. Viermele Internetului
Securitatea Retelelor. Viermele InternetuluiMegaVjohnson
406 views18 slides
Corporate Network Security 101 by
Corporate Network Security 101Corporate Network Security 101
Corporate Network Security 101DefCamp
511 views11 slides
2 Software Retele by
2 Software Retele2 Software Retele
2 Software Reteleclcziprok
1.2K views11 slides
2011.01.21 - Webcast - Siguranta si securitate in windows 7 by
2011.01.21 - Webcast - Siguranta si securitate in windows 72011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 7ITSpark Community
380 views18 slides
Tipuri de protectie a documentelor word by
Tipuri de protectie a documentelor wordTipuri de protectie a documentelor word
Tipuri de protectie a documentelor worddianamihaelagalatanu
91 views10 slides
Tipuri de protectie a documentelor word by
Tipuri de protectie a documentelor wordTipuri de protectie a documentelor word
Tipuri de protectie a documentelor worddianamihaelagalatanu
135 views10 slides

Similar to Web Applications - Security and Scalability Checklist - DefCamp 2012(20)

Securitatea Retelelor. Viermele Internetului by MegaVjohnson
Securitatea Retelelor. Viermele InternetuluiSecuritatea Retelelor. Viermele Internetului
Securitatea Retelelor. Viermele Internetului
MegaVjohnson406 views
Corporate Network Security 101 by DefCamp
Corporate Network Security 101Corporate Network Security 101
Corporate Network Security 101
DefCamp511 views
2 Software Retele by clcziprok
2 Software Retele2 Software Retele
2 Software Retele
clcziprok1.2K views
2011.01.21 - Webcast - Siguranta si securitate in windows 7 by ITSpark Community
2011.01.21 - Webcast - Siguranta si securitate in windows 72011.01.21 - Webcast - Siguranta si securitate in windows 7
2011.01.21 - Webcast - Siguranta si securitate in windows 7
ITSpark Community380 views
Tipuri de protecţie in documentele word by Cosmin Neagu
Tipuri de protecţie in documentele wordTipuri de protecţie in documentele word
Tipuri de protecţie in documentele word
Cosmin Neagu304 views
Cosmin Neagu 9C Tipuri de protectie Word by Cosmin Neagu
Cosmin Neagu 9C Tipuri de protectie WordCosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu153 views
Cosmin Neagu 9C Tipuri de protectie Word by Cosmin Neagu
Cosmin Neagu 9C Tipuri de protectie WordCosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu202 views
Cosmin Neagu 9C Tipuri de protectie Word by Cosmin Neagu
Cosmin Neagu 9C Tipuri de protectie WordCosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu 9C Tipuri de protectie Word
Cosmin Neagu119 views
Curs 1 concepte de baza pachete software by Jora18
Curs 1  concepte de baza pachete softwareCurs 1  concepte de baza pachete software
Curs 1 concepte de baza pachete software
Jora18106 views
0_Sisteme_Informatice_Pentru_Management_de_Proiect.pdf by DanielaPintilie1
0_Sisteme_Informatice_Pentru_Management_de_Proiect.pdf0_Sisteme_Informatice_Pentru_Management_de_Proiect.pdf
0_Sisteme_Informatice_Pentru_Management_de_Proiect.pdf
DanielaPintilie114 views
devops.continous.deployment by Marius Luca
devops.continous.deploymentdevops.continous.deployment
devops.continous.deployment
Marius Luca508 views
Computer Networks. Security: monitoring & testing by Sabin Buraga
Computer Networks. Security: monitoring & testingComputer Networks. Security: monitoring & testing
Computer Networks. Security: monitoring & testing
Sabin Buraga746 views
"Open Source Resources Used in Computer Forensics" by Cezar Spatariu Neagu @ ... by eLiberatica
"Open Source Resources Used in Computer Forensics" by Cezar Spatariu Neagu @ ..."Open Source Resources Used in Computer Forensics" by Cezar Spatariu Neagu @ ...
"Open Source Resources Used in Computer Forensics" by Cezar Spatariu Neagu @ ...
eLiberatica390 views
Date structurate, aplicarea modelului linked data by ionut_ignatescu
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
ionut_ignatescu2.5K views
Sistem Software Integrat Pentru Administratia Publica by Robert Gologan
Sistem Software Integrat Pentru Administratia PublicaSistem Software Integrat Pentru Administratia Publica
Sistem Software Integrat Pentru Administratia Publica
Robert Gologan941 views

More from DefCamp

Remote Yacht Hacking by
Remote Yacht HackingRemote Yacht Hacking
Remote Yacht HackingDefCamp
1.7K views89 slides
Mobile, IoT, Clouds… It’s time to hire your own risk manager! by
Mobile, IoT, Clouds… It’s time to hire your own risk manager!Mobile, IoT, Clouds… It’s time to hire your own risk manager!
Mobile, IoT, Clouds… It’s time to hire your own risk manager!DefCamp
974 views167 slides
The Charter of Trust by
The Charter of TrustThe Charter of Trust
The Charter of TrustDefCamp
558 views24 slides
Internet Balkanization: Why Are We Raising Borders Online? by
Internet Balkanization: Why Are We Raising Borders Online?Internet Balkanization: Why Are We Raising Borders Online?
Internet Balkanization: Why Are We Raising Borders Online?DefCamp
309 views22 slides
Bridging the gap between CyberSecurity R&D and UX by
Bridging the gap between CyberSecurity R&D and UXBridging the gap between CyberSecurity R&D and UX
Bridging the gap between CyberSecurity R&D and UXDefCamp
260 views13 slides
Secure and privacy-preserving data transmission and processing using homomorp... by
Secure and privacy-preserving data transmission and processing using homomorp...Secure and privacy-preserving data transmission and processing using homomorp...
Secure and privacy-preserving data transmission and processing using homomorp...DefCamp
470 views102 slides

More from DefCamp(20)

Remote Yacht Hacking by DefCamp
Remote Yacht HackingRemote Yacht Hacking
Remote Yacht Hacking
DefCamp1.7K views
Mobile, IoT, Clouds… It’s time to hire your own risk manager! by DefCamp
Mobile, IoT, Clouds… It’s time to hire your own risk manager!Mobile, IoT, Clouds… It’s time to hire your own risk manager!
Mobile, IoT, Clouds… It’s time to hire your own risk manager!
DefCamp974 views
The Charter of Trust by DefCamp
The Charter of TrustThe Charter of Trust
The Charter of Trust
DefCamp558 views
Internet Balkanization: Why Are We Raising Borders Online? by DefCamp
Internet Balkanization: Why Are We Raising Borders Online?Internet Balkanization: Why Are We Raising Borders Online?
Internet Balkanization: Why Are We Raising Borders Online?
DefCamp309 views
Bridging the gap between CyberSecurity R&D and UX by DefCamp
Bridging the gap between CyberSecurity R&D and UXBridging the gap between CyberSecurity R&D and UX
Bridging the gap between CyberSecurity R&D and UX
DefCamp260 views
Secure and privacy-preserving data transmission and processing using homomorp... by DefCamp
Secure and privacy-preserving data transmission and processing using homomorp...Secure and privacy-preserving data transmission and processing using homomorp...
Secure and privacy-preserving data transmission and processing using homomorp...
DefCamp470 views
Drupalgeddon 2 – Yet Another Weapon for the Attacker by DefCamp
Drupalgeddon 2 – Yet Another Weapon for the AttackerDrupalgeddon 2 – Yet Another Weapon for the Attacker
Drupalgeddon 2 – Yet Another Weapon for the Attacker
DefCamp269 views
Economical Denial of Sustainability in the Cloud (EDOS) by DefCamp
Economical Denial of Sustainability in the Cloud (EDOS)Economical Denial of Sustainability in the Cloud (EDOS)
Economical Denial of Sustainability in the Cloud (EDOS)
DefCamp254 views
Trust, but verify – Bypassing MFA by DefCamp
Trust, but verify – Bypassing MFATrust, but verify – Bypassing MFA
Trust, but verify – Bypassing MFA
DefCamp323 views
Threat Hunting: From Platitudes to Practical Application by DefCamp
Threat Hunting: From Platitudes to Practical ApplicationThreat Hunting: From Platitudes to Practical Application
Threat Hunting: From Platitudes to Practical Application
DefCamp218 views
Building application security with 0 money down by DefCamp
Building application security with 0 money downBuilding application security with 0 money down
Building application security with 0 money down
DefCamp179 views
Implementation of information security techniques on modern android based Kio... by DefCamp
Implementation of information security techniques on modern android based Kio...Implementation of information security techniques on modern android based Kio...
Implementation of information security techniques on modern android based Kio...
DefCamp215 views
Lattice based Merkle for post-quantum epoch by DefCamp
Lattice based Merkle for post-quantum epochLattice based Merkle for post-quantum epoch
Lattice based Merkle for post-quantum epoch
DefCamp241 views
The challenge of building a secure and safe digital environment in healthcare by DefCamp
The challenge of building a secure and safe digital environment in healthcareThe challenge of building a secure and safe digital environment in healthcare
The challenge of building a secure and safe digital environment in healthcare
DefCamp323 views
Timing attacks against web applications: Are they still practical? by DefCamp
Timing attacks against web applications: Are they still practical?Timing attacks against web applications: Are they still practical?
Timing attacks against web applications: Are they still practical?
DefCamp258 views
Tor .onions: The Good, The Rotten and The Misconfigured by DefCamp
Tor .onions: The Good, The Rotten and The Misconfigured Tor .onions: The Good, The Rotten and The Misconfigured
Tor .onions: The Good, The Rotten and The Misconfigured
DefCamp816 views
Needles, Haystacks and Algorithms: Using Machine Learning to detect complex t... by DefCamp
Needles, Haystacks and Algorithms: Using Machine Learning to detect complex t...Needles, Haystacks and Algorithms: Using Machine Learning to detect complex t...
Needles, Haystacks and Algorithms: Using Machine Learning to detect complex t...
DefCamp294 views
We will charge you. How to [b]reach vendor’s network using EV charging station. by DefCamp
We will charge you. How to [b]reach vendor’s network using EV charging station.We will charge you. How to [b]reach vendor’s network using EV charging station.
We will charge you. How to [b]reach vendor’s network using EV charging station.
DefCamp442 views
Connect & Inspire Cyber Security by DefCamp
Connect & Inspire Cyber SecurityConnect & Inspire Cyber Security
Connect & Inspire Cyber Security
DefCamp290 views
The lions and the watering hole by DefCamp
The lions and the watering holeThe lions and the watering hole
The lions and the watering hole
DefCamp225 views

Web Applications - Security and Scalability Checklist - DefCamp 2012

  • 1. Web applications Security and scalability checklist Cuprins: 1. Introducere 2. Checklist generic 3. Checklist specific www.distinct.ro 1 Pagina 1 din 30
  • 2. 1. Introducere Bogdan Belu - www.bogdanbelu.ro  16 ani de experienta tehnica (administrare de sistem, programare, datacenter)  din 2001 director general la Distinct (www.distinct.ro), furnizor de managed services si datacenter sub sloganul “plus prin responsabilitate” www.distinct.ro 2 Pagina 2 din 30
  • 3. Definirea problemei Despre ce discutam? Checklist-ul unui administrator de sistem responsabil de sistemele pe care ruleaza o aplicatie web. - doctrina de securitate se transpune intr-un plan de implementare - estimare necesitati (SLA, targets) vs disponibilitati (buget) - nu poti proteja 100%, obiectivul este sa faci neviabil atacul asupra sistemului - principii: KISS, usable, multiple layers, de fond nu de forma, “expect the worst”, "security is as good as it's weakest link" - in general ai de-a face cu doua mari clase de amenintari: A. compromiterea securitatii informatice (patrundere neautorizata, furt de date, modificari de date, etc) B. Denial of Service www.distinct.ro 3 Pagina 3 din 30
  • 5. 2.1 Backups 2.1 Backups - "shit happens. e bine sa ai optiunea sa dai timpul inapoi" - ideal: posibilitate de restore a sistemului la orice punct din trecutul apropiat (zeci de zile) - faci backup ? - merge si restore ? ("The backup procedure works fine, but the restore is tricky! ") - ce viteza de restore ai ? - in cat timp trebuie facut restore ? (RTO - Recovery Time Objective ) - cate ore de modificari iti permiti sa pierzi ? - (RPO - Recovery Point Objective) - folosesti si backup incremental ? - monitorizezi backup-urile ? www.distinct.ro 5 Pagina 5 din 30
  • 6. 2.1 Backups - daca ai mai multe servere la care faci backup, restore-ul va fi consistent ? - backup-urile la bazele de date/application data sunt consistente ? - crezi ca RAID este backup ? - backup-ul trebuie sa fie criptat ? - backup-ul este transmis securizat ? - backup-ul poate fi compromis daca sursa este compromisa ? - backup-ul este stocat securizat ? (poate deveni vulnerabilitate chiar el) - ai un sistem la indemana pe care poti sa faci restore de test ? - sistemele de backup&restore sunt "usable"? (ex: preferi sa faci restore manual la cateva fisiere in loc sa folosesti tool-ul de restore complet) www.distinct.ro 6 Pagina 6 din 30
  • 7. 2.2 Monitorizare 2.2 Monitorizare - "ca sa rezolvi o problema trebuie mai intai sa stii de ea" - ai un sistem de monitorizare ? - ai mecanisme de detectie implementate ? - ai mecanisme de alertare catre cei interesati ? (ex: mail, sms, tichet de incident, etc) - ai implementate verificari periodice standard (ex: disk space, numar procese, load average) ? - monitorizezi integritatea datelor aplicatiei ? - trebuie implementate verificari specifice aplicatiei ? (ex: nr de row-uri dintr-un anumit tabel nu trebuie sa depaseasca X) www.distinct.ro 7 Pagina 7 din 30
  • 8. 2.2 Monitorizare - ai loguri ? - sunt logurile suficient de detaliate ? - logurile sunt stocate si remote ? - logurile remote pot fi compromise daca sistemul este compromis ? - ai nevoie de loguri detaliate ale tranzactiilor pe HTTP (inclusiv POSTs, request headers) ? - ai nevoie de un IDS ? - ai tool-uri de securitate ce scaneaza sistemul periodic ? (ex: antivirus/security suite, nessus, logwatch, msec, rootkit detector) - rapoartele de la tool-urile de securitate sunt verificate metodic de cineva ? - ai nevoie de un file integrity checker ? (ex: samhain) www.distinct.ro 8 Pagina 8 din 30
  • 9. 2.2 Monitorizare - stii cum functioneaza sistemul in mod normal (ca referinta) ? - ai grafice pe datele numerice returnate de senzori ? (ex: nagios perf data) - graficele sunt/trebuie verificate periodic ? - intervalul la care faci verificarile este suficient de scurt ? - sistemul de monitorizare este suficient de usor de folosit (usability) ? - numarul de false pozitives returnat de sistem este rezonabil ? www.distinct.ro 9 Pagina 9 din 30
  • 10. 2.3 Detectie si rezolvare 2.3 Detectarea modalitatii de infiltrare si rezolvare - "cum iti dai seama prin ce modalitate a fost compromis sistemul" - ai o procedura standard prin care investighezi bresele de securitate ? - ai toate informatiile de care ai putea avea nevoie logate pe un sistem necompromis ? - pui sistemul offline si/sau ii faci o copie in timpul investigatiei ? - esti atent sa nu distrugi dovezile in timpul cercetarii ? - tii un log cu operatiile facute in timpul investigatiei ? www.distinct.ro 10 Pagina 10 din 30
  • 11. 2.3 Detectie si rezolvare - poti produce un quick fix rapid ? daca nu poti, cine poate sa te ajute si in cat timp/la ce costuri ? - ai timp sa repari vulnerabilitatea inainte de a repune sistemul in productie sau trebuie sa lucrezi pe live ? - e nevoie sa ai un sistem complet de rezerva pentru a-l inlocui pe cel compromis ? www.distinct.ro 11 Pagina 11 din 30
  • 12. 2.4 Securitate retea 2.4 Securitatea schimburilor de date prin retea - "pentru ca sistemul tau interactioneaza cu altele" - ai identificat fluxurile de date in/out ? - pentru fiecare flow te-ai intrebat daca ai nevoie de: - confidentialitate - asigurare integritate - autentificare - autorizare - non-repudiere - audit - ce se intampla daca un alt sistem cu care interactionezi dar de care nu esti responsabil este compromis si trimite date periculoase ? www.distinct.ro 12 Pagina 12 din 30
  • 13. 2.5 Sistem de lucru 2.5 Sistem de lucru – este important sa lucrezi metodic - ai implementat un sistem de tichete de incident ? - ai un knowlege base cu documentatie ? (ex: instructiuni de instalare, cum stii ca sistemul functioneaza normal, date de contact persoane implicate) - informatiile din knowledge base sunt accesibile doar persoanelor indreptatite ? - ai definite niste proceduri de lucru generale ? (ex: OS upgrade) - ai definite niste proceduri specifice de lucru pe aplicatia web respectiva ? (ex: cum se da restart la firewall fara sa afectezi functionalitatea aplicatiei) - daca apar schimbari in doctrina le poti implementa usor ? - sistemul de lucru este usable ? (altfel nu va fi folosit cum trebuie) www.distinct.ro 13 Pagina 13 din 30
  • 14. 2.5 Sistem de lucru - cand esti obligat sa accepti un compromis de securitate (ex: ridicare restrictie per IP pentru ca cineva trebuie sa acceseze urgent de acasa) evaluezi riscurile si informezi factorii de decizie ? - schimbarile in sistem sunt documentate si verificate la fel ca setup-ul initial ? - schimbarile temporare devin permanente ? cum previi acest lucru ? - documentezi schimbarile ? (ex: tichete, knowledge base, comment-uri in config files) - informezi de schimbari si celelalte parti implicate ? - sunt alocate suficente resurse pentru rezolvarea fluxului de tichete create ? - ai o adresa de abuse@domain.tld pe care sa primesti reclamatii/sesizari ? - sistemul de lucru este el insusi secure ? www.distinct.ro 14 Pagina 14 din 30
  • 15. 2.6 Scalabilitate 2.6 Scalabilitate - cresti capacitatea sistemului in caz de DoS - ce faci in caz de DoS ? - poti opri atacul la sursa ? - poti opri atacul macar partial (ex: blocare link de net international) ? - ai mecanisme de detectie si blocare ? sunt aceste mecanisme scalabile in cazul unui atac de amploare ? - ce metode de accelerare a codului ai la dispozitie (ex: apc, hphp, eaccelerator, flashcache, reverse caching proxy) ? www.distinct.ro 15 Pagina 15 din 30
  • 16. 2.6 Scalabilitate - implementezi de la inceput sau poti implementa rapid metode de scalare orizontale ? - frontends/reverse proxies (ex: varnish, nginx) - mai multe application servers (ex: Apache) - file system distribuit - object storage distribuit (ex: memcache) - database distribuit (ex: replication, clustering) - poti modifica repede in fisierele de configuratie ale aplicatiei ? (ex: sa schimbi datele de conectare la sql) www.distinct.ro 16 Pagina 16 din 30
  • 18. 3.1 Virtualizare - folosesti masini virtuale ? - folosesti clonare de masini virtuale ? (ex: clona devel, scalabilitate, templates) - folosesti live migration ? - separi serviciile in masini virtuale separate ? (ex: sql, reverse proxy, web, phpbb) - nu rulezi aplicatii in masina fizica ? www.distinct.ro 18 Pagina 18 din 30
  • 19. 3.2 System updates - in general, poti sa faci updates fara sa afectezi permanent functionalitatea aplicatiei web ? - faci system updates ? - update-urile sunt automate sau manuale ? - procesul de update este supervizat de cineva ? - cat de usor poti sa faci upgrade la kernel fara sa afectezi sistemul ? - daca faci update la librarii strici aplicatia ? (ex: glibc, binutils) - ai o procedura prin care sa faci update la aplicatiile generice folosite ? (ex: webserver, sql server, reverse proxy) ? - poti sa faci update la php fara sa strici aplicatia web ? www.distinct.ro 19 Pagina 19 din 30
  • 20. 3.3 Web application code 3.3 Web application code - este nevoie de 'full code audit' sau de o evaluare de suprafata ? - pui intrebari cheie developerului aplicatiei ? - aplicatia a fost scrisa respectand standarde de securitate ? - valideaza input-ul de la utilizator ? (POST, GET, Headere, Cookies, etc) - crede ca aplicatia este 100% sigura ? (daca e sigur e clar ca e o problema) - foloseste plugin-uri fara reputatie/neauditate/cunoscute cu probleme de securitate ? - foloseste CAPCHA acolo unde este cazul ? - datele sunt stocate securizat ? (ex: este nevoie de o partitie criptata?) - exista parole stocate in clar ? - aplicatia da prea multe informatii despre servere ? (ex: local paths, php notices, debugs) www.distinct.ro 20 Pagina 20 din 30
  • 21. 3.3 Web application code - aplicatia genereaza emailuri ? acestea pot fi folosite pentru spam ? - se foloseste un sistem de source control ? - exista procedura de instalare si descrierea aplicatiei in scris ? (peste 3 ani s-ar putea sa fie de folos) - de ce versiuni de software din sistem depinde aplicatia ? (ex: PHP 5.2) - foloseste rate limiting ca protectie la atacuri bruteforce (ex: contul de admin se blocheaza automat dupa 3 incercari nereusite de acces ?) - zona de administrare a aplicatiei este protejata ? este nevoie de o protectie suplimentara ? - codul aplicatiei este separat de datele aplicatiei ? - cum se face deployment ? (ex: modificare direct pe sistemul live, modificare/testare pe devel) - clona de devel este secure ? - procedura de code audit se aplica si pe schimbarile ulterioare din aplicatie ? www.distinct.ro 21 Pagina 21 din 30
  • 22. 3.4 Control acces - controlezi toate portile de intrare in sistem ? (ex: nu cumva si-a mai facut developerul un shell pentru uz propriu) - exista o politica de folosire a parolelor/cheilor de intrare in sistem ? - parolele sunt suficent de grele ? - parolele folosite uzual sunt prea grele ca sa fie tinute minte si trebuie notate pe ceva ? (le face mai putin sigure) - sunt preferate cheile in locul parolelor ? - aceasi parola este folosita pe mai multe servere ? - folosesti aceasi parola si pentru root si pentru mysql root ? - aplicatia web se conecteaza la baza de date ca root ? - parolele trebuie schimbate periodic sau la aparitia unui eveniment (ex: plecare angajat) ? - exista accese folosite in comun de mai multi utilizatori ? (ex: toti developerii se logheaza ca admin) www.distinct.ro 22 Pagina 22 din 30
  • 23. 3.4 Control acces - poti pune la dispozitia developerilor/content managerilor un sistem de vpn usable (ex: ipsec, openvpn) - este preferat sftp in locul ftp ? - developerii/content managerii au IP-uri fixe sau dinamice ? - suplimentezi controalele de acces din aplicatie (ex: admin login) cu protectiile tale 'known good' (ex: htaccess, restrictii pe IP) ? - esti pregatit si pentru atacurile ce vin din interiorul retelei ? - ai audit trail suficent de detaliat pe control acces in loguri ? - ai evaluat si controlul accesului fizic la echipamente si linii de transmisie ? - esti familiar cu tehnicile de social engineering si te protejezi de ele ? www.distinct.ro 23 Pagina 23 din 30
  • 24. 3.4 Control acces - instalezi firewall si pe fiecare componenta a sistemului ? - politica default de firewall este REJECT/DROP ? - controlezi din firewall atat intrarea pachetelor in sistem cat si iesirea pachetelor inspre exterior ? (ex: accesul pe port 80 dinspre server spre internet) - firewallul este DNS-aware ? (se pot pune reguli si pe hostname in cazul ip-urile dinamice sau site-urilor din exterior ce isi schimba ip-ul des) - exista portite de comunicare de informatii spre exterior dinspre server (ex: via icmp echo request sau dns requests ? - poti pune in firewall reguli ce expira automat dupa un anumit timp ? www.distinct.ro 24 Pagina 24 din 30
  • 25. 3.5 System hardening - dupa instalare aplici metodele de reducere a "suprafetei de risc" a sistemului ? (ex: scos parole slabe, sters useri in plus, shells, suids, servicii/procese nefolosite, etc) ? - aplici metodele standard de securizare pentru aplicatii ? (ex: Apache, PHP) - aplici metodele standard de securizare pentru aplicatii web stock ? (ex: Wordpress, phpBB, Joomla) - faci un pentest pe versiunea finala a sistemului ? - faci un scalability test pe versiunea finala a sistemului ? - folosesti security policies ? (ex: SELinux) www.distinct.ro 25 Pagina 25 din 30
  • 26. 3.5 System hardening - separi privilegiile pentru utilizatori si aplicatii ? (ex: cron-urile din aplicatia web nu trebuie sa ruleze ca root) - folosesti rate-limiting contra brute force pe diversele componente ale solutiei ? - instalezi firewall ? - ai nevoie de IPS ? - ai nevoie de un IDS ? www.distinct.ro 26 Pagina 26 din 30
  • 27. 3.6 Toolbox - ai un 'toolbox' de diagnoza si analiza ? (ex: live rescue cd, tcpdump, ngrep, wireshark, dstat, atop, foremost) - esti familar aceste tool-uri ? - aceste tool-uri sunt/trebuie instalate pe sistem de la inceput ? - daca nu sunt instalate deja, se pot instala repede la nevoie ? www.distinct.ro 27 Pagina 27 din 30
  • 28. 3.7 Informare permanenta - ai mecanisme prin care sa fii informat de noutatile (vulnerabilitati, updates) legate de software-ul pe care il folosesti ? - informarile critice de le vendori ajung direct in sistemul de tichete ? - transmiti valorile de securitate in care crezi si celorlalti implicati in functionarea aplicatiei ? (programatori, content manageri, project manageri) - atunci cand ti se cere sa faci compromisuri pe securitate comunici corect impactul estimat ? - iti dezvolti permanent cultura profesionala ? www.distinct.ro 28 Pagina 28 din 30
  • 29. Concluzii Doctrina ta de securitate: 1) sa existe si sa includa cel putin elementele de baza 2) sa fie implementata intr-un sistem sustenabil in timp 3) sistemul nu trebuie sa te lase sa uiti sau sa treci cu vederea principiile de la care ai plecat 4) sistemul trebuie sa includa si o componenta de actualizare periodica pentru el insusi www.distinct.ro 29 Pagina 29 din 30
  • 30. Incheiere - Aceasta prezentare o gasiti si online la www.bogdanbelu.ro - Q&A www.distinct.ro 30 Pagina 30 din 30