Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

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

1. Χρησιμοποιήστε SSH Tunneling αντί για απομακρυσμένη σύνδεση

Η υπηρεσία MySQL εκτελείται στη θύρα 3306 από προεπιλογή. Όταν εγκαθιστάτε τη MySQL, θα δείτε ότι η θύρα 3306 είναι σε λειτουργία ακρόασης για όλες τις συνδέσεις. Ως έχει, η θύρα MySQL είναι ανοιχτή στον έξω κόσμο. Γι' αυτό θα πρέπει να ρυθμίσετε την υπηρεσία MySQL να ακούει μόνο την τοπική διεύθυνση.

Δεδομένου ότι οι διακομιστές εκτελούνται συνήθως σε μια διανομή Linux, τα παρακάτω παραδείγματα βασίζονται σε μια διανομή Debian. Το αρχείο που πρέπει να χρησιμοποιήσετε για SSH tunneling αντί για απομακρυσμένη σύνδεση και για να κλείσετε την προεπιλεγμένη θύρα στον έξω κόσμο είναι

instagram viewer
/etc/mysql/my.cnf. Σε αυτό το αρχείο, πρέπει να ανοίξετε ένα πεδίο που ονομάζεται [mysqld] και γράψτε την παρακάτω εντολή:

[mysqld]
δένω-διεύθυνση=127.0.0.1

Μετά από αυτή τη διαδικασία, μην ξεχάσετε να αποθηκεύσετε αυτό το αρχείο και να επανεκκινήσετε την υπηρεσία με την ακόλουθη εντολή:

sudo systemctl επανεκκίνηση mysqld
# ή
sudosystemctlεπανεκκίνησηmariadb.υπηρεσία

Με αυτό, η υπηρεσία MySQL θα ακούει μόνο την τοπική διεύθυνση.

Εάν χρησιμοποιείτε το MariaDB, μπορείτε επίσης να εξετάσετε /etc/mysql/mariadb.conf.d/50-server.cnf και ελέγξτε αν υπάρχει ορισμός για δέσμευση-διεύθυνση.

Τώρα που έχετε ορίσει τη διεύθυνση σύνδεσης σε 127.0.0.1, που είναι localhost, μπορείτε να εκτελέσετε μια σάρωση Nmap και να ελέγξετε την έξοδο:

Μπορείτε να δείτε τη θύρα MySQL καθώς το 127.0.0.1 αντιπροσωπεύει τον localhost που βλέπετε. Μπορείτε να δοκιμάσετε να αλλάξετε ξανά τη διεύθυνση bind για να βεβαιωθείτε ότι λειτουργεί:

[mysqld]
δένω-διεύθυνση=127.5.5.1

Στη συνέχεια αποθηκεύστε το /etc/mysql/my.cnf αρχείο και επανεκκινήστε την υπηρεσία MySQL. Εάν πραγματοποιήσετε σάρωση Nmap και πάλι σε αυτό το στάδιο, δεν θα πρέπει να δείτε αυτήν τη διεύθυνση σύνδεσης στον localhost.

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

2. Ρυθμίστε ένα τοπικό φράγμα πρόσβασης αρχείων

Η MySQL μπορεί να επικοινωνήσει με το τοπικό σύστημα αρχείων. Με τα ερωτήματα, μπορείτε να δείτε το περιεχόμενο ενός κειμένου στο τοπικό σύστημα αρχείων ή να εγγράψετε το αποτέλεσμα του ερωτήματος σε έναν δίσκο. Για να αποτρέψετε κακόβουλους εισβολείς που χρησιμοποιούν αυτήν τη δυνατότητα, πρέπει να αποτρέψετε την επικοινωνία της MySQL με το τοπικό σύστημα αρχείων.

Μπορείτε να χρησιμοποιήσετε μια συνάρτηση που ονομάζεται local-infile για να λάβετε προφυλάξεις. Για παράδειγμα, φανταστείτε ότι έχετε ένα αρχείο με το όνομα "/etc/secretfile.txt" και έχετε έναν κωδικό πρόσβασης σε αυτό το αρχείο. Εάν η τιμή της συνάρτησης local-infile στο αρχείο /etc/mysql/my.cnf είναι 1, τότε η πρόσβαση είναι ανοιχτή. Έτσι, μπορείτε να αποκτήσετε πρόσβαση στο αρχείο secretfile.txt.

Η τιμή της συνάρτησης local-infile είναι 1. Επανεκκινήστε τη βάση δεδομένων MySQL για να πραγματοποιηθούν οι αλλαγές. Τώρα, συνδεθείτε στη MySQL με την ακόλουθη εντολή και ελέγξτε αν μπορείτε να δείτε το αρχείο secretfile.txt:

ΕΠΙΛΕΓΩLOAD_FILE("/etc/secretfile.txt");

Δεν είναι δύσκολο να καταγράψετε τις πληροφορίες σε οποιοδήποτε αρχείο στον υπολογιστή σας.

Για να λύσετε αυτό το πρόβλημα, αλλάξτε την τιμή local-infile στο αρχείο σας /etc/mysql/my.cnf ως εξής:

[mysqld]
τοπικός-infile=0

Επανεκκινήστε την υπηρεσία MySQL. Επανασυνδεθείτε στη MySQL και επαναλάβετε το προηγούμενο βήμα. δεν θα πρέπει πλέον να βλέπετε τα περιεχόμενα του αρχείου.

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

3. Ορίστε χρήστες και κωδικούς πρόσβασης εφαρμογών

Ο χρήστης διαχείρισης βάσης δεδομένων και ο χρήστης MySQL που έχει πρόσβαση στη βάση δεδομένων πρέπει να είναι διαφορετικοί μεταξύ τους. Με άλλα λόγια, η σύνδεση εφαρμογών στη MySQL με χρήστες root είναι εξαιρετικά επικίνδυνη. Εάν είναι δυνατόν, ορίστε τους χρήστες των εφαρμογών που δεν έχουν απόδοση Λειτουργίες UPDATE ή INSERT χωριστά.

Ένα άλλο πράγμα που πρέπει να λάβετε υπόψη σε αυτό το σημείο είναι οι κωδικοί πρόσβασης χρήστη. Όπως σχεδόν σε κάθε τομέα, οι κωδικοί πρόσβασης για τους χρήστες MySQL πρέπει να είναι περίπλοκοι και απρόβλεπτοι. Εάν χρειάζεστε βοήθεια με αυτό, υπάρχουν εξαιρετικά συστήματα δημιουργίας κωδικών πρόσβασης που μπορείτε να χρησιμοποιήσετε.

4. Διαγραφή ανώνυμων χρηστών

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

ΕΠΙΛΕΓΩ * ΑΠΟ mysql.user ΟΠΟΥΧΡΗΣΤΗΣ="";
# Παράδειγμα εξόδου
Αδειάζω σειρά (0,001 δευτ.)

Εάν υπάρχουν αποτελέσματα, θα πρέπει να διαγράψετε αυτούς τους ανώνυμους χρήστες. Για παράδειγμα, εάν υπήρχε ένας ανώνυμος λογαριασμός με το όνομα "anonuser" σε ένα περιβάλλον με το όνομα "localhost", θα έπρεπε να χρησιμοποιήσετε μια εντολή όπως η παρακάτω για να διαγράψετε αυτόν τον λογαριασμό:

ΑΠΟΣΤΟΛΗ ΧΡΗΣΤΗ 'anonuser'@'localhost';

5. Ελέγξτε τα δικαιώματα τοπικού αρχείου MySQL

Φανταστείτε ότι είστε διαχειριστής βάσης δεδομένων και θέλετε να επιστρέψετε σε δεδομένα πριν από μια εβδομάδα. Σε αυτήν την περίπτωση, ίσως χρειαστεί να συνδεθείτε στον διακομιστή βάσης δεδομένων μέσω SSH και να αλλάξετε τα αρχεία MySQL που θέλετε. Ενώ το κάνετε αυτό, ίσως έχετε χρησιμοποιήσει τα δικαιώματα χρήστη root του Linux. Δηλαδή, η ιδιοκτησία και τα δικαιώματα των αρχείων δεδομένων μπορούν να αλλάξουν. Δεν το θέλεις αυτό.

Κοιτάξτε τον κατάλογο /var/lib/mysql για να ελέγξετε τα δικαιώματα που έχουν παραχωρηθεί. Αυτό που πρέπει να ελέγξετε εδώ είναι αν ο κάτοχος όλων των αρχείων είναι ο χρήστης της MySQL. Η ακόλουθη εντολή θα κάνει το κόλπο:

sudo ls -al /var/lib/mysql

Τα δικαιώματα ανάγνωσης και εγγραφής των αρχείων θα πρέπει να είναι μόνο για τον χρήστη MySQL. Κανένας άλλος χρήστης δεν πρέπει να έχει δικαιώματα.

6. Χρησιμοποιήστε MySQL SSL

Η σκέψη για ένα συγκεκριμένο παράδειγμα είναι ο καλύτερος τρόπος για να κατανοήσετε τη χρήση MySQL και SSL. Φανταστείτε ότι ένας από τους διακομιστές στην περιοχή ABC, όπου υπάρχουν πολλοί διαφορετικοί διακομιστές, καταλαμβάνεται από κακόβουλους χάκερ. Οι χάκερ θα πραγματοποιήσουν μια εσωτερική σάρωση στην περιοχή ABC. Με αυτόν τον τρόπο συλλέγουν πληροφορίες για τους διακομιστές.

Εάν εντοπίσουν έναν διακομιστή MySQL κατά τη διάρκεια αυτής της διαδικασίας, μπορούν να εκτελέσουν ένα Επίθεση Man-in-the-Middle (MitM) στον διακομιστή στόχο, που σημαίνει ότι μπορούν να κλέψουν τις πληροφορίες περιόδου σύνδεσης των εφαρμογών και των χρηστών που συνδέονται σε αυτόν τον διακομιστή. Ένας από τους καλύτερους τρόπους για να αποφευχθεί αυτό είναι να ενεργοποιήστε το SSL στον διακομιστή MySQL.

7. Αρχεία καταγραφής και ιστορικού

Χρησιμοποιείτε αρχεία καταγραφής MySQL για ανάλυση και εύρεση σφαλμάτων. Μπορείτε να επεξεργαστείτε πού διατηρούνται αυτά τα αρχεία καταγραφής εισάγοντας το my.cnf ως εξής:

# /etc/mysql/my.cnf
[mysqld]
κούτσουρο =/var/κούτσουρο/mylogfiles

Μπορείτε να αλλάξετε το όνομα ή την τοποθεσία των mylogfiles όπως θέλετε. Υπάρχει ένα ακόμη αρχείο που πρέπει να ελέγξετε. Όταν συνδέεστε στον διακομιστή MySQL σε ένα τερματικό Linux και πληκτρολογείτε διάφορες εντολές, αυτά τα ερωτήματα αποθηκεύονται στο αρχείο mysql_history. Εάν εκτελέσετε την ακόλουθη εντολή, μπορείτε να δείτε τα ερωτήματα που χρησιμοποιείτε στο τερματικό MySQL:

cat ~/.mysql_history

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

sudo echo "καθάρισε"> ~/.mysql_history

Στη συνέχεια, μπορείτε να ελέγξετε ξανά τα περιεχόμενα του αρχείου.

Όποιος κατέχει τη βάση δεδομένων κατέχει το σύστημα

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