Vedno sem bil prijatelj dobrih praks, še bolj, če nam pomagajo ohranjati varnost naših strežnikov, storitev ali preprosto naših informacij.
Navada (slaba navada), ki jo imajo mnogi skrbniki ali uporabniki, je uporaba dostopa koren za vse zbirke podatkov, to je ... namestijo spletno mesto z uporabo WordPress CMS in kot dostop do podatkovne zbirke (da WP uporablja strežnik MySQL in uporablja njegovo bazo podatkov) postavijo uporabnika administracije strežnika MySQL: root
Prav tako namestijo katero koli drugo spletno aplikacijo (klepet, prilepi, forum itd.) In storijo enako, vedno uporabljajo korenskega uporabnika MySQL ...
NAPAKA !!!
To je preprosto usodna navada.
Recimo, da imamo na strežniku naslednje storitve:
- Spletno mesto ali portal, ki uporablja WordPress.
- Naš forum za podporo, pogovori itd ... cela skupnost.
- FTP, ki uporablja bazo podatkov MySQL za shranjevanje uporabnikov in gesel.
- Uporabniki e-pošte so (uporabniki in gesla) shranjeni v zbirki podatkov MySQL.
- Majhen spletni klepet, ki ga namestimo za klepet z nekom, ki ga poznate.
In v vseh njih v petih storitvah uporabljamo korenskega uporabnika MySQL, tako da vsaka storitev dostopa do podatkov in jih shrani v ustrezno bazo podatkov.
Nekega lepega dne se kateri koli od mnogih trollov tam zunaj, vendar to ni le trol, ampak obvlada tudi nekatere podvige, ranljivosti, vdore itd. ... se odloči, da nam bo naredil kaj škodljivega.
Poiščite napako v WebChatu, ki ga uporabljamo, izkoristi to napako in uspe dostopati do datotek WebChat, vključno s konfiguracijsko datoteko WebChat, in ... v tej datoteki je očitno uporabniško ime in geslo, ki ga WebChat uporablja za dostop do strežnika MySQL. , in ugani kaj? ... Nič več in nič manj KORENNI UPORABNIK!
S pridobivanjem teh informacij lahko trol na zelo preprost način:
- Izbrišite nas in / ali ukradite vse, kar je povezano s spletnim mestom ali portalom, ki ga imamo (WordPress).
- Podatke lahko izbrišete in / ali ukradete nam IN našim uporabnikom, ki uporabljajo forum, skupnost, ki jo ustvarjamo.
- Lahko tudi ukradete uporabniško ime in geslo VSE uporabnikom, ki imajo e-poštni račun na našem strežniku, pa tudi podatke iz njihovih e-poštnih sporočil, se lažno predstavljate itd.
- In zdaj lahko končno uporabite račun na našem FTP strežniku in naložite katero koli datoteko, ki vsebuje zlonamerno programsko opremo, kar bi vam omogočilo TOTAL in ABSOLUTE nadzor nad našim strežnikom.
No ... kaj misliš? … 🙂
Ali vidite vse, kar se lahko zgodi, če ne ustvarimo neodvisnih uporabnikov za vsako bazo podatkov, ki jo imamo?
To NE pretiravamo prijatelji, to se lahko zgodi z neverjetno lahkoto ... no, vse, kar je potrebno za sprožitev katastrofe, je le napaka v nekaterih spletnih aplikacijah, ki ste jih namestili.
Zdaj ...
Kako ustvariti ločene uporabnike MySQL za vsako spletno aplikacijo?
Najprej moramo vstopiti v strežnik MySQL s korenskim uporabnikom, saj je on tisti, ki ima privilegije za ustvarjanje baz podatkov, vzpostavitev dovoljenj, ustvarjanje uporabnikov itd.:
mysql -u root -p
Ko napišejo zgornje in pritisnejo [vnesite] vprašali jih bodo za geslo korenskega uporabnika MySQL, napisali ga bodo in pritisnili [vnesite] spet vam bo takoj prikazano nekaj takega:
Zdaj bomo ustvarili bazo podatkov z imenom «webchatdb":
CREATE DATABASE webchatdb;
Pripravljen, bazo podatkov si že ustvaril, zdaj pa ustvariva uporabnika «uporabnik spletnega klepeta«Z geslom«geslodelputowebchat":
CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';
Zdaj čarovnija ... dali bomo vse privilegije (branje in pisanje) uporabnik spletnega klepeta SAMO v DB webchatdb:
GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;
In voila, uporabnik že ima dovoljenja v tej bazi podatkov ... zdaj je treba le še osvežiti dovoljenja za MySQL, to je, povedati MySQL, naj ponovno prebere privilegije uporabnikov, ker smo jih pravkar spremenili:
FLUSH PRIVILEGES ;
In to je bilo vse. S tem za vsako spletno aplikacijo, ki jo uporabljamo, zagotavljamo, da bodo v primeru kršitve ene od teh spletnih aplikacij druge varne (vsaj z vidika MySQL)
Kaj je dobra praksa? 😉
Upam, da je bilo tako koristno za vas kot zame, ker sem poskušal to razložiti čim bolj preprosto.
pozdrav
Dober prispevek KZKG, če bi bil na forumu, bi prosil za lepljivo!
Hvala 😀
Geslo, ki ste ga vnesli za spletni klepet, je dobro, druga stvar, ki je povezana s mysqlom, je uporaba njegovega pomnilnika
Hehehe, hvala, ker ste me opozorili na ukaze MySQL. Zdaj pa poglejmo, ali sem "dal nekaj varnosti" v strežniško bazo podatkov World of Warcraft, ki jo imam v svojem LAN-u.
moje znanje o tem je nič, vendar je skoraj enako kot pri uporabi MySQL za Amarok?
USTVARI BAZO PODATKOV amarokdb;
DODELITE VSE PRIVILEGIJE NA amarokdb. * ZA 'amarokuser' IDENTIFICED BY 'password'; FLUSH PRIVILEGES;
Amaroka že dolgo, dolgo nisem uporabljal, toda če uporabljate DB, ki je MySQL, bi teoretično moral delovati tudi tako.
Pozdravljeni, dobro bi bilo, če bi ustvarili vnos za zaščito pred spletnimi strežniki v Linuxu, mnogi od njih nimajo ustrezne zaščite in skrbnik istih ni pravilno strokovnjak, ampak le olajšajo stvari, na primer uporabo symlink v strežnikih omogoča branje konfiguracijskih datotek drugih računov na istem strežniku, saj se mnogi skrbniki tega ne zavedajo, zato se obrazci spletnih mest množijo
pozdrav
Živijo, kako gre
Dobrodošli na strani 🙂
V resnici se še zdaleč ne imam za strokovnjaka, bom pa poskušal prispevati malo znanja, ki sem ga pridobil v preteklih letih 🙂
Druga stvar, ki jo ne počne veliko skrbnikov omrežij, je, da podeli privilegije spletnim mestom z apachejem posebej, to je uporabnikov in skupin www-data (ali podobnih), ki so za vsako spletno mesto drugačni in nato vsakega od njih postavijo v kletko.
pozdrav
Dober namig
pozdrav
Hvala
SovRAŽIM videz vašega terminala, črke v ozadju me spravijo iz koncentracije. Ti si prekleto nor xD
Zunaj tega je zanimivo, ker sem že videl patetične primere izpada storitev zaradi teh stvari.
Zdaj, ne samo, da je odvisno od tega, varnost je v tem, kako je bila zgrajena baza podatkov, mi je razložil učitelj, vendar še nisem zelo poglobljen v DB ... morali bi se zmešati z MongoDB = D eno od teh dnevi
prav to se mi je danes zgodilo z najetim strežnikom
Sledil sem vašim korakom, vstopil sem v cpanel in poiskal bazo podatkov MYSQL, ki mi pove, da ni v redu.
Ne vem, kako zdaj vnesti pod root uporabnikom
V tem sem neofit, toda ob branju tukaj se veliko naučiš, upam, da me boš vodil do dostopa
Pozdravljeni 🙂
Na voljo imate gostovanje (SharedHosting) ali VPS (navidezni strežnik)?
Če imate gostovanje in ne VPS, morate preveriti, ali ima vaše gostovanje dostop do SSH (obrnite se na tehnično podporo podjetja, ki vam je prodalo gostovanje, in jih vprašajte, kako dostopati prek SSH), ko enkrat vstopite prek SSH, uporabnik NE bo root, vendar morate uporabiti uporabnika, ki ste ga vnesli, ko ste namestili to spletno aplikacijo.
Pravzaprav je tvoja zapletena tema, ker je različic in možnosti takooooo veliko, priporočam, da odpreš novo temo na našem forumu, tam ti bo lažje pomagati - » http://foro.desdelinux.net
Lep pozdrav 😀
dobro,
Razumem, da je dobra praksa, če nobenemu uporabniku ne dodeljujemo vseh privilegijev, razen root. Ker pa sem namestil phpmyadmin, je bil ustvarjen nov uporabnik "phpmyadmin" z vsemi privilegiji. Zdi se logično, da je temu tako, saj gre le za grafično različico za upravljanje baz podatkov v MySQL. Vseeno bi se rad prepričal, ali je v redu, kakršen je, ali bi moral spremeniti privilegije uporabnika "phpmyadmin".
Lep pozdrav in hvala!
Odlično ...
Sem eden tistih, ki delajo vse s koreninami, toda prijatelj si mi odprl oči.
Najlepša hvala…