Uvijek sam bio prijatelj dobrih praksi, puno više ako nam pomažu u održavanju sigurnosti naših poslužitelja, usluga ili jednostavno naših podataka.
Navika (loša navika) koju imaju mnogi administratori ili korisnici jest korištenje pristupa korijen za sve baze podataka, to jest ... oni instaliraju web stranicu koristeći WordPress CMS, a kao pristup podacima bazi podataka (da WP koristi MySQL poslužitelj i koristi njegov DB) stavljaju korisnika administracije MySQL poslužitelja: root
Također, instaliraju bilo koju drugu web aplikaciju (chat, zalijepi, forum itd.) I rade isto, uvijek koriste matičnog korisnika MySQL-a ...
POGREŠKA !!!
Ovo je jednostavno kobna navika.
Pretpostavimo da na poslužitelju imamo sljedeće usluge:
- Web mjesto ili portal koji koristi WordPress.
- Naš forum za podršku, razgovori itd ... cijela zajednica.
- FTP koji koristi MySQL bazu podataka za pohranu korisnika i lozinki.
- Korisnici e-pošte pohranjuju se (korisnici i lozinke) u MySQL bazu podataka.
- Mali WebChat koji instaliramo za čavrljanje s nekim koga poznajete.
I u svim njima, u 5 usluga koristimo korijenskog korisnika MySQL-a tako da svaka usluga pristupa i sprema podatke u odgovarajuću bazu podataka.
Jednog lijepog dana, bilo koji od mnogih trolova vani, ali ovo nije samo trol, već svladava i neke eksploatacije, ranjivosti, hakiranje itd. ... odluči učiniti nešto štetno za nas.
Pronađite grešku u WebChatu koji koristimo, iskoristivši ovu grešku, uspijeva pristupiti datotekama WebChat-a, uključujući konfiguracijsku datoteku WebChat-a, i ... u ovoj je datoteci očito korisničko ime i lozinka koje WebChat koristi za pristup MySQL poslužitelj, i pogodite što? ... To je ništa više i ništa manje KORIJENSKI KORISNIK!
Dobivanjem ovih podataka, na vrlo jednostavan način, trol može:
- Izbrišite nas i / ili ukradite sve što se odnosi na web mjesto ili portal koje imamo (WordPress).
- Možete brisati i / ili krasti podatke od nas I od naših korisnika koji koriste Forum, zajednicu koju stvaramo.
- Također možete ukrasti korisničko ime i lozinku SVIH korisnika koji imaju račun e-pošte na našem poslužitelju, kao i podatke iz njihove e-pošte, lažno se predstavljati itd.
- I konačno, možete koristiti račun na našem FTP poslužitelju i prenijeti bilo koju datoteku koja sadrži zlonamjerni softver koji će vam omogućiti da preuzmete UKUPNU i APSOLUTNU kontrolu nad našim poslužiteljem.
Pa ... što ti misliš? … 🙂
Vidite li sve što se može dogoditi samo ne stvaranjem neovisnih korisnika za svaku bazu podataka koju imamo?
Ovo NIJE pretjerivanje, prijatelji, to se može dogoditi s nevjerojatnom lakoćom ... pa, sve što je potrebno za pokretanje katastrofe je samo greška u nekim web aplikacijama koje ste instalirali.
Sada…
Kako stvoriti zasebne MySQL korisnike za svaku web aplikaciju?
Prvo moramo ući u MySQL poslužitelj s root korisnikom, jer on ima privilegiju za stvaranje baza podataka, uspostavljanje dozvola, stvaranje korisnika itd.:
mysql -u root -p
Kad napišu gornje i pritisnu [Unesi] Tražit će se lozinka korijenskog korisnika MySQL-a, upišu je i pritisnu [Unesi] opet, odmah će vam biti prikazano nešto poput ovoga:
Sada ćemo stvoriti bazu podataka pod nazivom «webchatdb„:
CREATE DATABASE webchatdb;
Spremni, već ste stvorili bazu podataka, idemo sada na stvaranje korisnika «webchatuser«S lozinkom«lozinkadelputowebchat„:
CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';
Sad je magija ... dat ćemo sve privilegije (čitati i pisati) webchatuser SAMO u DB-u webchatdb:
GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;
I voila, korisnik već ima dozvole u toj bazi podataka ... sada ostaje samo osvježiti dozvole za MySQL, odnosno reći MySQL-u da ponovno pročita privilegije korisnika, jer smo u njih upravo promijenili:
FLUSH PRIVILEGES ;
I ovo je bilo sve. Čineći to za svaku web aplikaciju koju koristimo, garantiramo da će u slučaju da uspiju prekršiti jednu od tih web aplikacija, ostale biti sigurne (barem s gledišta MySQL)
Što je dobra praksa? 😉
Nadam se da je i vama bilo korisno kao i meni jer sam to pokušao objasniti najjednostavnije što sam mogao.
pozdravi
Dobar post KZKG, da je na forumu tražio bih ljepljivu!
Hvala 😀
Lozinka koju ste postavili za webchat je dobra, još jedna stvar koja ima veze s mysqlom je korištenje njegove memorije
Hehehe, hvala što ste me podsjetili na MySQL naredbe. Pogledajmo sada "stavljam li sigurnost" na World of Warcraft poslužiteljsku bazu podataka koju imam na svom LAN-u.
moje znanje o tome je nikakvo, ali gotovo je isto za korištenje MySQL-a za Amarok?
IZRADI BAZU PODATAKA amarokdb;
DODATI SVE PRIVILEGIJE NA amarokdb. * 'Amarokuser' IDENTIFICIRAN PO 'lozinci'; FLUSH PRIVILEGES;
Amarok nisam koristio dugo, dugo, ali ako koristite DB koji je MySQL, u teoriji bi i on trebao tako funkcionirati.
Pozdrav, bilo bi dobro da stvorite unos za zaštitu od web poslužitelja u Linuxu, mnogi od njih nemaju odgovarajuću sigurnost, a administrator istih nije stručnjak, oni samo olakšavaju stvari, na primjer upotrebu symlink na poslužiteljima omogućuje čitanje konfiguracijskih datoteka drugih računa na istom poslužitelju, mnogi administratori toga nisu svjesni i zato se deface web stranica umnožava
pozdravi
Bok, kako si,
Dobrodošli na stranicu 🙂
Zapravo se ne smatram daleko stručnjakom za ovo pitanje, ali pokušat ću dati malo znanja koje sam stekao tijekom godina 🙂
Još jedna stvar koju ne rade mnogi mrežni administratori jest davanje privilegija web lokacijama s apacheom pojedinačno, to jest, korisničkim i grupnim www-podacima (ili sličnim), koji su različiti za svaku web lokaciju, a zauzvrat stavljaju u kavez svaku od njih .
pozdravi
Dobar savjet
pozdravi
Hvala ti
MRZIM izgled vašeg terminala, pozadinska slova izvlače me iz koncentracije. Ti si jebeno ludi xD
Izvan toga, zanimljivo je jer sam vidio patetične slučajeve prekida usluge zbog tih stvari.
Sad, ne samo da to ovisi o tome, sigurnost leži u tome kako je baza podataka izgrađena, objasnio mi je učitelj, ali još nisam jako uronjen u DB ... trebali bismo se zezati s MongoDB = D jedan od ovih dana
upravo mi se to danas dogodilo s mojim unajmljenim serverom
Slijedio sam vaše korake, otišao sam na cpanel i potražio MYSQL bazu podataka i ona mi govori da nije u redu.
Ne znam kako sada ući pod root korisnika
Ja sam u tome neofit, ali čitajući ovdje naučite puno, nadam se da ćete me uputiti da pristupim
Pozdrav 🙂
Ono što imate je hosting (SharedHosting) ili VPS (virtualni poslužitelj)?
Ako imate hosting, a ne VPS, trebali biste vidjeti ima li vaš hosting SSH pristup (kontaktirajte tehničku podršku tvrtke koja vam je prodala hosting i pitajte ih kako pristupiti putem SSH-a), nakon što uđete putem SSH-a, korisnik NEĆE biti root, ali morate koristiti korisnika kojeg ste unijeli kada ste instalirali tu web aplikaciju.
Zapravo je vaša komplicirana tema, jer je inačica i mogućnosti jako puno, preporučujem da otvorite novu temu na našem forumu, tamo će vam biti ugodnije pomoći - » http://foro.desdelinux.net
Pozdrav 😀
dobar,
Razumijem da je dobra praksa ne davati sve privilegije bilo kojem korisniku osim root-a. Međutim, otkako sam instalirao phpmyadmin, stvoren je novi korisnik "phpmyadmin" sa svim privilegijama. Čini se logičnim da bi to trebao biti slučaj, jer je to samo grafička verzija za upravljanje bazama podataka u MySQL-u. U svakom slučaju, želio bih se uvjeriti je li u redu kakav jest ili bih li trebao izvršiti neke izmjene u privilegijama korisnika "phpmyadmin".
Pozdrav i hvala!
Izvrsno ...
Ja sam jedan od onih koji sve rade s korijenom, ali otvorio si mi oči, prijatelju ..
Hvala puno…