Αν είστε αναγκασμένοι να χρησιμοποιήσετε μια δέσμη ενεργειών Linux για να συνδεθείτε σε έναν πόρο προστατεύεται με κωδικό πρόσβασης, ίσως αισθάνονται άβολα για τη θέση αυτή τον κωδικό πρόσβασης στο σενάριο. λύνει OpenSSL ότι το πρόβλημα για σας.
Κωδικοί πρόσβασης και Σενάρια
Δεν είναι μια μεγάλη ιδέα να βάλει τους κωδικούς πρόσβασης με κέλυφος σενάρια. Στην πραγματικότητα, είναι μια πολύ κακή ιδέα. Αν το σενάριο πέσει σε λάθος χέρια, ο καθένας που διαβάζει μπορεί να δει ό, τι ο κωδικός πρόσβασης είναι. Αλλά αν είστε αναγκασμένοι να χρησιμοποιήσετε μια δέσμη ενεργειών, τι άλλο μπορείς να κάνεις;
Μπορείτε να εισάγετε τον κωδικό πρόσβασης με το χέρι, όταν οι φθάνει διαδικασία εκείνο το σημείο, αλλά αν το σενάριο δεν πρόκειται να τρέξει χωρίς επιτήρηση, που δεν θα λειτουργήσει. Ευτυχώς, υπάρχει μια εναλλακτική λύση για σκληρό κωδικοποίησης των κωδικών πρόσβασης στο σενάριο. Counterintuitively, χρησιμοποιεί ένα διαφορετικό κωδικό πρόσβασης για να επιτευχθεί αυτό, μαζί με κάποια ισχυρή κρυπτογράφηση.
Στο παράδειγμά μας σενάριο, θα πρέπει να κάνει μια απομακρυσμένη σύνδεση με υπολογιστή Fedora Linux από το Ubuntu υπολογιστή μας. Θα πρέπει να χρησιμοποιείτε ένα σενάριο φλοιού Bash να κάνει μια σύνδεση SSH στον υπολογιστή Fedora. Το σενάριο πρέπει να λειτουργεί χωρίς επίβλεψη, και δεν θέλουμε να θέσει τον κωδικό πρόσβασης για τον απομακρυσμένο λογαριασμό στο σενάριο. Δεν μπορείτε να χρησιμοποιήσετε τα πλήκτρα SSH σε αυτή την περίπτωση, επειδή είμαστε προσποιούμαστε ότι δεν έχουμε κανένα έλεγχο ή διαχειριστή δικαιωμάτων πέρα από τον υπολογιστή του Fedora.
Εμείς πάμε για να κάνουν χρήση των γνωστών
OpenSSL Toolkit
να χειριστεί την κρυπτογράφηση και ένα βοηθητικό πρόγραμμα που ονομάζεται
sshpass
για να τροφοδοτήσει τον κωδικό πρόσβασης στην εντολή SSH.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να δημιουργήσετε και να εγκαταστήσετε τα κλειδιά SSH από το κέλυφος του Linux
Εγκατάσταση OpenSSL και sshpass
Επειδή πολλά άλλα εργαλεία κρυπτογράφησης και ασφάλειας χρήση OpenSSL, θα μπορούσε να είναι ήδη εγκατεστημένο στον υπολογιστή σας. Ωστόσο, αν δεν είναι, αυτό διαρκεί μόνο μια στιγμή για να εγκαταστήσετε.
Στο Ubuntu, πληκτρολογήστε την εντολή:
sudo apt get openssl
Να εγκατασταθεί
sshpass
, Χρησιμοποιήστε αυτήν την εντολή:
sudo apt εγκατάσταση sshpass
On Fedora, πρέπει να πληκτρολογήσετε:
sudo DNF εγκατάσταση openssl
Η εντολή για να εγκαταστήσετε
sshpass
είναι:
sudo DNF εγκατάσταση sshpass
Σε Manjaro Linux, μπορούμε να εγκαταστήσουμε OpenSSL με:
sudo pacman-SY openssl
Τέλος, για την εγκατάσταση
sshpass
, Χρησιμοποιήστε αυτήν την εντολή:
sudo pacman-SY sshpass
Κρυπτογράφηση για τη γραμμή εντολών
Πριν φτάσουμε σε χρήση η
OpenSSL
εντολή με σενάρια, ας εξοικειωθούν με αυτό με τη χρήση του στη γραμμή εντολών. ας πούμε Ας ότι ο κωδικός πρόσβασης για το λογαριασμό στον απομακρυσμένο υπολογιστή είναι
σκουριασμένο! herring.pitshaft
. Εμείς πάμε για να κρυπτογραφήσετε αυτόν τον κωδικό πρόσβασης χρησιμοποιώντας
OpenSSL
.
Πρέπει να παρέχει ένα κωδικό κρυπτογράφησης όταν το κάνουμε. Ο κωδικός κρυπτογράφησης που χρησιμοποιούνται στις διαδικασίες κρυπτογράφησης και αποκρυπτογράφησης. Υπάρχουν πολλές παραμέτρους και τις επιλογές στο
OpenSSL
εντολή. Θα ρίξουμε μια ματιά σε καθένα από αυτά σε μια στιγμή.
echo 'herring.pitshaft σκουριασμένο!' | openssl enc -aes-256-CBC -Δ.δ. SHA512 -a -pbkdf2 -iter 100000 -Αλάτι Να περάσει πάσα: 'pick.your.password'
Είμαστε χρησιμοποιώντας
ηχώ
για την αποστολή του κωδικού πρόσβασης απομακρυσμένη λογαριασμό μέσω ενός σωλήνα και σε η
OpenSSL
εντολή.
ο
OpenSSL
παράμετροι είναι:
- enc -aes-256-CBC : Ο τύπος κωδικοποίησης. Χρησιμοποιούμε το Advanced Encryption Standard κλειδί 256-bit κρυπτογράφησης με κρυπτογράφησης-αλύσωσης μπλοκ.
- -Δ.δ. SHA512 : Το μήνυμα χωνέψει τύπος (hash). Είμαστε χρησιμοποιώντας τον αλγόριθμο κρυπτογράφησης SHA512.
-
-ένα
: Αυτό λέει
OpenSSLνα εφαρμόσει βάσης-64 που κωδικοποιεί μετά τη φάση κρυπτογράφηση και πριν από τη φάση της αποκρυπτογράφησης. - -pbkdf2 : Χρησιμοποιώντας τον κωδικό-Based Key Παραγωγή Λειτουργία 2 (PBKDF2) καθιστά πολύ πιο δύσκολο για μια επίθεση ωμής βίας για να πετύχει το μαντέψουν τον κωδικό πρόσβασής σας. PBKDF2 απαιτεί πολλούς υπολογισμούς για να εκτελέσει την κρυπτογράφηση. Ένας εισβολέας θα πρέπει να αναπαράγουν το σύνολο αυτών των υπολογισμών.
- -iter 100000 : Ορίζει τον αριθμό των υπολογισμών που PBKDF2 θα χρησιμοποιήσει.
- -άλας : Χρησιμοποιώντας μια εφαρμόζονται τυχαία τιμή άλας καθιστά την κρυπτογραφημένη διαφορετική έξοδο κάθε φορά, ακόμα και αν το απλό κείμενο είναι το ίδιο.
-
Να περάσει πέρασμα:»pick.your.password»
: Ο κωδικός πρόσβασης θα πρέπει να χρησιμοποιήσετε για να αποκρυπτογραφήσει το κρυπτογραφημένο απομακρυσμένο κωδικό πρόσβασης. Υποκατάστατο
pick.your.passwordμε ένα ισχυρό κωδικό πρόσβασης της επιλογής σας.
Η κρυπτογραφημένη έκδοση του μας
σκουριασμένο! herring.pitshaft
κωδικός πρόσβασης είναι γραμμένο στο παράθυρο τερματικού.
Για να αποκρυπτογραφήσει αυτό, θα πρέπει να περάσει αυτή την κρυπτογραφημένη συμβολοσειρά σε
OpenSSL
με τις ίδιες παραμέτρους που θα χρησιμοποιηθούν για την κρυπτογράφηση, αλλά προσθέτοντας στο
-ρε
(Αποκρυπτογράφηση) επιλογή.
echo U2FsdGVkX19iiiRNhEsG + wm / uKjtZJwnYOpjzPhyrDKYZH5lVZrpIgo1S0goZU46 | openssl enc -aes-256-CBC -Δ.δ. SHA512 -a -d -pbkdf2 -iter 100000 -Αλάτι Να περάσει πάσα: 'pick.your.password'
Η σειρά αποκρυπτογραφείται, και η αρχική μας κείμενο, ο κωδικός πρόσβασης για τον απομακρυσμένο χρήστη λογαριασμού είναι γραμμένο στο παράθυρο τερματικού.
Αυτό αποδεικνύει ότι μπορούμε με ασφάλεια να κρυπτογραφήσετε απομακρυσμένο κωδικό πρόσβασης του λογαριασμού χρήστη μας. Μπορούμε επίσης να το αποκρυπτογραφήσει όταν την χρειαζόμαστε, χρησιμοποιώντας τον κωδικό πρόσβασης που θα παρέχονται κατά τη φάση της κρυπτογράφησης.
Αλλά μήπως αυτή η βελτίωση στην πραγματικότητα η κατάσταση μας; Αν χρειαζόμαστε τον κωδικό πρόσβασης κρυπτογράφησης για να αποκρυπτογραφήσει τον κωδικό πρόσβασης απομακρυσμένο λογαριασμό, σίγουρα ο κωδικός πρόσβασης αποκρυπτογράφησης θα πρέπει να είναι στο σενάριο; Λοιπόν, ναι, το κάνει. Αλλά το κρυπτογραφημένο κωδικό πρόσβασης του λογαριασμού απομακρυσμένο χρήστη θα αποθηκεύονται σε ένα διαφορετικό, κρυφό αρχείο. Τα δικαιώματα στο αρχείο θα εμποδίσει κανέναν, αλλά εσείς, και ο χρήστης root του συστήματος, προφανώς, από την πρόσβαση σε αυτόν.
Για να στείλετε την έξοδο από την εντολή κρυπτογράφησης σε ένα αρχείο, μπορούμε να χρησιμοποιήσουμε την ανακατεύθυνση. Το αρχείο ονομάζεται «.secret_vault.txt.» Έχουμε αλλάξει τον κωδικό πρόσβασης κρυπτογράφησης σε κάτι πιο ισχυρή.
echo 'herring.pitshaft σκουριασμένο!' | OpenSSL ENC -aes-256-CBC -Δ.δ. SHA512 -a -pbkdf2 -iter 100000 -Αλάτι Να περάσει μπάλα: '! μυστική # θόλο κωδικό' & gt? .secret_vault.txt
Τίποτα δεν ορατή συμβαίνει, αλλά ο κωδικός πρόσβασης είναι κρυπτογραφημένα και αποστέλλονται στο αρχείο «.secret_vault.txt».
Μπορούμε να ελέγξετε ότι λειτούργησε από την αποκρυπτογράφηση του κωδικού πρόσβασης στο κρυφό αρχείο. Σημειώστε ότι χρησιμοποιούμε
Γάτα
Εδώ, δεν
ηχώ
.
.secret_vault.txt γάτα | OpenSSL ENC -aes-256-CBC -Δ.δ. SHA512 -a-d -pbkdf2 -iter 100000 -Αλάτι Να περάσει μπάλα: '! μυστική # θόλο κωδικό πρόσβασης'
Ο κωδικός πρόσβασης επιτυχία αποκρυπτογραφούνται από τα στοιχεία της δικογραφίας. Καλά
χρήση
χλωμός
για να αλλάξετε τα δικαιώματα σε αυτό το αρχείο, έτσι ώστε κανένας άλλος δεν μπορεί να έχει πρόσβαση.
chmod 600 .secret_vault.txt
ls -l .secret_vault.txt
Χρησιμοποιώντας ένα άδειες μάσκα των 600 αφαιρεί κάθε πρόσβαση για οποιονδήποτε άλλον εκτός από τον ιδιοκτήτη του αρχείου. Μπορούμε τώρα να προχωρήσουμε στη συγγραφή σεναρίου μας.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να χρησιμοποιήσετε το chmod εντολή σε Linux
Χρησιμοποιώντας OpenSSL σε μια Script
script μας είναι αρκετά απλή:
#! / Bin / bash # Όνομα του απομακρυσμένου λογαριασμού REMOTE_USER = geek για # Κωδικό πρόσβασης για τον απομακρυσμένο λογαριασμό REMOTE_PASSWD = $ (.secret_vault.txt γάτα | OpenSSL ENC -aes-256-CBC -Δ.δ. SHA512 -a-d -pbkdf2 -iter 100000 -Αλάτι Να περάσει μπάλα: "! Μυστική # θόλο κωδικό πρόσβασης) # Απομακρυσμένο υπολογιστή REMOTE_LINUX = fedora-34.local # Συνδεθείτε στον απομακρυσμένο υπολογιστή και να θέσει μια χρονική σήμανση σε ένα αρχείο που ονομάζεται script.log sshpass -p $ REMOTE_PASSWD ssh-T $ REMOTE_USER @ $ REMOTE_LINUX & lt? & lt? _remote_commands echo $ user "-" $ (ημερομηνία) & gt; & gt; /home/$REMOTE_USER/script.log _remote_commands
-
Ορίσαμε μια μεταβλητή που ονομάζεται
REMOTE_USERνα «geek για». -
Στη συνέχεια ορίσετε μια μεταβλητή που ονομάζεται
REMOTE_PASSWDμε την αξία του αποκρυπτογραφημένα κωδικό τράβηξε από το αρχείο «.secret_vault.txt», χρησιμοποιώντας την ίδια εντολή που χρησιμοποιήσαμε πριν από λίγο. -
Η θέση του απομακρυσμένου υπολογιστή είναι αποθηκευμένο σε μια μεταβλητή που ονομάζεται
REMOTE_LINUX.
Με αυτές τις πληροφορίες, μπορούμε να χρησιμοποιήσουμε το
σαρκώδης
εντολή για να συνδεθείτε στον απομακρυσμένο υπολογιστή.
-
ο
sshpassεντολή είναι η πρώτη εντολή στη γραμμή σύνδεσης. Θα το χρησιμοποιήσετε με το-Π(κωδικός πρόσβασης). Αυτό μας επιτρέπει να καθορίσουμε τον κωδικό πρόσβασης που θα πρέπει να σταλεί στοσαρκώδηςεντολή. -
Χρησιμοποιούμε το
-T(Απενεργοποιήστε την επιλογή ψευδο-τερματικής κατανομής) μεσαρκώδηςΕπειδή δεν χρειάζεται να έχουμε ένα ψευδο-tty να μας παραχωρήσει στον απομακρυσμένο υπολογιστή.
Χρησιμοποιούμε ένα σύντομο
εδώ έγγραφο
Για να περάσετε μια εντολή στον απομακρυσμένο υπολογιστή. Τα πάντα μεταξύ των δύο
_remote_commands
Οι χορδές αποστέλλονται ως οδηγίες στη συνεδρία χρήστη στο απομακρυσμένο υπολογιστή-σε αυτή την περίπτωση, είναι μια ενιαία γραμμή σενάριο bash.
Η εντολή που αποστέλλεται στον απομακρυσμένο υπολογιστή απλώς καταγράφει το όνομα λογαριασμού χρήστη και ένα χρονικό διάστημα σε ένα αρχείο που ονομάζεται "script.log".
Αντιγράψτε και επικολλήστε το σενάριο σε έναν επεξεργαστή και αποθηκεύστε το σε ένα αρχείο που ονομάζεται "go-remote.sh". Θυμηθείτε να αλλάξετε τις λεπτομέρειες για να αντικατοπτρίζετε τη διεύθυνση του δικού σας απομακρυσμένου υπολογιστή, του απομακρυσμένου λογαριασμού χρήστη και τον κωδικό απομακρυσμένης λογαριασμού.
Χρήση
χλωμός
για να κάνετε το εκτελέσιμο σε σχέση με το σενάριο.
Chmod + x go-remote.sh
Το μόνο που έχει απομείνει είναι να το δοκιμάσετε. Ας πυροβολήσουμε το σενάριο μας.
./ go-remote.sh
Επειδή το σενάριο μας είναι ένα μινιμαλιστικό πρότυπο για ένα σενάριο χωρίς επίβλεψη, δεν υπάρχει έξοδος στο τερματικό. Αλλά αν ελέγξουμε το αρχείο "script.log" στον υπολογιστή Fedora, μπορούμε να δούμε ότι οι απομακρυσμένες συνδέσεις έχουν γίνει με επιτυχία και ότι το αρχείο "script.log" έχει ενημερωθεί με χρονικά σήματα.
Cat script.log
Ο κωδικός πρόσβασής σας είναι ιδιωτικός
Ο κωδικός πρόσβασης απομακρυσμένου λογαριασμού σας δεν καταγράφεται στο σενάριο.
Και αν και ο κωδικός αποκρυπτογράφησης είναι, Στο σενάριο, κανένας άλλος δεν μπορεί να έχει πρόσβαση στο αρχείο ".secret_vault.txt" για να το αποκρυπτογραφήσει και να ανακτήσει τον κωδικό απομακρυσμένου λογαριασμού.