Ασφάλεια

    Πώς στέλνετε με ασφάλεια διαπιστευτήρια SSH με σύνδεσμο που λήγει

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

    LinkPilot Team · Οι άνθρωποι που φτιάχνουν και λειτουργούν το LinkPilot στην TetraCore, LLC · Σχετικά με το LinkPilot

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

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

    Ποια διαπιστευτήρια SSH στέλνετε στην πραγματικότητα;

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

    ΔιαπιστευτήριοΤι είναιΠρέπει να μετακινηθεί ποτέ;
    Δημόσιο κλειδίΤο μισό που αποθηκεύει ο διακομιστήςΝαι, ελεύθερα. Δεν είναι μυστικό.
    Ιδιωτικό κλειδίΤο μισό που κρατά ο χρήστηςΜόνο όταν δημιουργήθηκε για τον παραλήπτη, και μόνο μία φορά
    Κωδικός πρόσβασηςΜια κοινή συμβολοσειρά που ελέγχει ο διακομιστήςΜία φορά, ως προσωρινή τιμή που θα αλλάξετε
    Πιστοποιητικό SSHΈνα κλειδί υπογεγραμμένο από την αρχή πιστοποίησης (CA) σας, με περίοδο ισχύοςΤο πιστοποιητικό δεν είναι μυστικό, το κλειδί πίσω του είναι

    Η καλύτερη παράδοση είναι εκείνη όπου δεν μετακινείται τίποτα μυστικό. Αν ο παραλήπτης έχει ήδη ζεύγος κλειδιών SSH, ζητήστε το δημόσιο κλειδί του, προσθέστε το στο ~/.ssh/authorized_keys του σωστού λογαριασμού και πείτε του να συνδεθεί. Όταν αργότερα αφαιρέσετε αυτή τη μία γραμμή, η πρόσβασή του τελειώνει.

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

    Για επαναλαμβανόμενες ανάγκες προτιμήστε πιστοποιητικά ή διαχειριζόμενη πρόσβαση. Αν το ίδιο άτομο θα χρειάζεται πρόσβαση ξανά και ξανά, οι επαναλαμβανόμενες παραδόσεις μίας χρήσης είναι λάθος εργαλείο. Ένα πιστοποιητικό SSH με σύντομη ισχύ ή ένα εργαλείο πρόσβασης όπως το Teleport ή το Tailscale SSH δίνει λήξη ενσωματωμένη στα ίδια τα διαπιστευτήρια, όχι προσαρτημένη στην παράδοση.

    Περιορίστε τα διαπιστευτήρια πριν τα στείλετε

    Ό,τι κι αν στείλετε, κάντε το όσο μικρότερο επιτρέπει η εργασία:

    • Ένας λογαριασμός, ένας διακομιστής. Προσθέστε το κλειδί στον λογαριασμό υπηρεσίας που αντιστοιχεί στην εργασία, όχι στον root, και μόνο στο μηχάνημα που αφορά.
    • Περιορίστε τι μπορεί να κάνει το κλειδί με επιλογές του authorized_keys όπως from="203.0.113.5", no-port-forwarding ή μια εντολή command= όταν η δουλειά είναι ένα μόνο script.
    • Δώστε στον κωδικό πρόσβασης ημερομηνία λήξης. Αν στέλνετε κωδικό, εκτελέστε passwd -e ή το αντίστοιχο της πλατφόρμας, ώστε ο παραλήπτης να πρέπει να τον αλλάξει στην πρώτη σύνδεση, και προγραμματίστε την απενεργοποίηση του λογαριασμού σε συγκεκριμένη ημερομηνία.
    • Γράψτε την ημερομηνία λήξης πριν στείλετε οτιδήποτε. Το «όταν τελειώσει η δουλειά» δεν είναι ημερομηνία.
    1. Επιβεβαιώστε τον παραλήπτη από ένα κανάλι που ήδη εμπιστεύεστε: το αίτημα υποστήριξης, ένα γνωστό νήμα email ή μια κλήση. Τα περισσότερα διαπιστευτήρια που καταλήγουν σε λάθος άτομο οφείλονται σε μια διεύθυνση που μοιάζει με τη σωστή ή σε ένα όνομα από αυτόματη συμπλήρωση.
    2. Επικολλήστε μόνο το μυστικό στο εργαλείο συνδέσμων μίας χρήσης. Για ιδιωτικό κλειδί αυτό σημαίνει ολόκληρο το μπλοκ PEM και τίποτε άλλο. Στο LinkPilot το κείμενο κρυπτογραφείται στο πρόγραμμα περιήγησής σας πριν αποθηκευτεί, οπότε η υπηρεσία έχει μόνο κρυπτογράφημα, και το κλειδί αποκρυπτογράφησης βρίσκεται στο τμήμα του URL που τα προγράμματα περιήγησης δεν στέλνουν στους διακομιστές.
    3. Ορίστε τη λήξη ανάλογα με το διάστημα που χρειάζεται. Μία ώρα αν ο παραλήπτης περιμένει, 24 ώρες αν βρίσκεται σε άλλη ζώνη ώρας, επτά ημέρες μόνο όταν υπάρχει πραγματικός λόγος. Ο σύνδεσμος καταστρέφεται και την πρώτη φορά που ανοίγεται, οπότε η λήξη είναι η εφεδρική προστασία, όχι ο κύριος έλεγχος.
    4. Προσθέστε φράση πρόσβασης με λογαριασμό Pro όταν τα διαπιστευτήρια είναι ευαίσθητα, και δώστε τη φράση πρόσβασης από άλλο κανάλι. Στο πακέτο Pro το ιστορικό ενεργειών (audit log) σάς δείχνει επίσης πότε έγινε η εμφάνιση.
    5. Στείλτε τον σύνδεσμο με μια σημείωση μίας γραμμής για τον σκοπό του και χωρίς στοιχεία σύνδεσης.
    6. Στείλτε τα στοιχεία σύνδεσης σε ξεχωριστό μήνυμα: όνομα ή διεύθυνση διακομιστή, θύρα, όνομα χρήστη και μέθοδο ελέγχου ταυτότητας. Κανένα από αυτά δεν είναι μυστικό από μόνο του, μαζί με το κλειδί όμως αποτελούν ολόκληρη τη σύνδεση.

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

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

    Στον σύνδεσμο μίας χρήσης:

    • Το ιδιωτικό κλειδί ή τον προσωρινό κωδικό πρόσβασης
    • Τη φράση πρόσβασης του κλειδιού, αν ορίστηκε κατά τη δημιουργία του
    • Τίποτε άλλο

    Σε ένα κανονικό μήνυμα, που στέλνεται χωριστά:

    • Όνομα διακομιστή ή διεύθυνση IP και θύρα
    • Τον λογαριασμό με τον οποίο θα συνδεθεί
    • Αν θα χρησιμοποιήσει κλειδί ή κωδικό πρόσβασης
    • Το αποτύπωμα (fingerprint) του κλειδιού του διακομιστή, ώστε ο παραλήπτης να επαληθεύσει τον διακομιστή στην πρώτη σύνδεση
    • Μια σύντομη σημείωση για το σε τι χρησιμεύει η πρόσβαση και πότε τελειώνει

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

    Βοηθήστε τον παραλήπτη να αποθηκεύσει σωστά το κλειδί

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

    # save the key, then lock it down
    chmod 600 ~/.ssh/acme_deploy
    ssh-add ~/.ssh/acme_deploy
    # verify the host key fingerprint against the one you were sent
    ssh -i ~/.ssh/acme_deploy deploy@203.0.113.5
    

    Ζητήστε του να ανοίξει τον μυστικό σύνδεσμο μόνο όταν είναι έτοιμος να τον χρησιμοποιήσει, σε συσκευή που ελέγχει και σε σύνδεση που εμπιστεύεται. Αν τον ανοίξει σε κοινόχρηστο υπολογιστή «για να δει αν δουλεύει», μένει αντίγραφο στο ιστορικό του προχείρου εκείνου του υπολογιστή.

    Επαληθεύστε και κλείστε το παράθυρο

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

    Όταν τελειώσει η δουλειά:

    1. Αφαιρέστε το δημόσιο κλειδί από το authorized_keys, ή απενεργοποιήστε τον λογαριασμό, ή αφήστε το πιστοποιητικό να λήξει όπως έχει προγραμματιστεί.
    2. Αλλάξτε ό,τι ταξίδεψε μαζί με τα διαπιστευτήρια, ακόμη και έναν προσωρινό κωδικό πρόσβασης που έπρεπε να αλλάξει στην πρώτη σύνδεση και δεν άλλαξε.
    3. Ελέγξτε το auth.log ή την πηγή καταγραφής SSH που χρησιμοποιείτε για συνδέσεις εκτός του συμφωνημένου χρόνου ή από απρόσμενες διευθύνσεις.
    4. Καταγράψτε ποιος είχε τι, από πότε ως πότε. Η καταγραφή μένει, τα διαπιστευτήρια όχι.

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

    Εργαλεία για αυτό το άρθρο

    Συχνές ερωτήσεις

    Το LinkPilot στέλνει έναν μυστικό σύνδεσμο που διαγράφεται μόλις ανοιχτεί.

    Κρυπτογραφείται στο πρόγραμμα περιήγησής σας, εμφανίζεται μία φορά και μετά καταστρέφεται. Χωρίς λογαριασμό.

    Δημιουργία μυστικού συνδέσμου

    Διαβάστε επίσης

    Ασφάλεια

    Πώς στέλνετε στοιχεία σύνδεσης με ασφάλεια χωρίς email

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

    Ασφάλεια

    Ασφαλής αποστολή μυστικού υπογραφής webhook σε πελάτη

    Δώστε στον πελάτη το μυστικό υπογραφής webhook χωρίς αντίγραφα σε email ή ticket: επαληθεύστε τον παραλήπτη, στείλτε σύνδεσμο μίας χρήσης, αλλάξτε το αν εκτεθεί.

    Ασφάλεια

    Προσωρινά στοιχεία σύνδεσης βάσης για συνεργάτη, με ασφάλεια

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