password management [WAS: Peri asfaleias [was: ...]]

Symeonidis Alexandros admin at yourmail.gr
Tue Dec 20 15:21:32 EET 2005


Exw parakolouthw afti tin parwdia apo tin arxi...

Ena exw na pw...

ELEOS !!!



PS: giati den to kanis se php na telioni i istoria ?
(ke swzeis ta data ke me mia diki su class se DB encrypted me diko su 
algorithmo, ke decrypt otan ta travas ap tin DB.
mexri ke cluster 2 server boruses na kanis etsi gia HA-project)

"Nick Demou (enLogic)" <ndemou at enlogic.gr> wrote in message 
news:mailman.81.1135014542.31700.linux-greek-users at lists.hellug.gr...
> Λιστόπουλα (aka μέλη της λίστας),
> καταρχήν σας ευχαριστώ που δώσατε τόση σημασία στην προσπάθεια μου για 
> υλοποίηση ενός password management system λίγο διαφορετικού από τα άλλα 
> (με πολλούς χρήστες και κεντρική διαχείριση). Ομολογώ ότι δεν το περίμενα 
> γιατί πίστευα ότι δεν θα είχε ο κόσμος την όρεξη να ασχοληθεί τόσο πολύ με 
> τη δική μου "φαγούρα". Αυτός είναι και ο λόγος που σας έβαλα άθελα μου να 
> μαντεύετε τι κάνω και τι δεν κάνω με αποτέλεσμα να σπαταλάμε όλοι μας 
> χρόνο σε ερωτηματικά που μάλλον οφείλονται σε παρεξηγήσεις. Γι' αυτό 
> λοιπόν κάνω αυτό το post με μια καθαρή εξήγηση των τεχνικών λεπτομερειών.
> Με λίγη τύχη δεν θα έχω κάνει καμιά μεγάλη χαζομάρα και θα εκμεταλλευτώ 
> και τις γνώσεις σας για να προκύψει κάτι ακόμα καλύτερο ;-). Αν το 
> αποτέλεσμα σας φανεί αξιοπρεπές το δημοσιεύουμε και ως GPL κώδικα (λόγω 
> συνήθειας γιατί κατά τα άλλα έχει προτείνει μια καταπληκτική opensource 
> license η microsoft που φευ! δεν έχει πάρει OSI aproval).
>
> Πρώτα τι θέλω να πετύχω:
>
> έχουμε μια λίστα με not so critical passwords σαν την παρακάτω:
>
> ΠΕΛΑΤΗΣ       | Login | Password | Σχόλιο
> ----------------------------------------------------
> Joe Smith     | joe   | aek123   | OTEnet account
> Joe Smith     | joes  | 123      | acci account
> ...
>
> 1) θέλουμε να επιτρέπουμε σε μερικούς έμπιστους τεχνικούς να μπορούν να 
> μάθουν το password που κάθε φορά χρειάζονται για να βοηθήσουν τον κάθε 
> πελάτη.
>
> 2) Θέλουμε να ξέρουμε πότε και ποιος τεχνικός ζήτησε να δει πιο password 
> (ώστε να είμαστε σίγουροι ότι κοιτάνε μόνο ότι χρειάζεται για την δουλεία 
> τους)
>
> 3) Θέλουμε να μπορούν να δουν μόνο ένα password κάθε Χ λεπτά και εντώς 
> συγκεκριμένων ωρών τις ημέρας (ώστε αν κάποιος τεχνικός περάσει στην 
> "σκοτεινή πλευρά" να μειώσουμε το κακό στο ελάχιστο δυνατό και να 
> προλαβαίνουμε να αλλάξουμε τα passwords σε λογικό χρόνο).
> Επιτρέπουμε όμως κάποιο burst στα queries (π.χ. 2-3) πριν θέσουμε σε 
> ενέργεια το όριο ένα query κάθε Χ λεπτά[1].
>
> Και τώρα η μέθοδός που χρησιμοποίησα[4]:
>
> (Α)
> Σε ένα linux box το οποίο είναι σχετικά ασφαλές και το οποίο θα το ονομάσω 
> pass-server αποθήκευσα την λίστα με τα passwords σε ένα tab delimited 
> unencrypted[2] text file με όνομα passwords.txt
>
> (Β)
> Έφτιαξα ένα πολύ απλό πρόγραμμα (python script με όνομα query-pass.py) το 
> οποίο παρουσιάζει ένα command line interface που δουλεύει με τις εξής 
> τρεις απλές εντολές:
> ----------------------------------------------------------------
> prompt> ? joe
> 10   Joe Smith     | joe   | OTEnet account
> 11   Joe Smith     | joes  | acci account
>
> prompt> 10
> Joe Smith     | joe   | aek123   | OTEnet account
>
> prompt> passwd
> ----------------------------------------------------------------
>
> Επεξηγήσεις:
>
> 1. "? joe": ο χρήστης ζήτησε να δει όλες τις εγγραφές που περιέχουν τη 
> λέξη joe. Το πρόγραμμα αποκρυπτογραφεί decrypts and opens το text αρχειο 
> και με ένα απλό σάρωμα δήχνει για κάθε matching line τα πάντα εκτός του 
> password συν τον  αριθμό γραμμής
>
> 2. "10": ο χρήστης ζήτησε να δει το password της γραμμής #10
> Η εντολή αυτή δουλέυει μόνο εφόσον το 10 ήταν στα αποτελέσματα της 
> τελευταίας αναζήτησης[3]
>
> 3. "passwd": καλείται η εντολή passwd του συστήματος
>
> (Γ)
> 1. στον pass-server δημιούργησα έναν χρήστη για κάθε τεχνικό που πρέπει να 
> χρησοιμοποιεί το query-pass
>
> 2. Εφτιαξα ένα group query-pass και έκανα όλους τους χρήστες του 
> query-pass .py να το έχουν ως default group
>
> 3. Έβαλα το passwords.txt και το query-pass.py στο home dir του query-pass 
> group
>
> 4. Δήλωσα το query-pass.py ως shell για τους χρήστες (αντί του /bin/bash)
>
> 5. ρυθμισά το sshd.conf ώστε να έχουν access οι χρήστες
>
> 6. φρόντισα να μην επιτρέπω concurent logins στου χρήστες για να 
> απλοποιήσω τον έλεγχο του μέγιστου ρυθμού queries άνα ώρα
> (δηλαδή στο /etc/security/limits.conf
> a_user hard maxlogins 1)
>
> 7. εγκατέστησα το putty (ssh terminal client για windows) στα PCs των 
> χρηστών και φρόντισα να μπορούν να κάνουν ssh connection στον pass-server
>
> 8. θέλω να μάθω πως μπορώ να επιβάλω στους χρήστες να αλλάζουν το password 
> τους κάθε τόσο μέσω του συστήματος (να τους το λέω και να με αγνοούν έχει 
> πλάκα μόνο στην αρχή ;-) )
>
> That's all!
> Αν σας ενδιαφέρει το θέμα περιμένω με ενδιαφέρον παρατηρήσεις - απορίες.
>
> _____________________
> [1] μάλλον αξίζει τον κόπο το όριο queries/ώρα να αρχίσει να αυξάνει 
> εκθετικά με κάθε query αντί να είναι σταθερό. Άσε που θα έχει πλάκα και ως 
> κώδικας.
>
> [2] Ο Παπαδόπουλος Γιάννης πρότεινε εξ αρχής το password.txt να είναι 
> encrypted. Αρχικά μου φάνηκε εύλογο αλλά τώρα δεν είμαι απόλυτα σίγουρος. 
> Η λογική μου είναι η εξής: Αν το αρχείο δεν είναι encrypted τότε όλα τα 
> passwords διαρρέουν με την μια τη στιγμή που θα γίνει compromised το root 
> account. Κακό αυτό. Από την άλλη ακόμα και αν το κάνω encrypt εφόσον γίνει 
> compromised το root account  ο cracker απλά θα περιμένει με ένα ταπεινό 
> key-loger τον πρώτο χρήστη να δώσει password και όλα χαθήκανε και πάλι. 
> Βεβαία το δεύτερο σενάριο μου δίνει περισσότερο χρόνο και ίσως καταλάβω 
> ότι είμαι compromised πριν το κακό. Γνώμες?
>
> [3] τόσο για να μην βλέπει ο χρήστης κατά λάθος άλλα αντ' άλλων όσο και 
> για να μην έχει δικαιολογίες όταν κρυφοκοιτά passwords που δεν πρέπει. Ίσα 
> που σκέφτομαι να βάλω λίγη σάλτσα στον αριθμό για να μην υπάρχει καμία 
> περίπτωση να δεις κατά λάθος άλλο password.
>
> [4] Υπάρχουν σίγουρα και άλλες πιθανές προσεγγίσεις.
> Ο Γιάννης Παπαδόπουλος πρότεινε ήδη ένα web based περιβάλλον μέ συνδέσεις 
> https και database backend το οποίο προφανώς θα έκανε για τον σκοπό μας. Ο 
> λόγος εγώ που διάλεξα την παρούσα μέθοδο όταν έπρεπε να κάνω την πρώτη 
> απόπειρα υλοποίησης ήταν ότι ήθελα να είναι όσο πιο απλή γίνεται. Αυτό 
> αφενός γιατί έχω ελάχιστη εμπειρία σε προγραμματισμό σε περιβάλλον linux 
> (και αυτή μόνο σε python) και αφετέρου γιατί κάτι απλό το ελέγχεις για 
> τρύπες πολύ πιο εύκολα (και έχει inherently λιγότερες έτσι κι αλλιώς).
> Τώρα, αφότου έκανα τη δοκιμή μου, είδα ότι το αποτέλεσμα είναι ΟΚ: Μπόρεσα 
> να το φτιάξω (πολύ σημαντικό), δουλεύει (εξίσου σημαντικό), δείχνει 
> αξιόπιστο και είναι αρκετά απλό στη χρήση για έναν τεχνικό Η/Υ.
> Το σημαντικότερο κατά τη γνώμη μου είναι ότι είναι όσο πιο απλό γίνεται 
> χωρίς να του λείπει κάποιο σημαντικό feature ("Everything should be made 
> as simple as possible, but not simpler.")
> 





More information about the Linux-greek-users mailing list