Το MySQL είναι ένα από τα πιο δημοφιλή συστήματα διαχείρισης σχεσιακών βάσεων δεδομένων που αποτελεί τζάκποτ για εισβολείς που προσπαθούν να εισχωρήσουν κρυφά στις βάσεις δεδομένων. Ένας πρόσφατα εγκατεστημένος διακομιστής βάσης δεδομένων MySQL μπορεί να έχει πολλά τρωτά σημεία και κενά. Δεδομένου ότι η ασφάλεια των δεδομένων είναι μεγάλης σημασίας, είναι υποχρεωτικό να κατανοήσουμε κάθε πτυχή της ασφάλειας της MySQL.
Αυτό το άρθρο εστιάζει στον έλεγχο και την ασφάλεια της βάσης δεδομένων MySQL και παρέχει εννέα συμβουλές για να ενισχύσετε την ασφάλειά της.
1. Αποφύγετε τις περιττές επιχορηγήσεις προνομίων
MySQL επιτρέπει πολλές δηλώσεις προνομίων οι οποίες όταν εκχωρούνται άσκοπα σε έναν μη προνομιούχο χρήστη μπορεί να οδηγήσουν σε ανάγνωση/εγγραφή αρχείων και ανατροπή άλλων δικαιωμάτων χρήστη. Μερικές από τις πιο δυνητικά επικίνδυνες δηλώσεις προνομίων είναι FILE, GRANT, SUPER, ALTER, DELETE, SHUTDOWN και ούτω καθεξής. Μπορείτε να διαβάσετε περισσότερα για αυτά από την επίσημη τεκμηρίωση της MySQL. Επομένως, μην εκχωρείτε δικαιώματα υπερχρήστη όπως FILE, GRANT, SUPER και PROCESS σε μη διαχειριστικούς λογαριασμούς. Μπορείτε να ανακαλέσετε αυτές τις περιττές καθολικές άδειες, άδειες βάσης δεδομένων και σε επίπεδο πίνακα ως εξής:
ΑΝΑΚΛΗΣΗ ΟΛΩΝ ΣΕ *.* ΑΠΟ 'user_name'@'host_name'; #Παγκόσμια προνόμια
ΑΝΑΚΛΗΣΗ ΔΗΜΙΟΥΡΓΙΑΣ, ΑΠΟΣΤΟΛΗ ON database_name.* ΑΠΟ 'user_name'@'host_name'; #Προνόμια βάσης δεδομένων
ΑΝΑΚΛΗΣΗ ΕΙΣΑΓΩΓΗΣ, ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ ON database_name.table_name ΑΠΟ 'user_name'@'host_name'; #Προνόμια πίνακα
flush προνόμια?
2. Περιορίστε τις απομακρυσμένες συνδέσεις
Η απομακρυσμένη πρόσβαση διευκολύνει τη δουλειά των διαχειριστών της βάσης δεδομένων, αλλά διακινδυνεύει τον διακομιστή σε πιθανά τρωτά σημεία και εκμεταλλεύσεις. Μπορείτε να απενεργοποιήσετε την απομακρυσμένη πρόσβαση για όλους τους τύπους λογαριασμών χρηστών MySQl προσθέτοντας μια μεταβλητή παράβλεψης δικτύου στο κύριο αρχείο διαμόρφωσης και επανεκκινώντας την υπηρεσία.
[mysqld]
παράλειψη δικτύωσης
επανεκκίνηση της υπηρεσίας sudo mysql
Ομοίως, πρέπει να απενεργοποιήσετε την πρόσβαση στο λογαριασμό root, αν όχι όλα, για να περιορίσετε τις απομακρυσμένες συνδέσεις λογαριασμού root. Αυτή η προφύλαξη αποτρέπει την bruteforcing του ριζικού λογαριασμού MySQL.
mysql> διαγραφή από το mysql.user όπου user='root' και host δεν βρίσκονται ('localhost', '127.0.0.1', '::1'); mysql> flush δικαιώματα.
3. Απενεργοποίηση λειτουργιών (load_file, outfile, dumpfile)
Μια άλλη προφύλαξη για την ασφάλεια της MySQL από την εισαγωγή τοπικού αρχείου είναι να απενεργοποιήσετε τις λειτουργίες που είναι προσβάσιμες μόνο μέσω του προνομίου παραχώρησης FILE. Το FILE είναι μια επιλογή που επιτρέπει στους χρήστες χαμηλών προνομίων με καθολικές επιλογές εντολών να διαβάζουν ή να γράφουν αρχεία στον διακομιστή.
- load_file
Η συνάρτηση load_file φορτώνει το περιεχόμενο του αρχείου από τον διακομιστή ως συμβολοσειρά. Για παράδειγμα, η ακόλουθη εντολή θα φορτώσει όλο το περιεχόμενο από το /etc/passwd αρχείο ως εξής:
επιλέξτε load_file('/etc/passwd')
- στολή
Ομοίως, η λειτουργία outfile εγγράφει περιεχόμενο στα αρχεία του τοπικού διακομιστή. Οι εισβολείς μπορούν να χρησιμοποιήσουν αυτή τη λειτουργία για να γράψουν ένα ωφέλιμο φορτίο στο αρχείο στον διακομιστή, ως εξής:
επιλέξτε «Τοπικό αρχείο SQL Injection» στο outfile «/tmp/file.txt».
cat /tmp/file.txt
Παραγωγή:
Τοπικό αρχείο SQL Injection
- χωματερή
Αυτή η συνάρτηση χρησιμοποιεί την επιλογή αιτίας για να γράψει στο αρχείο χωρίς να επιστρέψει την έξοδο στην οθόνη.
cat /tmp/file.txt
επιλέξτε "Γεια σου κόσμο!" στο dumpfile '/tmp/world'?
Παραγωγή:
Ερώτημα ΟΚ, επηρεάστηκε 1 σειρά (0,001 δευτ.)
Μπορείτε να απενεργοποιήσετε αυτές τις λειτουργίες ανακαλώντας το προνόμιο FILE ως εξής:
ανάκληση FILE στο *.* από το 'user_name'@'localhost';
Σχετιζομαι με: Ένας οδηγός για αρχάριους για το Metasploit στο Kali Linux (με πρακτικά παραδείγματα)
4. Απενεργοποιήστε την προεπιλεγμένη θύρα
Γνωρίζουμε ότι οι υπηρεσίες MySQL εκτελούνται στη θύρα 3306 και οι εισβολείς σαρώνουν τις θύρες για να ελέγξουν τις υπηρεσίες που εκτελούνται στο δίκτυο. Για να προσθέσετε ασφάλεια λόγω ασάφειας και να αλλάξετε την προεπιλεγμένη θύρα MySQL επεξεργάζοντας τη μεταβλητή συστήματος θύρας στο κύριο αρχείο ρυθμίσεών της, θα χρειαστεί να εισαγάγετε τα εξής:
vim /etc/mysql/my.cnf
port=XXXX
επανεκκίνηση της υπηρεσίας sudo mysql
5. Αποφύγετε τους χαρακτήρες μπαλαντέρ στα ονόματα λογαριασμών
Τα ονόματα λογαριασμών στη MySQL αποτελούνται από δύο μέρη που είναι ένας χρήστης και ένα όνομα κεντρικού υπολογιστή "user_name"@"host_name". Επιτρέπει στον διαχειριστή να δημιουργήσει λογαριασμούς για τους χρήστες με το ίδιο όνομα που συνδέονται από διαφορετικούς κεντρικούς υπολογιστές. Ωστόσο, το τμήμα υποδοχής ενός ονόματος λογαριασμού επιτρέπει συμβάσεις χαρακτήρων μπαλαντέρ που μπορούν να αποτελούν σημείο πρόσβασης στη βάση δεδομένων από οπουδήποτε.
Η προαιρετική χρήση του ονόματος κεντρικού υπολογιστή ή της τιμής της διεύθυνσης IP είναι ισοδύναμη με το 'user_name'@'%' όπου το % αντιστοιχεί στο μοτίβο MySQL που ταιριάζει με τη λειτουργία LIKE και το % σημαίνει οποιοδήποτε όνομα κεντρικού υπολογιστή. Εν τω μεταξύ, πρόσβαση από το "192.168.132.%" σημαίνει οποιαδήποτε προσπάθεια από το δίκτυο κλάσης C. Επιπλέον, οποιοσδήποτε μπορεί να έχει πρόσβαση στη βάση δεδομένων ονομάζοντας το τμήμα υποδοχής ως "192.18.132.mysql.com".
Για να αποφευχθούν τέτοιες προσπάθειες, η MySQL επιτρέπει τον ορισμό μιας μάσκας δικτύου με την τιμή του κεντρικού υπολογιστή για τον προσδιορισμό των bits δικτύου μιας διεύθυνσης IP:
client-ip_add & netmask = host_name
Η σύνταξη για τη δημιουργία ενός ονόματος κεντρικού υπολογιστή είναι host_ip/netmask:
ΔΗΜΙΟΥΡΓΙΑ ΧΡΗΣΤΗ 'jhon'@'192.168.132.0/255.255.255.0';
Η παραπάνω τιμή κεντρικού υπολογιστή δίνει τη δυνατότητα στον χρήστη Γιάννης για πρόσβαση στη βάση δεδομένων από οποιαδήποτε IP εντός της περιοχής 192.168.132.0-192.168.132.255. Ομοίως, οι τιμές κεντρικού υπολογιστή των 192.168.132.0/255.0.0.0, 192.168.132.0/255.255.0.0 θα επιτρέψουν κεντρικούς υπολογιστές από τα δίκτυα κατηγορίας Α και Β. Ενώ το 192.168.132.5 θα επιτρέπει πρόσβαση μόνο από τη συγκεκριμένη IP.
6. Απενεργοποιήστε τη ρητή πρόσβαση
Το όνομα χρήστη στη MySQL είναι είτε ένα όνομα με το οποίο οι βάσεις δεδομένων δέχονται εισερχόμενες συνδέσεις είτε ένα κενό όνομα χρήστη "@"host_name" που δημιουργεί έναν ανώνυμο χρήστη. Ωστόσο, η παρουσία ενός ανώνυμου χρήστη μπορεί να αξιοποιήσει τους εισβολείς για να αποκτήσουν πρόσβαση στον διακομιστή της βάσης δεδομένων. Επιπλέον, οι εκδόσεις MySQL πριν από την MySQL 5.7, δημιουργούν ένα ανώνυμο σύνολο χρηστών και η εγκατάσταση μετά την αναβάθμιση της έκδοσης εξακολουθεί να προσθέτει αυτούς τους χρήστες.
επιλέξτε χρήστη, κεντρικό υπολογιστή, κωδικό πρόσβασης από το mysql.user όπου χρήστης όπως '';
Μπορείτε να σημειώσετε ότι οι στήλες χρήστη και κωδικού πρόσβασης είναι κενές και η πρόσβαση περιορίζεται στον localhost. Ωστόσο, δεν θέλετε κανείς να έχει πρόσβαση στη βάση δεδομένων. Χρησιμοποιήστε την ακόλουθη εντολή για να διαγράψετε ανώνυμους χρήστες:
απόθεση χρήστη " "@"localhost"
flush προνόμια?
7. Ορισμός λογαριασμού που δεν είναι ρίζας ως κάτοχος ή ομάδα
Ο ορισμός ενός λογαριασμού χρήστη που δεν είναι root δεν σχετίζεται με τον ριζικό χρήστη της MySQL. Η εγκατάσταση MySQL σε συστήματα Linux/Unix από πακέτα tar και tar.gz επιτρέπει στον διακομιστή να εκτελείται από οποιονδήποτε μη προνομιούχο χρήστη. Αυτό είναι ένα μειονέκτημα ασφαλείας επειδή οποιοσδήποτε χρήστης με την επιλογή επιχορήγησης FILE μπορεί να επεξεργαστεί ή να δημιουργήσει αρχεία στο διακομιστή. Ωστόσο, επιστρέφει ένα σφάλμα όταν ένας χρήστης προσπαθεί να έχει πρόσβαση σε αυτό χωρίς το -user=root λάθος.
Μπορείτε να το αποφύγετε αυτό εξασκώντας τον γενικό κανόνα της πρόσβασης στον διακομιστή βάσης δεδομένων ως ξεχωριστός χρήστης Linux. Για να εκτελέσετε το mysqld ως κανονικός χρήστης Linux, σταματήστε τον διακομιστή και αλλάξτε δικαιώματα ανάγνωσης/εγγραφής του διακομιστή MySQl σε mysql, ως εξής:
chown -R mysql /path/to/mysql/datadir
Ανοίξτε το κύριο αρχείο διαμόρφωσης MySQL, προσθέστε έναν νέο χρήστη mysql και επανεκκινήστε την υπηρεσία για να αποφύγετε την μη απαιτούμενη πρόσβαση διακομιστή:
vim /etc/mysql/my.cnf
χρήστης=mysql
επανεκκίνηση της υπηρεσίας sudo mysql
8. Ορισμός κωδικού πρόσβασης για λογαριασμό ρίζας
Η εγκατάσταση της MySQL μέσω ενός διαδραστικού φλοιού σε διανομές Linux που βασίζονται στο Debian δημιουργεί τον λογαριασμό χρήστη root και σας ζητά να ορίσετε έναν κωδικό πρόσβασης. Ωστόσο, αυτό δεν συμβαίνει σε μη διαδραστική εγκατάσταση κελύφους και διανομές που βασίζονται στο Red-Hat. Όπως αναφέρθηκε παραπάνω, ένας μη-root χρήστης ενός μηχανήματος Linux μπορεί να έχει πρόσβαση στο λογαριασμό χρήστη root mysql χρησιμοποιώντας το -user=root επιλογή. Μπορείτε να το αποφύγετε ορίζοντας τον κωδικό πρόσβασης ως εξής:
κωδικός πρόσβασης sudo mysqladmin
vim /etc/mysql/my.cnf
κωδικός πρόσβασης =
επανεκκίνηση της υπηρεσίας sudo mysql
9. Διασφαλίστε την κρυπτογράφηση δεδομένων κατά τη μεταφορά και την ηρεμία
Η προεπιλεγμένη μη κρυπτογραφημένη επικοινωνία μεταξύ του πελάτη και του διακομιστή ενέχει κίνδυνο υποκλοπής δεδομένων από οποιοδήποτε άτομο στη μέση. Ομοίως, τα μη κρυπτογραφημένα δεδομένα χρήστη στη βάση δεδομένων θέτει σε κίνδυνο την εμπιστευτικότητα και την ακεραιότητα του χρήστη. Η MySQL υποστηρίζει κρυπτογράφηση δεδομένων μεταξύ του πελάτη και του διακομιστή μέσω πρωτοκόλλου TLS/SSL, ενώ η μη κρυπτογραφημένη επικοινωνία είναι αποδεκτή μόνο όταν και τα δύο μέρη που επικοινωνούν βρίσκονται στο ίδιο δίκτυο.
Η MySQL υποστηρίζει πλέον κρυπτογράφηση σε κατάσταση ηρεμίας για την προστασία των δεδομένων που είναι αποθηκευμένα στον διακομιστή, ακόμη και όταν το σύστημα παραβιάζεται.
MySQL Advanced Security: Προστατέψτε τον εαυτό σας
Η διασφάλιση ότι έχετε τα υψηλότερα επίπεδα ασφάλειας στο διαδίκτυο είναι κρίσιμης σημασίας και αυτό το άρθρο θα σας δώσει μερικές χρήσιμες υποδείξεις προς τη σωστή κατεύθυνση. Τα παραπάνω βήματα είναι χρήσιμα για την ασφάλεια του διακομιστή της βάσης δεδομένων σας, αλλά είναι επίσης απαραίτητο να μάθετε πώς να εκχωρείτε ελάχιστα δικαιώματα σε χρήστες που δεν είναι διαχειριστές.
Δημιουργήστε τη δική σας βάση δεδομένων mySQL μόνο με ένα πρόγραμμα επεξεργασίας κειμένου και αυτό το βασικό περίγραμμα δομής ή "σχήμα".
Διαβάστε Επόμενο
- Προγραμματισμός
- Ασφάλεια
- Προγραμματισμός
- Συμβουλές ασφαλείας
- Ασφάλεια
Η Rumaisa είναι ανεξάρτητος συγγραφέας στο MUO. Έχει φορέσει πολλά καπέλα, από Μαθηματικός έως λάτρης της Ασφάλειας Πληροφοριών, και τώρα εργάζεται ως Αναλυτής SOC. Τα ενδιαφέροντά της περιλαμβάνουν την ανάγνωση και τη γραφή για νέες τεχνολογίες, διανομές Linux και οτιδήποτε αφορά την ασφάλεια πληροφοριών.
Εγγραφείτε στο ενημερωτικό μας δελτίο
Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Κάντε κλικ εδώ για να εγγραφείτε