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