Ασφάλεια σε περιβάλλων MacOSX: 1ο μέρος, ασφάλεια σε επίπεδο δικτύου
Posted in Apple, HowTo on May 17th, 2009 by atma – Be the first to comment
Πολλοί είναι πλέον οι χρήστες που έχουν υπολογιστές Macintosh. Οι υπολογιστές της Apple τρέχουν MacOSX και θεωρούνται ασφαλείς, σε σχέση με το standard της αγοράς, που είναι τα Microsoft Windows. Αν και κανένα λειτουργικό σύστημα δεν είναι μπορεί να θεωρηθεί ασφαλέστερο από κάποιο άλλο, από μόνο του, το MacOSX γενικά, έχει την φήμη του συστήματος για το οποίο “δεν υπάρχουν ιοί“, κάτι που φυσικά δεν ισχύει. Δεν υπάρχει λειτουργικό σύστημα, για το οποίο δεν μπορεί να δημιουργηθεί ή να υπάρξει ιός.
Παρόλα αυτά, η δομή του MacOSX καθώς και η βάση του συστήματος μας επιτρέπει να ανεβάσουμε αισθητά την ασφάλεια του λειτουργικού συστήματος μας. Είτε πρόκειται για desktop είτε για laptop καλό θα είναι να γνωρίζουμε κάποια πράγματα για την ασφάλεια του υπολογιστή μας καθώς και των δεδομένων μας. Οι περισσότεροι χρήστες, έχουν γραμμές broadband. Οι πιο συνηθισμένη είναι η ADSL. Μαζί με την σύνδεση έρχεται συνήθως κι ένας router, τον οποίο χρησιμοποιούμε για να μπούμε στο internet. Ο router ή δρομολογητής στην Ελληνική, παίζει και τον ρόλο του Firewall τις περισσότερες φορές. Καθότι η default συμπεριφορά των περισσότερων router είναι να μην δέχονται συνδέσεις από το διαδίκτυο προς το τοπικό δίκτυο, οι περισσότεροι χρήστες είναι προστατευμένοι, από το μεγαλύτερο μέρος των επίδοξων εισβολέων.
Τι γίνεται όμως όταν είμαστε μέρος ενός μεγαλύτερου δικτύου υπολογιστών ή όταν κάποιος προσπελάσει με κάποιο τρόπο client-side-attack1, σπάζοντας το ασύρματο δίκτυο του σπιτιού μας κλπ. Τις περισσότερες φορές, δεν έχουμε απλά ιδέα του τι ακριβώς γίνεται.
Αυτόν τον ρόλο έρχεται να παίξει το Firewall κι άλλα εργαλεία που θα δούμε σε αυτό το post. Το Firewall είναι για έλεγχο των συνδέσεων του υπολογιστή μας, αλλά ο κύριος ρόλος του είναι η πληροφόρηση του χρήστη, στο τι γίνεται στον “έξω” κόσμο.
Για να ολοκληρώσεται τις εργασίες σας θα χρειαστείτε τα MacPorts και λίγη βοήθεια για όσους δεν έχουν καμιά σχέση με την γραμμή εντολών. Αν θέλετε βοήθεια για την εγκατάσταση των macports, στείλτε μου ένα email ή ρωτήστε σε ένα από τα γνωστά Ελληνικά Forums: macEphemera, MacLife και ThesMac. Είναι και τα τρεία αξιόλογα και οι χρήστες τους είναι υψηλού επιπέδου, αν δεν είστε είδη αξίζει να γραφτείτε σε τουλάχιστον ένα από αυτά.
Η ασφάλεια έχει πολλά επίπεδα και γι αυτό θα χωρίσω αυτά τα howto σε διάφορα μέρη, μέχρι να καλύψω το μεγαλύτερο εύρος των παραμέτρων ασφαλείας που πρέπει να έχει ένας υπολογιστής σπιτιού. Φυσικά, υποθέτω ότι είστε “παρανοϊκοί” γι αυτό θα δημιουργήσουμε και τις ανάλογες συνθήκες, για μπορούμε να λειτουργήσουμε ως …paranoids.
1) Εσωτερικό firewall ανά application
Για αρχή πάμε στο System Preferences -> Security -> Firewall κι επιλέγουμε: Set access for specific services and applications. Καλύτερα να αποφασίζουμε εμείς πια προγράμματα θα έχουν πρόσβαση στο διαδίκτυο, πια προγράμματα θα δέχονται συνδέσεις κλπ. Αρχικά μπορεί να είναι λίγο επίπονη διαδικασία αλλά αξίζει τον κόπο, για να έχουμε τον έλεγχο της κατάστασης.
Από αυτήν την στιγμή, για κάθε πρόγραμμα που ανοίγουμε θα δεχόμαστε μια ερώτηση με τις επιλογές Allow και Deny. Είναι προφανές νομίζω ότι όταν επιλέγουμε allow ο mac αφήνει το πρόγραμμα να δεχτεί συνδέσεις, κι όταν πατάμε deny ο mac δεν αφήνει το πρόγραμμα να δεχτεί συνδέσεις.
Προσοχή, για το 90% των περιπτώσεων η απάντηση θα είναι “allow” καθότι τα περισσότερα προγράμματα ανοίγουν κάποια ports. Για παράδειγμα το Transmission ανοίγει κάποια ports. Πολλές φορές αυτά είναι περισσότερα από ένα, οπότε μπορεί να μας ρωτήσει δύο φορές για το ίδιο πρόγραμμα.
Από τον πίνακα που βλέπετε στα δεξιά, όπου έχουμε ορίσει το “set access…” μπορούμε να ορίσουμε και πια προγράμματα δέχονται συνδέσεις. Το “allow incoming connections” είναι αρκετά επεξηγηματικό.
2) IPFW – Το Firewall του MacOSX
Το επόμενο βήμα είναι ένα πρόγραμμα που θα μας επιτρέπει να κάνουμε χρήση του ipfw. Το πολύ ισχυρό εσωτερικό Firewall που μας έρχεται μαζί με το MacOSX.
Για όσους γνωρίζουν γραμμή εντολών, θα μπορούσαν απλά να διαβάσουν το manual και να γράψουν τους δικούς τους κανόνες. Για τους περισσότερους, που δεν θέλουν να μπλέξουν με την γραμμή εντολών, υπάρχει το waterroof.
Το wateroof είναι ένα όμορφο και πρακτικό front-end για το ipfw. Δεν θα σας βάλω στην διαδικασία να γράψετε όλους τους κανόνες. Άλλωστε για να το κάνει κάποιος αυτό πρέπει να έχει καλή γνώση του δικτυου και του πως λειτουργεί το κάθε πρωτόκολλο του TCP/IP. Θα σας πω απλά ότι το wateroof έχει κάποιος κανόνες έτοιμους για χρήση και πολλά άλλα καλούδια με τα οποία μπορείτε να παίξετε. Εάν σας δημιουργήσει κάποιο πρόβλημα και π.χ. δεν έχετε internet, απλά κάντε “Flush”. Το Flush σήμαίνει reset, σβήνει όλους τους κανόνες που έχετε ορίσει.
Ανοίγουμε το wateroof κι επιλέγουμε wateroof -> ready rules set -> block nmap και πατάμε “Add RuleSet“. Θα δούμε ότι προστέθηκαν κάποιες γραμμές “deny ip from any to any ipoptions rr” κλπ. To θρυλικό nmap είναι ο πιο γνωστός ανιχνευτής δικτύου και υπηρεσιών στο διαδίκτυο. Εμείς με αυτήν την σειρά γραμμών μπλοκάρουμε τα βασικά scans δυσκολέυοντας έτσι τον επίδοξο εισβολέα, στο να μαζέψει πληροφορίες σχετικά με τον υπολογιστή μας. Όποιος ενδιαφέρεται για τεχνικές λεπτομέρειες θα βρει άφθονο υλικό στην ιστοσελίδα του nmap.
Με τον ίδιο τρόπο προσθέτουμε τις επιλογές Block dangerous Traffic και Safe icmp. Από εκεί κι έπειτα, μπορείτε λίγο να ρίξετε μια ματιά και στις άλλες επιλογές. Για να δείτε ενεργές συνδέσεις δικτύου πατήστε “Net Processes”. Πρέπει να γνωρίζετε όλα τα προγράμματα που ανοίγουν συνδέσεις. Εάν κάποιο πρόγραμμα δεν το γνωρίζετε, ρωτήστε αρχικά στα Forums. Μην κάνετε το λάθος να διαγράψετε ή να μπλοκάρετε κάποια σύνδεση χωρίς να είστε 100% ότι αποτελεί δυνητικά κίνδυνο. Το πιο πιθανό είναι να δημιουργήσει πρόβλημα στο πρόγραμμα που προσπαθεί να συνδεθεί στο διαδίκτυο.
3) Περιγραφή των services που τρέχουν
Μια περιγραφή των περισσοτέρων υπηρεσιών συστήματος που μπορεί να αγνοείτε θα την βρείτε στο αρχείο /etc/services. Μπορείτε να το διαβάσετε με την εντολή cat ή grep. Οπότε αν για παράδειγμα θέλω να ξέρω πια είναι τα προγράμματα που τρέχουν στην πόρτα 4000 ανοίγω το Terminal.app και γράφω την εντολή:
Angel:~ atma$ grep 4000 /etc/services terabase 4000/udp # Terabase terabase 4000/tcp # Terabase ####### PORT 4000 also used by ICQ <www.icq.com> ################### # 13823-14000 Unassigned med-ltp 24000/udp # med-ltp med-ltp 24000/tcp # med-ltp safetynetp 40000/tcp # SafetyNET p safetynetp 40000/udp # SafetyNET p # 40001-40840 Unassigned
Όπως βλέπεται υπάρχει μια περιγραφή, που είναι αρκετή για να ρωτήσετε σε κάποιο Forum “Τι είναι αυτό;“, να ψάξετε λεπτομέρειες στο Google και να έχετε μια εικόνα.
Επίσης, το MacOSX Leopard έρχεται με το πολύ καλό Network Utility. Είναι πολύ καλό εργαλείο. Αξίζει να διαβάσετε στο link τις υπηρεσίες που προσφέρει όπως το whois και το port scan που δεν περιγράφονται εδώ.
4) Littlesnitch και εξερχόμενες συνδέσεις
Τέλος στο MacOSX υπάρχει ένα
πρόγραμμα που θα έπρεπε να έχει κάθε παρανοϊκός που σέβεται τον εαυτό του: το Littlesnitch 2. Το μικρό αυτό διαμάντι, θα μετατρέψει το σύστημα σας σε ένα μικρό ψηφιακό οχυρό!
Το Littlesnitch μπλοκάρει όλες τις συνδέσεις που ξεκινούν τα πρόγραμματα που χρησιμοποιείτε προς το διαδίκτυο. Όταν δείτε πόσες είναι αυτές, θα εκπλαγείτε! Υπάρχουν πάρα πολλά προγράμματα που στέλνουν δεδομένα στο διαδίκτυο χωρίς να το γνωρίζει ο χρήστης. Αυτό δεν ισχύει στην περίπτωση που έχετε το Littlesnitch!
Όλα τα προγράμματα για MacOSX, από το iPhoto έως το VLC, προσπαθούν να συνδεθούν με την ιστοσελίδα του κατασκευαστή για ελέγξουν αν έχει γίνει κάποιο update. Σε αυτήν την περίπτωση τίποτε ύποπτο. Υπάρχουν όμως προγράμματα που συνδέονται και σε άλλες ιστοσελίδες με σκοπό να στείλουν δεδομένα του χρήστη. Αν θέλετε τα αφήνετε ή τα εμποδίζεται. Το Littlesnitch σε κάθε περίπτωση θα σας ρωτήσει! Για κάθε πρόγραμμα θα έχετε κάποιες επιλογές: Allow Once, Allow Forever, Deny Once, Deny Forever, κλπ. Είναι ένα πραγματικό διαμάντι της παράνοιας το συγκεκριμένο πρόγραμμα. Κοστίζει περί τα 29,95 € αλλά τα αξίζει!!!
5) Portsentry και εξωτερικές επιθέσεις
Τέλος, με την βοήθεια των macports να φτιάξουμε ένα σύστημα, όπου θα γίνονται display τα logs οποιασδήποτε κακόβουλης προσπάθειας επίθεσης από το διαδίκτυο με το Portsentry και την χρήση του Geektool και το lingon. Η εγκατάσταση του Geektool είναι η κλασική υπό MacOSX το ίδιο και του lingon.
Σε ότι αφορά το Porsentry, πληκτρολογούμε στην γραμμή εντολών:
$sudo port install portsentry
Αν έχετε εγκαταστήσει τα macports, τότε δεν θα υπάρξει πρόβλημα. Όταν εγκατασταθεί το portsentry, ανοίγουμε το lingon και πάμε στις επιλογές “USERS DAEMONS” πατάμε το + για να προσθέσουμε μια υπηρεσία και γράφουμε:
1) Portsentry-tcp
2) /opt/local/libexec/portsentry -tcp
3) Run it when it is loaded by the system (at start time or login)
Αν όλα έχουν γίνει σωστά δεν θα έχουμε πρόβλημα. Κάνουμε το ίδιο και το για το πρωτόκολλο UDP:
1) Portsentry-udp
2) /opt/local/libexec/portsentry -udp
3) Run it when it is loaded by the system (at start time or login)
Αφού προσθέσαμε τις δύο γραμμές είμαστε έτοιμοι να εγκαταστήσουμε το Geektool και να έχουμε πληροφόρηση στην επιφάνεια εργασίας.
Αρχικά εγκαθιστούμε το Geektool. Οι επιλογές του θα είναι ορατές στο System Preferences. Δημιουργούμε μια καινούρια υπηρεσία στο default group με το “New Entry” επιλέγουμε όνομα υπηρεσίας “portsentry”. Στις επιλογές έχει File/Shell/Picture. Εμείς επιλέγουμε Shell και γράφουμε την εξής εντολή:
grep portsentry /var/log/system.log |tail -n 8
Θα εμφανιστεί στα αριστερά ο “πίνακας” με τα logs. Μπορείτε να κάνετε επιλογής της γραμματοσειράς του μεγέθους καθώς και των frames αν θέλετε περαιτέρω tweaking, για να διαβάζεται καθαρά τα logs.
Τώρα αν δοκιμάσετε να κάνετε scan στον υπολογιστή σας από το τοπικό δίκτυο θα δείτε αυτό:

βλέπεται στην επιφάνεια εργασίας την κατάσταση που επικρατεί και τις ενδεχόμενες επιθέσεις που μπορεί να δέχεστε από κάποιον άλλο. Υπάρχει ένα 20% πιθανότητα να είναι false allarm, αλλά το portsentry δεν κάνει συχνά λάθος!
Με τα παραπάνω εργαλεία, μπορούμε να έχουμε την πληροφόρηση που απαιτούμε από το σύστημα μας. Άλλα προγράμματα που μπορεί να μας βοηθήσουν είναι το Console.log που βρίσκεται στον κατάλογο /Applications/Utilities/ μέσα από το οποίο μπορούμε να δούμε τα αρχεία: system.log, appfirewal.log και secure.log. Καλό είναι αραιά και που να ρίχνουμε μια ματιά κι εκεί!
Καλή συνέχεια.
