Spørgsmål:
Tilføjer adgangskodebeskyttelse af en database, der ligger ved siden af ​​applikationen, sikkerhed?
Cedric Reichenbach
2018-05-16 16:28:47 UTC
view on stackexchange narkive permalink

Jeg har set opsætninger, hvor en adgangskodebeskyttet database befandt sig på den samme server som et program, der indeholdt legitimationsoplysningerne til den nævnte database i almindelig tekst.

Hvad er fordelene ved en sådan opsætning frem for en simpel ubeskyttet database?

Bortset fra noget tilsløret, er det nødvendigt at konfigurere både database og applikation til disse legitimationsoplysninger kun tilføje kompleksitet, men ikke reel sikkerhed. En hacker med adgang til serveren kunne altid bare finde legitimationsoplysningerne i programmets konfigurationsfil.

Rediger: Jeg taler om en database, der kun er synlig inden for den samme maskine, og ikke udsat for ydersiden.

I dag beslutter du, at du ikke behøver at beskytte databasen med en adgangskode, fordi databasen kun tillader forbindelser fra localhost.To år i fremtiden beslutter du, at det ville være praktisk, hvis din server havde en http-proxy.
Otte svar:
Stef Heylen
2018-05-16 16:37:24 UTC
view on stackexchange narkive permalink

Det giver mening at beskytte databasen med adgangskode, hvis du sikrer dig adgang til programmets konfigurationsfil, der indeholder almindelig tekst. Når du kun begrænser læseadgang til applikationens konto, kræver angriberen rodadgang for at se adgangskoden. Hvis han overtrådte en anden (mindre privilegeret) konto, kan han ikke få adgang til databasen.

Jeg tror, jeg ser: Hvis DB er eksponeret gennem en port på localhost, kan den ikke bare begrænses til specifikke brugere, men en applikationskonfigurationsfil kan.
"Hvis DB er eksponeret gennem en port på localhost, kan den ikke blot begrænses til specifikke brugere" iptables kan gøre dette med flagget "uid-ejer".
@CedricReichenbach Noget andet, du måske vil overveje, er at bruge et UNIX-stik i stedet for en TCP-port, hvis din database og app understøtter det.
Angriberen er ikke begrænset til kravet om at få rod for at få adgangskoden til angriberen kan kompromittere applikationen.
Serge Ballesta
2018-05-16 17:20:31 UTC
view on stackexchange narkive permalink

Det er en slags løg beskyttelse (også kendt som " Layered Security " eller " Defense in Depth " som f.eks. set , i SANS 'whitepaper " Layered Security: Why It Works". Hvis en hacker kan nå maskinen (e), kan han ikke få fuld databaseadgang. Applikationen skal have en begrænset adgang begrænset til kun de krævede tabeller, og alt, hvad der ikke behøver at blive skrevet, skal være skrivebeskyttet. Enhver højere adgang skal kræve en anden adgangskode, der aldrig bruges i applikationen.

@RenatoGuimaresMogekag: IMHO din foreslåede redigering tilføjer for meget til mit svar og fokuserer på NoSQL-databaser, hvilket ikke er min hensigt.Du vil hellere skrive det i dit eget svar og sige, at det er et supplement til mit.
Mike Scott
2018-05-16 16:30:32 UTC
view on stackexchange narkive permalink

Fordelen er, at en hacker, der har netværksadgang til databasen, men ikke filsystemadgang til serveren, ikke er i stand til faktisk at logge ind i databasen.

Beklager, det kunne ikke angives: Jeg taler om databaser, der kun er synlige inden for den samme maskine.
@CedricReichenbach Hvordan ved du, at databasen ikke kan tilgås via netværket?Du har måske ikke til hensigt at være tilgængelig over netværket, men hvis alt gik som du havde tænkt dig at gå, kunne ingen angriber få adgang af nogen art, og dit spørgsmål betyder ikke noget.
Ja, det giver mening.Men selv inden i maskinen kan det gøre en forskel som påpeget i [Stef Heylens svar] (https://security.stackexchange.com/a/185891/125571).
@CedricReichenbach Antagelser er farlige inden for it-sikkerhed.Hele pointen med forsvar i dybden er, at du ikke * forventer *, at det første lag mislykkes, men du implementerer alligevel yderligere lag.I dit scenario er det første lag, at databasen ikke udsættes for netværket.Det andet lag er, at det er adgangskodebeskyttet, hvis det på en eller anden måde bliver udsat.
sleske
2018-05-17 15:24:54 UTC
view on stackexchange narkive permalink

Om dette giver ekstra sikkerhed, afhænger af dit trusselsscenarie og dine sikkerhedsmål. Jeg kender mindst to situationer, hvor det tilføjer sikkerhed:

  • Det giver dig mulighed for at finere kontrol af legitim adgang til databasen: Der kan være mennesker, der legitimt har brug for adgang til databasen, men ikke til dataene inde, såsom DB-administratorer, der udfører vedligeholdelse. En krypteret database kan (afhængigt af opsætning) tillade tildeling af DB-adgang, mens data stadig holdes hemmelig.
    På samme måde giver kryptering af en del af databasen (f.eks. Kun kolonner med adgangskoder) begrænset adgang (f.eks. til fejlfindingsproblemer, til rapportering eller til et datalager ), mens kritisk information beskyttes.
  • Det kan beskytte sikkerhedskopier af databasen. Hvis databasen er sikkerhedskopieret på filniveau eller med et sikkerhedskopieringsværktøj, der understøtter krypterede databaser, krypteres sikkerhedskopien. Dette er nyttigt, fordi sikkerhedskopier kan være en kilde til databrud, da de ofte ikke er sikret såvel som de servere, de blev taget fra (se for eksempel Dårlig sikkerhedskopiering af sikkerhed fører til Ameriprise-klientdatalækage).
dette er forskellen mellem at beskytte mod inkompetent snooping versus kompetent snooping.de kan ikke bare køre "strenge" mod databasefilerne, men stopper ikke nogen, der griber databasen og gør en minimal udvikling for at læse det hele senere.
@Rob: Hvis DB er korrekt krypteret, er det umuligt at læse det uden adgangskoden.Dette afhænger naturligvis af den krypteringsopsætning, du bruger.
fra det oprindelige indlæg: "på den samme server som et program, der indeholder legitimationsoplysningerne til databasen i almindelig tekst."dette er desværre et meget almindeligt scenario.Jeg vil ikke sige "ingen beskyttelse", men det beskytter dig ikke mod nogen, du vil bekymre dig om.det er almindeligt, fordi folk vil være i stand til at foretage en uovervåget genstart.
jrtapsell
2018-05-17 01:37:53 UTC
view on stackexchange narkive permalink

Fordele ved adgangskodebeskyttelse af DB

  • Hvis det ikke er muligt at bruge det usikkert, reducerer det risikoen for, at hvis DB og serveren skal deles på et senere tidspunkt, vil blive efterladt på en usikker måde, hvilket fører til fremtidige udnyttelser.

  • Hvis en angriber kan bryde maskinen med en begrænset konto, kan de muligvis oprette forbindelse til lokale tjenester, men ikke nulstil databaseadgangskoden at kræve, at angriberen godkender, begrænser den skade, de kan gøre.

  • Hvis et angreb kan bruges til at reflektere / videresende trafik, kan en fjern modstander synes at være på den lokale maskine et eksempel ville være en proxy, der kan overbevises om at indlæse en DB API eller en tjeneste, der viser modtagne data, når en forbindelse mislykkes til en given URL)

  • Hvis der bruges adgangskoder så kan forskellige systemer og brugere forhindres i at bruge hinandens konti, ellers kan en angriber fra ethvert system foregive at være et hvilket som helst andet system.

koyae
2018-05-17 03:42:37 UTC
view on stackexchange narkive permalink

Hvis du ikke har store skaleringsproblemer i din fremtid, tilføjer det muligvis ikke nogen sikkerhed for at have en adgangskode , men vær opmærksom på, at "ikke at have en adgangskode " er ikke den samme ", der stoler på nogen, der hævder at være din applikation. "

Hvis din applikation kører som sin egen bruger på serveren *, i nogle databaser kan du muligvis bruge tredjepartsgodkendelse (f.eks. hvad Postgres kalder peer -godkendelse), som giver serveren mulighed for at bruge netværks- eller operativsystemmekanismer til at bestemme, hvilke brugere der er, de siger, de er. For eksempel, under den rette konfiguration, kunne shell-bruger "bob" få adgang til databasekontoen "bob" uden at give en adgangskode. At have tingene enkle kan gøre det lettere at beskytte din database og applikation.

Når det er sagt, som jrtapsell s svar antyder, skal du muligvis flytte dit applikation til en anden server af omkostnings- eller ydeevneårsager. I så fald har du sandsynligvis brug for en gemt adgangskode eller anden hemmelighed som en privat nøgle, selvom der er nogle metoder primært inden for private netværk, der kan bruges til at undgå dette.

Hvis du synes, der er en anstændig chance for, at du har brug for en adgangskode (eller anden gemt hemmelighed) i fremtiden, så skal du bare lave ordningerne nu, så de ikke bliver lavet usikkert senere af nogen med kortere tid eller oplevelse.

* Ideelt set skal denne konto være stærkt adgangskode eller kun tilgængelig for at logge ind via sudo eller tilsvarende mekanisme

Ian Kemp
2018-05-17 12:43:44 UTC
view on stackexchange narkive permalink

Kender du alle de databrud, der skete for nylig? Dem, hvor folk fandt sikkerhedskopier af databaser uden kodeord i usikrede Amazon S3-spande? Yeah.

Antag aldrig , at din database kun nogensinde vil leve på din sikre server bag tyve milliarder firewalls. Det mindre besvær med en adgangskode på din DB er en lille pris at betale for den i det væsentlige gratis sikkerhed, den giver.

Renato Guimares Mogekag
2018-05-24 11:31:53 UTC
view on stackexchange narkive permalink

Som et supplement til Serge Ballestas svar.

Dette bliver især vanskeligt, hvis du bruger en NoSQL-database, f.eks. MongoDB, som standard vil enhver databasebruger have skrivebeskyttet privilegier for alle databaser, og det kommer ikke engang konfigureret til at have en db-bruger ud af boksen . Der er ganske få svagheder som angivet af Spider Labs Blog for nogen tid siden (omkring 2013), men anbefalingerne følges normalt ikke engang for store virksomheder, f.eks. MacKeeper hændelse (sidst i 2015).

I begge referencer finder du en liste over de mest almindelige sårbarheder. Hvis du hellere vil læse 'officielle' retningslinjer, kan du finde dem her, de skal være analoge for SQL-databaser. Jeg kan dog godt lide at tro, at der ikke er nogen overkillelser, når emnet er sikkerhed.



Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 4.0-licens, den distribueres under.
Loading...