Σελίδα 1 από 2

Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 04 Μαρ 2011, 13:15
από simosx
Όταν διαβάζουμε παλιά βιβλία για Unix, μαθαίνουμε ότι στο /etc/passwd μπορούμε να βρούμε τον κωδικό μας, σε μια ειδική μορφή που σχετίζεται με τον αλγόριθμό DES.
Νεότερα βιβλία αναφέρουν ότι οι κωδικοί έχουν μεταφερθεί στο /etc/shadow, και ότι γίνεται χρήση αθροίσματος ελέγχου (hash), και συγκεκριμένα το MD5.

Τι συμβαίνει πραγματικά στο Ubuntu;

Ας δούμε το περιεχόμενο του /etc/shadow (στο σύστημά μου):
Κώδικας: Επιλογή όλων
root:!:14784:0:99999:7:::
daemon:*:14728:0:99999:7:::
bin:*:14728:0:99999:7:::
sys:*:14728:0:99999:7:::
...
myubuntu:$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/:15037:0:99999:7:::


Παραπάνω, ο χαρακτήρας : είναι ο χαρακτήρας που διαχωρίζει τα πεδία. Το πρώτο πεδίο είναι ο όνομα χρήστη, και το δεύτερο σχετίζεται με τον κωδικό του χρήστη.

Για το χρήστη root αλλά και τους άλλους χρήστες συστήματος, οι λογαριασμοί είναι κλειδωμένοι. Δεν υπάρχει κωδικός που μπορούμε να βάλουμε ώστε να συνδεθούμε με τους λογαριασμούς αυτούς. Οι χαρακτήρες ! και * είναι χαρακτήρες που έχουν ως στόχο να μην αντιστοιχούν σε κάποιο κωδικό. Για να συνδεθούμε ως root, πρέπει να έχουμε ένα λογαριασμό χρήστη μετά να χρησιμοποιήσουμε sudo ή gksudu. Και είναι καλό αυτό.

Ο χρήστης μας είναι ο myubuntu, και έχει ως κωδικό το
Κώδικας: Επιλογή όλων
$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/

Τα $ είναι διαχωριστικά, οπότε έχουμε τα τρία πεδία
Κώδικας: Επιλογή όλων
6
8AKFwJvq
iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/


Το 6 δηλώνει ότι χρησιμοποιήθηκε ο αλγόριθμός SHA-1 512bit (παλαιότερα Linux είχαν '1', που σήμαινε MD5, που δεν είναι τόσο καλό).
Το 8AKFwJvq είναι κάτι που ονομάζεται salt (αλάτισμα;), που είναι μια τυχαία τιμή. (δες παρακάτω)
Το iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/ είναι η παραγώμενη τιμή που προκύπτει από το συνδυασμό του κωδικού μας + το τυχαίο αλάτισμα, και όλο αυτό μαζί έχει περαστεί από τον αλγόριθμο αθροίσματος ελέγχου SHA-1 512bit.

Μπορούμε να παράγουμε την παραπάνω τιμή και εμείς οι ίδιοι, με
Κώδικας: Επιλογή όλων
sudo apt-get install mkpasswd      # Αν έχετε Ubuntu 10.04.2 ή παλαιότερο
sudo apt-get install whois       # Αν έχετε Ubuntu 10.10 ή νεότερο

και μετά
Κώδικας: Επιλογή όλων
> mkpasswd -m sha-512 test 8AKFwJvq
$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/
> _


Ο κωδικός που βάλαμε ήταν test.

Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 04 Μαρ 2011, 13:39
από Qdata
Σίμο, μπράβο!Ενδιαφέρον!
Έχω μόνο ένα πρόβλημα:
Κώδικας: Επιλογή όλων
:~$ sudo apt-get install mkpasswd
Ανάγνωση Λιστών Πακέτων... Ολοκληρώθηκε
Κατασκευή Δένδρου Εξαρτήσεων                 
Ανάγνωση περιγραφής της τρέχουσας κατάσταση... Ολοκληρώθηκε
Το πακέτο mkpasswd δεν είναι διαθέσιμο, αλλά υπάρχει αναφορά για αυτό από άλλο πακέτο.
Αυτό σημαίνει ότι το πακέτο αυτό λείπει, είναι παλαιωμένο, ή είναι διαθέσιμο από άλλη πηγή
Πάραυτα το ακόλουθο πακέτο το αντικαθιστά:
  whois

E: Το πακέτο 'mkpasswd' δεν έχει υποψήφια προς εγκατάσταση


Βρήκα όμως αυτό: http://mkpasswd.net/ :)

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 04 Μαρ 2011, 14:12
από simosx
Βλέποντας στο http://packages.ubuntu.com/search?keywords=mkpasswd
παρατηρώ ότι υπάρχει πακέτο μόνο για Lucid (10.04), οπότε χρειάζεται κάποιο άλλο πακέτο για να δημιουργήσεις τον κωδικό με το χέρι.

Πιστεύω ότι είναι εφικτό να αναδημιουργήσει κανείς το mkpasswd με χρήση εντολών του Ubuntu, όπως sha512sum. Το έργο τούτο είναι ανοικτό.

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 12 Μαρ 2011, 18:25
από ftso
nice!
προστέθηκε στην λίστα των οδηγών.

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 12 Μαρ 2011, 18:58
από medigeek
Νομίζω πως έχουμε όλοι οι... maverick-άδες το mkpasswd, υπάρχει στο πακέτο whois: :)
Κώδικας: Επιλογή όλων
$ dpkg -S mkpasswd
grub-common: /usr/share/man/man1/grub-mkpasswd-pbkdf2.1.gz
grub-common: /usr/bin/grub-mkpasswd-pbkdf2
whois: /usr/share/man/man1/mkpasswd.1.gz
whois: /usr/bin/mkpasswd

$ mkpasswd -m sha-512 test 8AKFwJvq
$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 12 Μαρ 2011, 19:46
από simosx
Ενημέρωσα το αρχικό σχετικά με το whois / mkpasswd

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 12 Μαρ 2011, 20:05
από yiannis66
Θα ήθελα να ξέρω αν ακολουθώντας αυτόν τον οδηγό και αλλάζωντας το 'test' με τον κωδκό που θέλω θα γίνει αλλαγή του κωδκού μου
και έτσι στην επόμενη εππανεκίνηση θα έχω τον νέο κωδικό;

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 16 Απρ 2011, 22:34
από Star_Light
simosx έγραψε:Όταν διαβάζουμε παλιά βιβλία για Unix, μαθαίνουμε ότι στο /etc/passwd μπορούμε να βρούμε τον κωδικό μας, σε μια ειδική μορφή που σχετίζεται με τον αλγόριθμό DES.
Νεότερα βιβλία αναφέρουν ότι οι κωδικοί έχουν μεταφερθεί στο /etc/shadow, και ότι γίνεται χρήση αθροίσματος ελέγχου (hash), και συγκεκριμένα το MD5.

Τι συμβαίνει πραγματικά στο Ubuntu;

Ας δούμε το περιεχόμενο του /etc/shadow (στο σύστημά μου):
Κώδικας: Επιλογή όλων
root:!:14784:0:99999:7:::
daemon:*:14728:0:99999:7:::
bin:*:14728:0:99999:7:::
sys:*:14728:0:99999:7:::
...
myubuntu:$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/:15037:0:99999:7:::


Παραπάνω, ο χαρακτήρας : είναι ο χαρακτήρας που διαχωρίζει τα πεδία. Το πρώτο πεδίο είναι ο όνομα χρήστη, και το δεύτερο σχετίζεται με τον κωδικό του χρήστη.

Για το χρήστη root αλλά και τους άλλους χρήστες συστήματος, οι λογαριασμοί είναι κλειδωμένοι. Δεν υπάρχει κωδικός που μπορούμε να βάλουμε ώστε να συνδεθούμε με τους λογαριασμούς αυτούς. Οι χαρακτήρες ! και * είναι χαρακτήρες που έχουν ως στόχο να μην αντιστοιχούν σε κάποιο κωδικό. Για να συνδεθούμε ως root, πρέπει να έχουμε ένα λογαριασμό χρήστη μετά να χρησιμοποιήσουμε sudo ή gksudu. Και είναι καλό αυτό.

Ο χρήστης μας είναι ο myubuntu, και έχει ως κωδικό το
Κώδικας: Επιλογή όλων
$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/

Τα $ είναι διαχωριστικά, οπότε έχουμε τα τρία πεδία
Κώδικας: Επιλογή όλων
6
8AKFwJvq
iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/


Το 6 δηλώνει ότι χρησιμοποιήθηκε ο αλγόριθμός SHA-1 512bit (παλαιότερα Linux είχαν '1', που σήμαινε MD5, που δεν είναι τόσο καλό).
Το 8AKFwJvq είναι κάτι που ονομάζεται salt (αλάτισμα;), που είναι μια τυχαία τιμή. (δες παρακάτω)
Το iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/ είναι η παραγώμενη τιμή που προκύπτει από το συνδυασμό του κωδικού μας + το τυχαίο αλάτισμα, και όλο αυτό μαζί έχει περαστεί από τον αλγόριθμο αθροίσματος ελέγχου SHA-1 512bit.

Μπορούμε να παράγουμε την παραπάνω τιμή και εμείς οι ίδιοι, με
Κώδικας: Επιλογή όλων
sudo apt-get install mkpasswd      # Αν έχετε Ubuntu 10.04.2 ή παλαιότερο
sudo apt-get install whois       # Αν έχετε Ubuntu 10.10 ή νεότερο

και μετά
Κώδικας: Επιλογή όλων
> mkpasswd -m sha-512 test 8AKFwJvq
$6$8AKFwJvq$iPY.sq0XO58ciwi3fQQBfKGCvW3JMu0.K5Jms7uZUmePQjVhhaWVkzQWC7NetruCiH2oqb06r/nlL739NXrvS/
> _


Ο κωδικός που βάλαμε ήταν test.

Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Παρόμοια διανομή 3.0 Ελλάδα


Εκπληκτικος οδηγος.. και τα δικα μου μπραβο.
Βεβαια εχω μερικα σημεια που θα ηθελα να επισημανω για να συζητησουμε
Τον Φεβρουαριο του 2005 μια επιτυχημενη επιθεση στην SHA-1 οδήγησε στην έκδοση του SHA-2
καλα ενταξει και στην MD5 εχει βρεθει και σε αυτον κενο ασφαλειας...

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 16 Απρ 2011, 22:46
από simosx
Star_Light έγραψε:Βεβαια εχω μερικα σημεια που θα ηθελα να επισημανω για να συζητησουμε
Τον Φεβρουαριο του 2005 μια επιτυχημενη επιθεση στην SHA-1 οδήγησε στην έκδοση του SHA-2
καλα ενταξει και στην MD5 εχει βρεθει και σε αυτον κενο ασφαλειας...


Υπάρχουν κενά και κενά ασφάλειας. Τα προβλήματα στα SHA-1 και MD5 είναι σημαντικά, ωστόσο δεν επιτρέπουν μέχρι στιγμής να μπορείς να βρεις εύκολα
π.χ. 6f5ba02d42be8fd1363caf2af4f1971597b24c48
ποιες φράσεις μπορούν να παράγουν το παραπάνω άθροισμα ελέγχου σε SHA-1. Τώρα το Ubuntu χρησιμοποιεί SHA-512 με salting, που είναι αρκετά καλό για τη δουλειά που κάνει.

Re: Πως παράγεται ο κωδικός (password) στο /etc/shadow;

ΔημοσίευσηΔημοσιεύτηκε: 17 Απρ 2011, 00:02
από Star_Light
simosx έγραψε:
Υπάρχουν κενά και κενά ασφάλειας. Τα προβλήματα στα SHA-1 και MD5 είναι σημαντικά, ωστόσο δεν επιτρέπουν μέχρι στιγμής να μπορείς να βρεις εύκολα
π.χ. 6f5ba02d42be8fd1363caf2af4f1971597b24c48
ποιες φράσεις μπορούν να παράγουν το παραπάνω άθροισμα ελέγχου σε SHA-1. Τώρα το Ubuntu χρησιμοποιεί SHA-512 με salting, που είναι αρκετά καλό για τη δουλειά που κάνει.


Φαινομενικα δεν μοιαζει τοσο απλο. Αλλα θα πρεπει να κατσει να τον μελετησει και βαθυτερα καποιος
για να σου απαντησει με περισσοτερη ακριβεια. ΠΧ ΠΩς λειτουργει η SHA ,τι γινεται XOR με τι , απο ποσους γυρους περναει αν περναει κτλπ :D θα ψαξω κανα καλο λινκ με την λειτουργια και αν το βρω θα το ποσταρω και εδω.