Αντιμετώπιση προβλημάτων

Γνώση Υπολογιστών >> Αντιμετώπιση προβλημάτων >  >> Οι κωδικοί πρόσβασης

Πώς μπορείτε να προστατεύσετε το αρχείο zip με τον κωδικό πρόσβασης Η βοήθεια του σεναρίου UNIX;

Μπορείτε να προστατεύσετε ένα αρχείο zip με έναν κωδικό πρόσβασης χρησιμοποιώντας το βοηθητικό πρόγραμμα `Zip` command-line σε ένα σενάριο UNIX. Εδώ είναι, μαζί με εξηγήσεις και βέλτιστες πρακτικές:

1. Χρησιμοποιώντας την επιλογή `-p` (λιγότερο ασφαλές - δεν συνιστάται για ευαίσθητα δεδομένα):

`` `bash

#!/bin/bash

Zip_file ="my_archive.zip"

Κωδικός πρόσβασης ="my_secret_password"

Files_to_zip ="File1.txt File2.pdf Directory1"

ZIP -P "$ Password" "$ zip_file" "$ files_to_zip"

echo "αρχείο zip '$ zip_file' που δημιουργήθηκε με κωδικό πρόσβασης (λιγότερο ασφαλής μέθοδος)."

`` `

* Επεξήγηση:

* `zip -p" $ password "" $ zip_file "" $ files_to_zip "`:Αυτή η εντολή δημιουργεί το αρχείο zip.

* `-p" $ password "`:Καθορίζει τον κωδικό πρόσβασης απευθείας στη γραμμή εντολών. Αυτό είναι το πρόβλημα!

* `" $ Zip_file "`:Το όνομα του αρχείου zip για δημιουργία.

* `" $ Files_to_zip "`:Τα αρχεία και οι κατάλογοι που θέλετε να συμπεριλάβετε στο αρχείο ZIP. Χρησιμοποιήστε αποσπάσματα για να χειριστείτε χώρους σε ονόματα αρχείων.

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

* Ορατό στη λίστα διεργασιών: Οποιοσδήποτε έχει πρόσβαση στη λίστα διαδικασιών του συστήματος (εντολή `ps`) μπορεί να δει τον κωδικό πρόσβασης.

* Αποθηκευμένο στην ιστορία του κελύφους: Ο κωδικός πρόσβασης μπορεί να αποθηκευτεί στο αρχείο ιστορικού κελύφους (π.χ. `.bash_history`).

2. Χρησιμοποιώντας την επιλογή `-e` με διαδραστική προτροπή κωδικού πρόσβασης (καλύτερα):

`` `bash

#!/bin/bash

Zip_file ="my_archive.zip"

Files_to_zip ="File1.txt File2.pdf Directory1"

Zip -e "$ zip_file" "$ files_to_zip"

echo "αρχείο zip '$ zip_file' που δημιουργήθηκε με κωδικό πρόσβασης (διαδραστική προτροπή)."

`` `

* Επεξήγηση:

* `zip -e" $ zip_file "" $ files_to_zip "`:

* `-e`:Ενεργοποιεί την κρυπτογράφηση. Η εντολή `zip` θα σας ζητήσει να εισαγάγετε και να επαληθεύσετε τον κωδικό πρόσβασης διαδραστικά.

* Βελτίωση ασφαλείας: Αυτό είναι καλύτερο από το `-p` επειδή ο κωδικός πρόσβασης δεν αποθηκεύεται στη γραμμή εντολών. Εισάγεται απευθείας στην προτροπή.

* Περιορισμοί:

* Μη-scriptable: Απαιτεί την ανθρώπινη αλληλεπίδραση να εισαγάγει τον κωδικό πρόσβασης, καθιστώντας το ακατάλληλο για πλήρως αυτοματοποιημένα σενάρια.

3. Χρησιμοποιώντας την επιλογή `-p` (ελαφρώς καλύτερη, ακόμα δεν είναι ιδανική για ευαίσθητα δεδομένα):

`` `bash

#!/bin/bash

Zip_file ="my_archive.zip"

Κωδικός πρόσβασης ="my_secret_password"

Files_to_zip ="File1.txt File2.pdf Directory1"

ZIP -P "$ Password" "$ zip_file" "$ files_to_zip"

echo "αρχείο zip '$ zip_file' που δημιουργήθηκε με κωδικό πρόσβασης (κεφαλαία p - λιγότερο ανασφαλής από την πεζά p)."

`` `

* Επεξήγηση: Το `-p` είναι παρόμοιο με το` -p` αλλά αντιμετωπίζει τον κωδικό πρόσβασης ως κυριολεκτική συμβολοσειρά και δεν ερμηνεύει οποιαδήποτε μετα-metacharacters σε αυτό.

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

4. Χρήση `openssl` για πιο ασφαλή κρυπτογράφηση (συνιστάται για ευαίσθητα δεδομένα):

Αυτή η προσέγγιση χρησιμοποιεί `openssl` για να δημιουργήσει ένα ασφαλώς κρυπτογραφημένο αρχείο. Αυτό θεωρείται γενικά μια πιο ισχυρή μέθοδος για την προστασία των ευαίσθητων δεδομένων σε σύγκριση με την ενσωματωμένη κρυπτογράφηση `zip`.

`` `bash

#!/bin/bash

Zip_file ="my_archive.zip.enc" # Σημειώστε την επέκταση .enc

Files_to_zip ="File1.txt File2.pdf Directory1"

# Δημιουργήστε πρώτα ένα αρχείο πίσσας

tar -czf tmp_archive.tar.gz "$ files_to_zip"

# Κρυπτογραφήστε το αρχείο πίσσας με το OpenSSL

OpenSSL enc -AES -256 -CBC -SALT -in TMP_ARCHIVE.tar.gz -out "$ zip_file"

# Αφαιρέστε το προσωρινό αρχείο πίσσας

rm tmp_archive.tar.gz

echo "κρυπτογραφημένο αρχείο '$ zip_file' που δημιουργήθηκε χρησιμοποιώντας το openssl."

`` `

* Επεξήγηση:

* `tar -czf tmp_archive.tar.gz" $ files_to_zip "`:Δημιουργεί ένα αρχείο tar gzipped των αρχείων. Το «Tar» είναι ένα τυπικό βοηθητικό πρόγραμμα UNIX για την αρχειοθέτηση αρχείων και καταλόγων. `gzip` συμπιέζει το αρχείο.

* `openssl enc -aes -256 -cbc -salt -in tmp_archive.tar.gz -out" $ zip_file ":Κρυπτογραφεί το αρχείο πίσσας χρησιμοποιώντας το OpenSSL.

* `OpenSSL ENC`:Επικαλείται την εντολή κρυπτογράφησης OpenSSL.

* `-AES-256-CBC`:Καθορίζει τον αλγόριθμο AES (προχωρημένο πρότυπο κρυπτογράφησης) με κλειδί 256 bit σε λειτουργία CBC (Cipher Block Chaining). Το AES-256 είναι ένας ισχυρός αλγόριθμος κρυπτογράφησης.

* `-salt`:Προσθέτει ένα τυχαίο αλάτι στον κωδικό πρόσβασης πριν από την κρυπτογράφηση. Αυτό είναι * κρίσιμο * για την πρόληψη επιθέσεων τραπεζιού ουράνιου τόξου. Το OpenSSL θα δημιουργήσει αυτόματα το αλάτι.

* `-in tmp_archive.tar.gz`:Καθορίζει το αρχείο εισόδου (το αρχείο TAR).

* `-out" $ zip_file "` `:Καθορίζει το αρχείο εξόδου (το κρυπτογραφημένο αρχείο). Η επέκταση `.enc` είναι μια κοινή σύμβαση.

* Κωδικός πρόσβασης: Το OpenSSL θα σας ζητήσει τον κωδικό πρόσβασης στη γραμμή εντολών. Αυτό είναι καλύτερο από το να το περάσουμε ως επιχείρημα.

* Πλεονεκτήματα ασφαλείας:

* Ισχυρή κρυπτογράφηση: Χρησιμοποιεί AES-256, έναν πολύ ισχυρό αλγόριθμο κρυπτογράφησης.

* αλατισμένος κωδικός πρόσβασης: Το αλάτι αποτρέπει τις προκαταρκτικές επιθέσεις (τραπέζια ουράνιου τόξου) που προσπαθούν να μαντέψουν τους κωδικούς πρόσβασης.

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

* αποκρυπτογράφηση: Για να αποκρυπτογραφήσετε το αρχείο, χρησιμοποιήστε την ακόλουθη εντολή `openssl` (θα σας ζητηθεί ο κωδικός πρόσβασης):

`` `bash

OpenSSL enc -d -AES -256 -CBC -SALT -in my_archive.zip.enc -out tmp_archive.tar.gz

tar -xzf tmp_archive.tar.gz

rm tmp_archive.tar.gz

`` `

* `-d`:αποκρυπτογράφηση

* `-x`:Εξαγωγή

5. Χρησιμοποιώντας ένα αρχείο κωδικού πρόσβασης ή μεταβλητή περιβάλλοντος (πιο scriptable, με προειδοποιήσεις):

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

`` `bash

#!/bin/bash

Zip_file ="my_archive.zip.enc"

Files_to_zip ="File1.txt File2.pdf Directory1"

Password_file ="password.txt"

# Βεβαιωθείτε ότι υπάρχει το αρχείο κωδικού πρόσβασης και έχει τα κατάλληλα δικαιώματα (μόνο για ανάγνωση για τον ιδιοκτήτη)

αν [! -f "$ password_file"]; τότε

echo "Σφάλμα:αρχείο κωδικού πρόσβασης '$ password_file' δεν βρέθηκε."

έξοδος 1

fi

chmod 400 "$ password_file" # μόνο για τον ιδιοκτήτη

# Δημιουργήστε πρώτα ένα αρχείο πίσσας

tar -czf tmp_archive.tar.gz "$ files_to_zip"

# Κρυπτογραφήστε το αρχείο πίσσας με το OpenSSL

OpenSSL ENC -AES -256 -CBC -SALT -PASS Αρχείο:"$ password_file" -in tmp_archive.tar.gz -out "$ zip_file"

# Αφαιρέστε το προσωρινό αρχείο πίσσας

rm tmp_archive.tar.gz

echo "κρυπτογραφημένο αρχείο '$ zip_file' που δημιουργήθηκε χρησιμοποιώντας το openssl (κωδικός πρόσβασης από το αρχείο)."

`` `

* Επεξήγηση:

* `Password_file =" password.txt "`:Καθορίζει τη διαδρομή προς το αρχείο που περιέχει τον κωδικό πρόσβασης. Αυτό το αρχείο είναι κρίσιμο για να εξασφαλίσετε σωστά!

* `chmod 400" $ password_file "`:Ορίζει τα δικαιώματα στο αρχείο κωδικού πρόσβασης σε μόνο για ανάγνωση για τον ιδιοκτήτη. Αυτό είναι ζωτικής σημασίας για την πρόληψη της μη εξουσιοδοτημένης πρόσβασης.

* `openssl enc -aes -256 -cbc -salt -pass αρχείο:" $ password_file "...`:Το αρχείο `-pass:" $ password_file "` opting openssl για να διαβάσει τον κωδικό πρόσβασης από το καθορισμένο αρχείο.

* Σκέψεις ασφαλείας:

* Προστασία αρχείων κωδικού πρόσβασης: Το αρχείο `password.txt` πρέπει να είναι εξαιρετικά καλά προστατευμένο.

* Αποθηκεύστε το έξω από το Webroot (αν βρίσκεστε σε διακομιστή ιστού).

* Δώστε τα περιοριστικά δικαιώματα (π.χ., `chmod 400 password.txt` - μόνο για ανάγνωση για τον ιδιοκτήτη).

* Μην το ελέγχετε σε έλεγχο έκδοσης (GIT, κλπ.).

* μεταβλητές περιβάλλοντος: Μια εναλλακτική λύση είναι η αποθήκευση του κωδικού πρόσβασης σε μια μεταβλητή περιβάλλοντος. Χρησιμοποιήστε τον κωδικό πρόσβασης εξαγωγής =your_secret_password` (αλλά να γνωρίζετε ότι αυτό μπορεί να είναι ορατό μέσω `ps` ή στο ιστορικό κελύφους αν δεν είστε προσεκτικοί). Στη συνέχεια, χρησιμοποιήστε το `-pass env:κωδικό πρόσβασης 'στην εντολή` openssl`. Ποτέ δεν hardcode τον κωδικό πρόσβασης απευθείας στο σενάριο.

* Διαχείριση κλειδιών: Για εξαιρετικά ευαίσθητα δεδομένα, εξετάστε τη χρήση βασικών συστημάτων διαχείρισης (KMS) ή μονάδων ασφαλείας υλικού (HSMS) αντί να αποθηκεύετε κωδικούς πρόσβασης σε αρχεία ή μεταβλητές περιβάλλοντος.

Σημαντικές εκτιμήσεις και βέλτιστες πρακτικές:

* Αλγόριθμος κρυπτογράφησης: Χρησιμοποιείτε πάντα ισχυρούς αλγόριθμους κρυπτογράφησης όπως το AES-256. Αποφύγετε τους παλαιότερους, ασθενέστερους αλγόριθμους όπως η ενσωματωμένη κρυπτογράφηση του Zip (η οποία είναι εύκολα σπασμένη).

* Salting: Χρησιμοποιείτε πάντα ένα αλάτι με τον κωδικό πρόσβασής σας. Το OpenSSL's `-Salt` είναι αυτόματα αυτόματα.

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

* Κλειδί περιστροφής: Αλλάξτε τακτικά (περιστρέψτε) τα πλήκτρα κρυπτογράφησης/κωδικούς πρόσβασης.

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

* Αρχή του ελάχιστου προνομίου: Δώστε στο σενάριο μόνο τα απαραίτητα δικαιώματα για την εκτέλεση του έργου του.

* Έλεγχος: Αρχείο καταγραφής όταν συμβαίνουν εργασίες κρυπτογράφησης και αποκρυπτογράφησης για σκοπούς ελέγχου.

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

* Προσωρινά αρχεία: Εάν χρησιμοποιείτε προσωρινά αρχεία (όπως στα παραδείγματα `openssl`), φροντίστε να τα διαγράψετε με ασφάλεια μετά τη χρήση. `Shred` ή` wipe` μπορεί να χρησιμοποιηθεί για αυτό, αλλά απαιτούν προσεκτική χρήση. Απλά χρησιμοποιώντας `rm` αφήνει τα δεδομένα ανακτήσιμα.

* Αποφύγετε την ενσωματωμένη κρυπτογράφηση του Zip: Η ενσωματωμένη κρυπτογράφηση στο βοηθητικό πρόγραμμα `zip` θεωρείται γενικά αδύναμη και πρέπει να αποφεύγεται για ευαίσθητα δεδομένα. Το "OpenSSL` είναι πολύ πιο ασφαλές.

Επιλέγοντας τη σωστή μέθοδο:

* Υψηλότερη ασφάλεια (και συνήθως απλούστερη): Χρησιμοποιήστε το `openssl 'και εισαγάγετε χειροκίνητα τον κωδικό πρόσβασης στην προτροπή.

* scriptable, αλλά με κινδύνους: Εάν χρειάζεστε μια λύση scriptable, χρησιμοποιήστε το `openssl` με ένα αρχείο κωδικού πρόσβασης ή μια μεταβλητή περιβάλλοντος, αλλά * μόνο * αν μπορείτε να εγγυηθείτε την ασφάλεια του αποθήκευσης κωδικού πρόσβασης. Κατανοήστε τους κινδύνους. Εξετάστε το KMS ή το HSM για πολύ ευαίσθητα δεδομένα.

* Αποφύγετε το `zip -p` και το` zip -p 'με κάθε κόστος για ευαίσθητα δεδομένα.

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα