Διατηρήστε τις βάσεις δεδομένων MySQL ασφαλείς δημιουργώντας ξεχωριστούς χρήστες και δικαιώματα

Ήμουν πάντα φίλος καλών πρακτικών, πολύ περισσότερο αν μας βοηθούν να διατηρήσουμε την ασφάλεια των διακομιστών, των υπηρεσιών μας ή απλώς των πληροφοριών μας.

Μια συνήθεια (κακή συνήθεια) με την οποία έχουν πρόσβαση πολλοί διαχειριστές ή χρήστες είναι η χρήση της πρόσβασης ρίζα για όλες τις βάσεις δεδομένων, δηλαδή ... εγκαθιστούν έναν ιστότοπο χρησιμοποιώντας το WordPress CMS και ως δεδομένα πρόσβασης στη βάση δεδομένων (για το WP να χρησιμοποιεί το διακομιστή MySQL και να χρησιμοποιεί το DB του) θέτουν το χρήστη διαχείρισης διακομιστή MySQL : ρίζα

Επίσης, εγκαθιστούν οποιαδήποτε άλλη εφαρμογή ιστού (συνομιλία, επικόλληση, φόρουμ κ.λπ.) και κάνουν το ίδιο, χρησιμοποιούν πάντα τον ριζικό χρήστη της MySQL ...

ΛΑΘΟΣ!!!

Αυτή είναι απλώς μια θανατηφόρα συνήθεια.

Ας υποθέσουμε ότι έχουμε τις ακόλουθες υπηρεσίες σε έναν διακομιστή:

  1. Ένας ιστότοπος ή μια πύλη που χρησιμοποιεί WordPress.
  2. Το φόρουμ υποστήριξής μας, οι συνομιλίες κ.λπ. ... μια ολόκληρη κοινότητα.
  3. Ένα FTP που χρησιμοποιεί μια βάση δεδομένων MySQL για την αποθήκευση χρηστών και κωδικών πρόσβασης.
  4. Οι χρήστες email αποθηκεύονται (χρήστες και κωδικοί πρόσβασης) σε μια βάση δεδομένων MySQL.
  5. Ένα μικρό WebChat που εγκαθιστούμε για συνομιλία με κάποιον που γνωρίζετε.

Και σε όλες αυτές, στις 5 υπηρεσίες χρησιμοποιούμε τον χρήστη root MySQL, έτσι ώστε κάθε υπηρεσία να έχει πρόσβαση και να αποθηκεύει τα δεδομένα στην αντίστοιχη βάση δεδομένων της.

Μια ωραία μέρα, οποιοδήποτε από τα πολλά troll που βρίσκονται στο Διαδίκτυο, αλλά αυτό δεν είναι μόνο ένα troll, αλλά και κυριαρχούν σε ορισμένες εκμεταλλεύσεις, ευπάθειες, hacking, κλπ ... αποφασίζει να κάνει κάτι επιβλαβές για εμάς

Βρείτε ένα σφάλμα στο WebChat που χρησιμοποιούμε, εκμεταλλευόμενο αυτό το σφάλμα, κατάφερε να έχει πρόσβαση σε αρχεία WebChat, συμπεριλαμβανομένου του αρχείου διαμόρφωσης WebChat και… σε αυτό το αρχείο, όπως είναι προφανές, είναι το όνομα χρήστη και ο κωδικός πρόσβασης που χρησιμοποιεί το WebChat πρόσβαση στον διακομιστή MySQL και μαντέψτε τι; … Δεν είναι τίποτα περισσότερο και τίποτα λιγότερο από τον ΡΟΖ ΧΡΗΣΤΗ!

Με τη λήψη αυτών των πληροφοριών, με έναν πολύ απλό τρόπο, το troll μπορεί:

  1. Διαγράψτε μας ή / και κλέψτε όλα όσα σχετίζονται με τον ιστότοπο ή την πύλη που έχουμε (WordPress).
  2. Μπορείτε να διαγράψετε ή / και να κλέψετε πληροφορίες από εμάς ΚΑΙ από τους χρήστες μας που χρησιμοποιούν το Φόρουμ, την κοινότητα που δημιουργούμε.
  3. Μπορείτε επίσης να κλέψετε το όνομα χρήστη και τον κωδικό πρόσβασης ΟΛΩΝ των χρηστών που έχουν λογαριασμό email στο διακομιστή μας, καθώς και να κλέψετε τις πληροφορίες από τα email τους, την πλαστοπροσωπία κ.λπ.
  4. Και τώρα, τέλος, μπορείτε να χρησιμοποιήσετε έναν λογαριασμό στον διακομιστή FTP και να ανεβάσετε οποιοδήποτε αρχείο περιέχει κακόβουλο λογισμικό, το οποίο θα σας επέτρεπε να λάβετε ΣΥΝΟΛΟ και ΑΠΟΛΥΤΟ έλεγχο του διακομιστή μας.

Λοιπόν ... τι νομίζετε; … 🙂

Βλέπετε ό, τι μπορεί να συμβεί απλά χωρίς τη δημιουργία ανεξάρτητων χρηστών για κάθε βάση δεδομένων που έχουμε;

Αυτό ΔΕΝ είναι υπερβολή φίλοι, αυτό μπορεί να συμβεί με εκπληκτική ευκολία ... καλά, το μόνο που χρειάζεται για να απελευθερωθεί η καταστροφή είναι απλώς ένα σφάλμα σε ορισμένες από τις εφαρμογές ιστού που έχετε εγκαταστήσει.

Τώρα…

Πώς να δημιουργήσετε ξεχωριστούς χρήστες MySQL για κάθε εφαρμογή ιστού;

Πρώτα πρέπει να εισέλθουμε στον διακομιστή MySQL με τον ριζικό χρήστη, αφού είναι αυτός που έχει τα δικαιώματα να δημιουργήσει βάσεις δεδομένων, να δημιουργήσει δικαιώματα, να δημιουργήσει χρήστες κ.λπ.

mysql -u root -p

Όταν γράφουν τα παραπάνω και πατούν [Εισαγω] θα τους ζητηθεί ο κωδικός πρόσβασης του ριζικού χρήστη της MySQL, τον γράφουν και πατούν [Εισαγω] και πάλι, θα σας δείξει αμέσως κάτι τέτοιο:

Τώρα θα δημιουργήσουμε μια βάση δεδομένων με το όνομα «webchatdb":
CREATE DATABASE webchatdb;

Παρατηρήστε το ερωτηματικό «;»Στο τέλος της γραμμής.

Έτοιμοι, έχετε ήδη δημιουργήσει τη βάση δεδομένων, τώρα ας δημιουργήσουμε τον χρήστη «διαδικτυακός συνομιλητής«Με τον κωδικό πρόσβασης«passworddelputowebchat":

CREATE USER 'webchatuser'@'localhost' IDENTIFIED BY 'passworddelputowebchat';

Τώρα η μαγεία ... θα δώσουμε όλα τα προνόμια (ανάγνωση και εγγραφή) διαδικτυακός συνομιλητής ΜΟΝΟ στο DB webchatdb:

GRANT ALL PRIVILEGES ON webchatdb.* TO 'webchatuser'@'localhost' WITH GRANT OPTION;

Και voila, ο χρήστης έχει ήδη τα δικαιώματα σε αυτήν τη βάση δεδομένων ... τώρα απομένει μόνο να ανανεώσει τα δικαιώματα στη MySQL, δηλαδή, πείτε στη MySQL να ξαναδιαβάσει τα δικαιώματα των χρηστών επειδή μόλις κάναμε μια αλλαγή σε αυτούς:

FLUSH PRIVILEGES ;

Σας αφήνω ένα στιγμιότυπο οθόνης:

Και αυτό ήταν το παν. Κάνοντας αυτό για κάθε εφαρμογή ιστού που χρησιμοποιούμε, εγγυόμαστε ότι σε περίπτωση που καταφέρουν να παραβιάσουν μία από αυτές τις διαδικτυακές εφαρμογές, οι άλλες θα είναι ασφαλείς (τουλάχιστον από την άποψη της MySQL)

Τι είναι μια καλή πρακτική; 😉

Ελπίζω να ήταν τόσο χρήσιμο για σένα όσο και για μένα, γιατί προσπάθησα να το εξηγήσω όσο πιο απλά μπορούσα.

αφορά


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Μάρτιν dijo

    Καλή ανάρτηση KZKG, αν ήταν στο φόρουμ, θα ζητούσα ένα κολλώδες!

    1.    KZKG ^ Γκάρα dijo

      Ευχαριστώ 😀

      1.    Κούβα dijo

        Ο κωδικός πρόσβασης που έχετε ορίσει για το webchat είναι καλός, ένα άλλο πράγμα που έχει να κάνει με το mysql είναι η χρήση της μνήμης του

  2.   Hyuuga_Neji dijo

    Hehehe, ευχαριστώ που μου υπενθύμισες τις εντολές MySQL. Τώρα ας δούμε αν "έβαλα κάποια ασφάλεια" στη βάση δεδομένων διακομιστή World of Warcraft που έχω στο LAN μου.

  3.   sieg84 dijo

    οι γνώσεις μου σχετικά με αυτό είναι μηδέν, αλλά είναι σχεδόν το ίδιο για τη χρήση της MySQL για το Amarok;
    Δημιουργία βάσης δεδομένων
    ΧΟΡΗΓΗΣΤΕ ΟΛΑ ΤΑ ΠΡΟΝΟΜΙΑ ΣΤΟ amarokdb. * ΣΤΟ «amarokuser» ΠΡΟΣΔΙΟΡΙΣΜΕΝΟ ΜΕ «κωδικό πρόσβασης». ΙΔΙΩΤΙΚΑ ΠΡΟΣΩΠΙΚΑ

    1.    KZKG ^ Γκάρα dijo

      Δεν έχω χρησιμοποιήσει το Amarok για πολύ καιρό, αλλά αν χρησιμοποιείτε ένα DB που είναι MySQL, θεωρητικά θα πρέπει να λειτουργεί και έτσι.

  4.   Κάρλος Αντρές Ρεστρέπο dijo

    Γεια σας, θα ήταν καλό αν δημιουργήσατε μια καταχώριση για ασφάλεια έναντι διακομιστών ιστού στο Linux, πολλοί από αυτούς δεν έχουν την κατάλληλη ασφάλεια και ο διαχειριστής του ίδιου δεν είναι ειδικός, διευκολύνουν τα πράγματα μόνο για αυτούς, για παράδειγμα η χρήση του symlink στους διακομιστές επιτρέπει διαβάστε τα αρχεία διαμόρφωσης άλλων λογαριασμών στον ίδιο διακομιστή, πολλοί διαχειριστές δεν το γνωρίζουν και γι 'αυτό πολλαπλασιάζονται οι ατέλειες ιστότοπου

    αφορά

    1.    KZKG ^ Γκάρα dijo

      Γεια σας εκεί,
      Καλώς ήλθατε στον ιστότοπο 🙂

      Δεν πιστεύω πραγματικά ότι είμαι ειδικός σε αυτό το θέμα, αλλά θα προσπαθήσω να συνεισφέρω τη μικρή γνώση που έχω αποκτήσει όλα αυτά τα χρόνια 🙂

      Ένα άλλο πράγμα που δεν κάνουν πολλοί διαχειριστές δικτύου, είναι να παρέχουν προνόμια σε ιστότοπους με apache ξεχωριστά, δηλαδή τα δεδομένα www του χρήστη και της ομάδας (ή παρόμοια), τα οποία είναι διαφορετικά για κάθε ιστότοπο και με τη σειρά τους καθένα από αυτά.

      αφορά

  5.   hackloper775 dijo

    Καλή συμβουλή

    αφορά

    1.    KZKG ^ Γκάρα dijo

      Σας ευχαριστώ

  6.   nano dijo

    ΜΙΣΑ την εμφάνιση του τερματικού σας, τα γράμματα του φόντου με βγάζουν από τη συγκέντρωσή μου. Είσαι ένα γαμημένο τρελό xD

    Εκτός αυτού, είναι ενδιαφέρον γιατί έχω δει αξιολύπητες περιπτώσεις διακοπής υπηρεσίας από αυτά τα πράγματα.

    Τώρα, όχι μόνο εξαρτάται από αυτό, η ασφάλεια έγκειται στον τρόπο με τον οποίο δημιουργήθηκε η βάση δεδομένων, μου εξήγησε ένας δάσκαλος, αλλά δεν είμαι ακόμα πολύ βυθισμένος στο DB ... θα πρέπει να χάσουμε το MongoDB = D μέρες

  7.   Κάρλος Συνταγματάρχης dijo

    ακριβώς αυτό μου συνέβη σήμερα με τον ενοικιαζόμενο διακομιστή μου

    Ακολούθησα τα βήματά σας, μπήκα στο cpanel και έψαξα τη βάση δεδομένων MYSQL και μου λέει ότι είναι εκτός λειτουργίας.

    Δεν ξέρω πώς να μπω τώρα κάτω από τον root χρήστη
    Είμαι ένας νεοφώτιστος σε αυτό, αλλά διαβάζοντας εδώ μαθαίνετε πολλά, ελπίζω να με καθοδηγήσετε στην πρόσβαση

    1.    KZKG ^ Γκάρα dijo

      Γεια σας
      Αυτό που έχετε είναι μια φιλοξενία (SharedHosting) ή ένας VPS (εικονικός διακομιστής);

      Εάν έχετε Φιλοξενία και όχι VPS, τότε θα πρέπει να δείτε εάν η Φιλοξενία σας έχει πρόσβαση SSH (επικοινωνήστε με την τεχνική υποστήριξη της εταιρείας που σας πούλησε τη φιλοξενία και ρωτήστε τους πώς να έχουν πρόσβαση μέσω SSH), μόλις εισαγάγετε μέσω SSH, ο χρήστης ΔΕΝ θα είναι root, αλλά πρέπει να χρησιμοποιήσετε τον χρήστη που εισαγάγατε κατά την εγκατάσταση αυτής της εφαρμογής ιστού.

      Στην πραγματικότητα το δικό σας είναι ένα περίπλοκο θέμα, επειδή οι παραλλαγές και οι δυνατότητες είναι πάρα πολλές, προτείνω να ανοίξετε ένα νέο θέμα στο φόρουμ μας, εκεί θα είναι πιο άνετο να σας βοηθήσουμε - » http://foro.desdelinux.net

      Χαιρετισμούς 😀

  8.   αφεντικό dijo

    καλή,

    Κατανοώ ότι είναι καλή πρακτική να μην δίνετε όλα τα προνόμια σε κανέναν χρήστη εκτός από το root. Ωστόσο, από τότε που εγκατέστησα το phpmyadmin ένας νέος χρήστης "phpmyadmin" έχει δημιουργηθεί με όλα τα δικαιώματα. Φαίνεται λογικό ότι συμβαίνει αυτό, καθώς είναι μόνο μια γραφική έκδοση για τη διαχείριση των βάσεων δεδομένων στη MySQL. Τέλος πάντων, θα ήθελα να βεβαιωθώ αν είναι εντάξει ως έχει ή πρέπει να κάνω κάποια τροποποίηση στα προνόμια του χρήστη "phpmyadmin".

    Χαιρετίσματα και ευχαριστώ!

  9.   Εμμανουήλ dijo

    Εξοχος…
    Είμαι ένας από αυτούς που κάνουν τα πάντα με ρίζα, αλλά έχετε ανοίξει τα μάτια μου φίλη ..
    Ευχαριστώ πολύ…