ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Τι νέο υπάρχει στην ασφάλεια για το Ubuntu 24.04 LTS;

To Ubuntu 24.04 LTS, Noble Numbat. όπως όλες οι εκδόσεις του Ubuntu, συνοδεύεται από 5 χρόνια δωρεάν συντήρησης ασφαλείας για το κύριο αποθετήριο. Η υποστήριξη μπορεί να επεκταθεί για επιπλέον 5 χρόνια και να συμπεριλάβει το αποθετήριο universe, μέσω του Ubuntu Pro. Οι οργανισμοί που θέλουν να διατηρήσουν τα συστήματά τους ασφαλή χωρίς να χρειάζονται σημαντική αναβάθμιση μπορούν επίσης να λάβουν το πρόσθετο Legacy sypport για να επεκτείνουν αυτήν την υποστήριξη πέρα ​​από τα 10 χρόνια. Σε συνδυασμό με την βελτιωμένη κάλυψη ασφαλείας που παρέχεται από το Ubuntu Pro και Legacy Support, το Ubuntu 24.04 LTS παρέχει μια ασφαλή βάση για την ανάπτυξη και την ανάπτυξη των εφαρμογών και των υπηρεσιών σας σε ένα ολοένα και πιο επικίνδυνο περιβάλλον. Σε αυτήν την ανάρτηση, θα εξετάσουμε μερικές από τις βελτιώσεις και τις δυνατότητες ασφαλείας που περιλαμβάνονται στο Noble Numbat, βασιζόμενοι σε αυτές που είναι διαθέσιμες στο Ubuntu 22.04 LTS.

Μη προνομιούχοι περιορισμοί χώρου ονομάτων χρήστη (user namespace)

Οι χώροι ονομάτων (user namespace) μη προνομιούχων χρηστών είναι μια ευρέως χρησιμοποιούμενη δυνατότητα του πυρήνα Linux, παρέχοντας πρόσθετη απομόνωση ασφαλείας για εφαρμογές και συχνά χρησιμοποιούνται ως μέρος ενός περιβάλλοντος sandbox. Επιτρέπουν σε μια εφαρμογή να αποκτά πρόσθετα δικαιώματα εντός ενός περιορισμένου περιβάλλοντος, έτσι ώστε ένα πιο αξιόπιστο τμήμα μιας εφαρμογής να μπορεί στη συνέχεια να χρησιμοποιήσει αυτά τα πρόσθετα δικαιώματα για να δημιουργήσει ένα πιο περιορισμένο περιβάλλον sandbox εντός του οποίου μπορούν στη συνέχεια να εκτελεστούν λιγότερο αξιόπιστα μέρη. Μια συνηθισμένη περίπτωση χρήσης είναι το sandboxing που χρησιμοποιείται από τα σύγχρονα προγράμματα περιήγησης ιστού, όπου η ίδια η (αξιόπιστη) εφαρμογή ρυθμίζει το sandbox όπου εκτελεί το μη αξιόπιστο περιεχόμενο Ιστού. Ωστόσο, παρέχοντας αυτές τις πρόσθετες άδειες, οι χώροι ονομάτων χρήστη χωρίς προνόμιο εκθέτουν επίσης πρόσθετες επιφάνειες επίθεσης εντός του πυρήνα του Linux. Υπήρξε μια μακρά ιστορία (κατάχρησης) μη προνομιούχων χώρων ονομάτων χρηστών για την εκμετάλλευση διαφόρων ευπαθειών του πυρήνα. Η πιο πρόσφατη ενδιάμεση έκδοση του Ubuntu, 23.10, εισήγαγε τη δυνατότητα περιορισμού της χρήσης χώρων ονομάτων μη προνομιούχων χρηστών μόνο σε εκείνες τις εφαρμογές που απαιτούν νόμιμα τέτοια πρόσβαση. Στο Ubuntu 24.04 LTS, αυτή η δυνατότητα έχει βελτιωθεί τόσο για να καλύπτει πρόσθετες εφαρμογές τόσο εντός του Ubuntu όσο και από τρίτα μέρη και για να επιτρέπει καλύτερη προεπιλεγμένη σημασιολογία της δυνατότητας. Για το Ubuntu 24.04 LTS, επιτρέπεται στη συνέχεια η χρήση μη προνομιούχων χώρων ονομάτων χρήστη για όλες τις εφαρμογές, αλλά δεν επιτρέπεται η πρόσβαση σε τυχόν πρόσθετα δικαιώματα εντός του χώρου ονομάτων. Αυτό επιτρέπει σε περισσότερες εφαρμογές να χειρίζονται πιο χαριτωμένα αυτόν τον προεπιλεγμένο περιορισμό, ενώ παράλληλα προστατεύει από την κατάχρηση των χώρων ονομάτων χρήστη για να αποκτήσουν πρόσβαση σε πρόσθετες επιφάνειες επίθεσης εντός του πυρήνα του Linux.

Binary hardening

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

Η βιβλιοθήκη GNU C, που χρησιμοποιείται ως ο ακρογωνιαίος λίθος πολλών εφαρμογών στο Ubuntu, παρέχει ανίχνευση runtime και προστασία από ορισμένους τύπους περιπτώσεων υπερχείλισης buffer, καθώς και ορισμένες επικίνδυνες λειτουργίες χειρισμού συμβολοσειρών μέσω της χρήσης της μακροεντολής _FORTIFY_SOURCE. H FORTIFY_SOURCE μπορεί να καθοριστεί σε διάφορα επίπεδα παρέχοντας αυξανόμενα χαρακτηριστικά ασφαλείας, που κυμαίνονται από 0 έως 3. Οι σύγχρονες εκδόσεις του Ubuntu έχουν όλες χρησιμοποιήσει το FORTIFY_SOURCE=2 το οποίο παρείχε μια σταθερή βάση συμπεριλαμβάνοντας ελέγχους σε συναρτήσεις χειρισμού συμβολοσειρών όπως sprintf()strcpy() και άλλες για τον εντοπισμό πιθανών υπερχείλισης buffer, καθώς και τρωτά σημεία συμβολοσειράς μορφής μέσω του προσδιοριστή μορφής %n σε διάφορες περιπτώσεις. Το Ubuntu 24.04 LTS ενεργοποιεί πρόσθετες λειτουργίες ασφαλείας αυξάνοντας το σε FORTIFY_SOURCE=3. Το επίπεδο τρία ενισχύει σημαντικά τον εντοπισμό πιθανής επικίνδυνης χρήσης μιας σειράς άλλων κοινών λειτουργιών διαχείρισης μνήμης, συμπεριλαμβανομένων των memmove(),  memmove(),  memcpy()snprintf()vsnprintf()strtok() και strncat(). Αυτή η δυνατότητα είναι ενεργοποιημένη από προεπιλογή στον μεταγλωττιστή gcc στο Ubuntu 24.04 LTS, έτσι ώστε όλα τα πακέτα στο αρχείο του Ubuntu που έχουν μεταγλωττιστεί με gcc ή οποιεσδήποτε εφαρμογές μεταγλωττίζονται με gcc στο Ubuntu 24.04 LTS να λαμβάνουν επίσης αυτήν την πρόσθετη προστασία.

Η αρχιτεκτονική υλικού Armv8-M (παρέχεται από την αρχιτεκτονική λογισμικού “arm64” στο Ubuntu) παρέχει έλεγχο ταυτότητας δείκτη με επιβολή υλικού και αναγνώριση στόχου branch. Ο έλεγχος ταυτότητας δείκτη παρέχει τη δυνατότητα ανίχνευσης κακόβουλων τροποποιήσεων stack buffer που στοχεύουν στην ανακατεύθυνση δεικτών που είναι αποθηκευμένοι στη στοίβα σε ελεγχόμενες τοποθεσίες από τους εισβολείς, ενώ η αναγνώριση στόχου branch χρησιμοποιείται για την παρακολούθηση ορισμένων έμμεσων οδηγιών branch και των πιθανών τοποθεσιών που μπορούν να στοχεύσουν. Με την παρακολούθηση τέτοιων έγκυρων τοποθεσιών, ο επεξεργαστής μπορεί να ανιχνεύσει πιθανές κακόβουλες επιθέσεις προγραμματισμού προσανατολισμένες σε μετάβαση, οι οποίες στοχεύουν στη χρήση υπαρχόντων έμμεσων branches για μετάβαση σε άλλα gadget εντός του κώδικα. Ο μεταγλωττιστής gcc υποστηρίζει αυτές τις δυνατότητες μέσω της επιλογής -mbranch-protection. Στο Ubuntu 24.04 LTS, το πακέτο dpkg ενεργοποιεί τώρα το -mbranch-protection=standard, έτσι ώστε όλα τα πακέτα εντός του αρχείου του Ubuntu να επιτρέπουν την υποστήριξη αυτών των δυνατοτήτων υλικού όπου είναι διαθέσιμα.

AppArmor 4

Οι προαναφερθέντες μη προνομιούχοι περιορισμοί χώρου ονομάτων χρήστη υποστηρίζονται όλοι από το υποχρεωτικό σύστημα ελέγχου πρόσβασης AppArmor. Το AppArmor επιτρέπει σε έναν διαχειριστή συστήματος να εφαρμόσει την αρχή της ελάχιστης εξουσίας ορίζοντας σε ποιους πόρους πρέπει να εκχωρηθεί πρόσβαση σε μια εφαρμογή και αρνούμενος όλους τους άλλους. Το AppArmor αποτελείται από ένα πακέτο userpace, το οποίο χρησιμοποιείται για τον καθορισμό των προφίλ ασφαλείας για τις εφαρμογές και το σύστημα, καθώς και από το AppArmor Linux Security Module εντός του πυρήνα του Linux, το οποίο παρέχει επιβολή των πολιτικών. Το Ubuntu 24.04 LTS περιλαμβάνει την πιο πρόσφατη έκδοση AppArmor 4.0, παρέχοντας υποστήριξη για πολλές νέες δυνατότητες, όπως ο καθορισμός επιτρεπόμενων διευθύνσεων δικτύου και θυρών εντός της πολιτικής ασφαλείας (και όχι απλώς πρωτοκόλλων υψηλού επιπέδου) ή διάφορες προϋποθέσεις που επιτρέπουν την έκφραση πιο περίπλοκης πολιτικής. Μια συναρπαστική νέα εξέλιξη που παρέχεται από το AppArmor 4 στο Ubuntu 24.04 LTS είναι η δυνατότητα αναβολής των αποφάσεων ελέγχου πρόσβασης σε ένα αξιόπιστο πρόγραμμα χώρου χρηστών. Αυτό επιτρέπει την εφαρμογή αρκετά προηγμένης λήψης αποφάσεων, λαμβάνοντας υπόψη το ευρύτερο διαθέσιμο πλαίσιο εντός του χώρου χρηστών ή ακόμη και την αλληλεπίδραση με τον χρήστη/διαχειριστή του συστήματος σε πραγματικό χρόνο. Για παράδειγμα, η πειραματική δυνατότητα προτροπής snapd εκμεταλλεύεται αυτήν την εργασία για να επιτρέπει στους χρήστες να ασκούν άμεσο έλεγχο σε ποια αρχεία μπορεί να έχει πρόσβαση ένα snap στον αρχικό κατάλογο. Τέλος, εντός του πυρήνα, το AppArmor απέκτησε τη δυνατότητα να διαμεσολαβεί την πρόσβαση σε χώρους ονομάτων χρήστη καθώς και στο υποσύστημα io_uring, τα οποία και τα δύο παρείχαν ιστορικά πρόσθετες επιφάνειες επίθεσης πυρήνα σε κακόβουλες εφαρμογές.

Απενεργοποίηση παλιών εκδόσεων TLS

Η χρήση της κρυπτογραφίας για ιδιωτικές επικοινωνίες είναι η ραχοκοκαλιά του σύγχρονου διαδικτύου. Το πρωτόκολλο Transport Layer Security παρέχει εμπιστευτικότητα και ακεραιότητα στις διαδικτυακές επικοινωνίες από τότε που τυποποιήθηκε για πρώτη φορά το 1999 με το TLS 1.0. Αυτό το πρωτόκολλο έχει υποστεί διάφορες αναθεωρήσεις από τότε για να εισαγάγει πρόσθετα χαρακτηριστικά ασφαλείας και να αποφευχθούν διάφορα ζητήματα ασφάλειας που ενυπάρχουν στις προηγούμενες εκδόσεις αυτού του προτύπου. Δεδομένου του ευρέος φάσματος εκδόσεων και επιλογών TLS που υποστηρίζονται από καθεμία, τα σύγχρονα συστήματα Διαδικτύου θα χρησιμοποιήσουν μια διαδικασία αυτόματης διαπραγμάτευσης για να επιλέξουν έναν κατάλληλο συνδυασμό έκδοσης πρωτοκόλλου και παραμέτρων κατά τη δημιουργία μιας ασφαλούς ζεύξης επικοινωνίας. Στο Ubuntu 24.04 LTS, τα TLS 1.0, 1.1 και DTLS 1.0 είναι όλα αναγκαστικά απενεργοποιημένα (για οποιεσδήποτε εφαρμογές χρησιμοποιούν τις υποκείμενες βιβλιοθήκες openssl ή gnutls) για να διασφαλιστεί ότι οι χρήστες δεν εκτίθενται σε πιθανές επιθέσεις υποβάθμισης TLS που θα μπορούσαν να εκθέσουν τις ευαίσθητες πληροφορίες τους.

Upstream δυνατότητες ασφαλείας πυρήνα

Ο πυρήνας Linux v5.15 χρησιμοποιήθηκε ως βάση για τον πυρήνα Linux στην προηγούμενη έκδοση του Ubuntu 22.04 LTS. Αυτό παρείχε μια σειρά από χαρακτηριστικά ασφαλείας πυρήνα, όπως προγραμματισμό πυρήνα, τυχαιοποίηση στοίβας πυρήνα και μη προνομιούχους περιορισμούς BPF για να αναφέρουμε μερικά. Από τότε, η κοινότητα του πυρήνα του Linux upstream ήταν απασχολημένη με την προσθήκη πρόσθετων λειτουργιών ασφαλείας πυρήνα. Το Ubuntu 24.04 LTS περιλαμβάνει τον πυρήνα Linux v6.8 που παρέχει τις ακόλουθες πρόσθετες δυνατότητες ασφαλείας:

Υποστήριξη shadow stack της Intel

Οι σύγχρονοι επεξεργαστές Intel υποστηρίζουν μια πρόσθετη δυνατότητα υλικού που στοχεύει στην αποτροπή ορισμένων τύπων προγραμματισμού προσανατολισμένου στην επιστροφή (ROP) και άλλων επιθέσεων που στοχεύουν στην κακόβουλη καταστροφή της στοίβας κλήσεων. Μια “σκιώδης” στοίβα είναι ένα αντίγραφο επιβολής υλικού της διεύθυνσης επιστροφής στοίβας που δεν μπορεί να τροποποιηθεί απευθείας από την CPU. Όταν ο επεξεργαστής επιστρέφει από μια κλήση συνάρτησης, η διεύθυνση επιστροφής από τη στοίβα συγκρίνεται με την τιμή από τη “σκιώδη” στοίβα – εάν οι δύο διαφέρουν, η διαδικασία τερματίζεται για να αποφευχθεί μια πιθανή επίθεση ROP. Ενώ η υποστήριξη μεταγλωττιστή για αυτήν τη δυνατότητα έχει ενεργοποιηθεί για πακέτα userpace από το Ubuntu 19.10, δεν ήταν δυνατό να χρησιμοποιηθεί μέχρι να υποστηριχθεί επίσης από τον πυρήνα και τη βιβλιοθήκη C. Το Ubuntu 24.04 LTS περιλαμβάνει αυτήν την πρόσθετη υποστήριξη για στοίβες σκιών για να επιτρέπεται η ενεργοποίηση αυτής της δυνατότητας όταν είναι επιθυμητό ορίζοντας τη μεταβλητή περιβάλλοντος GLIBC_TUNABLES=glibc.cpu.hwcaps=SHSTK.

Ασφαλής εικονικοποίηση με AMD SEV-SNP και Intel TDX

Ο εμπιστευτικός υπολογισμός αντιπροσωπεύει μια θεμελιώδη απόκλιση από το παραδοσιακό μοντέλο απειλών, όπου τα τρωτά σημεία στη σύνθετη βάση κωδικών του προνομιούχου λογισμικού συστήματος, όπως το λειτουργικό σύστημα, ο hypervisor και το υλικολογισμικό, θέτουν συνεχείς κινδύνους για την εμπιστευτικότητα και την ακεραιότητα τόσο του κώδικα όσο και των δεδομένων. Ομοίως, η μη εξουσιοδοτημένη πρόσβαση από έναν κακόβουλο διαχειριστή cloud θα μπορούσε να θέσει σε κίνδυνο την ασφάλεια της εικονικής μηχανής σας (VM) και του περιβάλλοντος της. Με βάση την καινοτομία αξιόπιστων περιβαλλόντων εκτέλεσης σε επίπεδο πυριτίου, τα Εμπιστευτικά VM του Ubuntu στοχεύουν να αποκαταστήσουν τον έλεγχό σας στις διασφαλίσεις ασφαλείας των VM σας.

Για την αρχιτεκτονική x86, τόσο οι επεξεργαστές AMD όσο και οι επεξεργαστές Intel παρέχουν χαρακτηριστικά υλικού (που ονομάζονται AMD SEV SNP και Intel TDX αντίστοιχα) για υποστήριξη εικονικών μηχανών που λειτουργούν με κρυπτογράφηση μνήμης και προστασία ακεραιότητας. Διασφαλίζουν ότι τα δεδομένα που περιέχονται στην εικονική μηχανή δεν είναι προσβάσιμα από τον υπερεπόπτη και, συνεπώς, τον χειριστή της υποδομής. Η υποστήριξη για τη χρήση αυτών των δυνατοτήτων ως επισκέπτης εικονικής μηχανής εισήχθη στην έκδοση 5.19 του πυρήνα του Linux upstream.

Χάρη στα Εμπιστευτικά VM του Ubuntu, ένας χρήστης μπορεί να κάνει χρήση υπολογιστικών πόρων που παρέχονται από τρίτο μέρος, διατηρώντας παράλληλα την ακεραιότητα και την εμπιστευτικότητα των δεδομένων του μέσω της χρήσης κρυπτογράφησης μνήμης και άλλων λειτουργιών. Στο δημόσιο cloud, το Ubuntu προσφέρει το ευρύτερο χαρτοφυλάκιο εμπιστευτικών εικονικών μηχανών. Αυτά βασίζονται στην καινοτομία και των δύο χαρακτηριστικών υλικού, με προσφορές διαθέσιμες σε Microsoft Azure, Google Cloud και Amazon AWS.

Για τους εταιρικούς πελάτες που επιδιώκουν να αξιοποιήσουν εμπιστευτικούς υπολογιστές στα ιδιωτικά τους κέντρα δεδομένων, είναι απαραίτητη μια πλήρως ενεργοποιημένη στοίβα λογισμικού. Αυτή η στοίβα περιλαμβάνει τόσο την πλευρά επισκέπτη (πυρήνα και OVMF) όσο και την πλευρά υποδοχής (kernel-KVM, QEMU και Libvirt). Επί του παρόντος, οι ενημερωμένες εκδόσεις κώδικα από την πλευρά του κεντρικού υπολογιστή δεν είναι ακόμη ανάντη. Για να το αντιμετωπίσουν αυτό, η Canonical και η Intel έχουν σφυρηλατήσει μια στρατηγική συνεργασία για να ενδυναμώσουν τους πελάτες του Ubuntu με μια βελτιστοποιημένη για την Intel TDX έκδοση Ubuntu. Αυτή η προσφορά περιλαμβάνει όλες τις απαραίτητες ενημερώσεις κώδικα επισκεπτών και κεντρικών υπολογιστών, ακόμη και εκείνες που δεν έχουν ακόμη συγχωνευθεί στο upstream, ξεκινώντας από το Ubuntu 23.10 και επεκτείνοντας το 24.04 και μετά. Η πλήρης στοίβα λογισμικού TDX είναι προσβάσιμη μέσω αυτού του αποθετηρίου github.

Αυτή η συλλογική προσπάθεια δίνει τη δυνατότητα στους πελάτες μας να αξιοποιήσουν άμεσα τις διασφαλίσεις ασφαλείας της Intel TDX. Χρησιμεύει επίσης για να μειώσει το χάσμα μεταξύ της καινοτομίας πυριτίου και της ετοιμότητας λογισμικού, ένα χάσμα που μεγαλώνει καθώς η Intel συνεχίζει να ωθεί τα όρια της καινοτομίας υλικού με επεκτάσιμους επεξεργαστές Intel Xeon 5ης γενιάς και όχι μόνο.

Αυστηρός έλεγχος χρονικών ορίων μεταγλώττισης

Παρόμοια με το hardening των binaries εντός των βιβλιοθηκών και των εφαρμογών που διανέμονται στο Ubuntu, ο ίδιος ο πυρήνας Linux απέκτησε βελτιωμένη υποστήριξη για τον εντοπισμό πιθανών υπερχείλισης buffer κατά το χρόνο μεταγλώττισης μέσω βελτιωμένου ελέγχου ορίων της οικογένειας συναρτήσεων memcpy(). Εντός του πυρήνα, η μακροεντολή FORTIFY_SOURCE επιτρέπει διάφορους ελέγχους σε λειτουργίες διαχείρισης μνήμης όπως memcpy() και memset() ελέγχοντας ότι το μέγεθος του αντικειμένου προορισμού είναι αρκετά μεγάλο ώστε να συγκρατεί την καθορισμένη ποσότητα μνήμης και, αν όχι, θα ματαιώσει τη διαδικασία μεταγλώττισης . Αυτό βοηθά στην καταγραφή διαφόρων ασήμαντων ζητημάτων διαχείρισης μνήμης, αλλά προηγουμένως δεν ήταν σε θέση να χειριστεί σωστά πιο περίπλοκες περιπτώσεις, όπως όταν ένα αντικείμενο ήταν ενσωματωμένο σε ένα μεγαλύτερο αντικείμενο. Αυτό είναι ένα αρκετά κοινό μοτίβο μέσα στον πυρήνα, και έτσι οι αλλαγές που εισήχθησαν στην upstream έκδοση του πυρήνα 5.18 για την απαρίθμηση και τη διόρθωση διαφόρων τέτοιων περιπτώσεων βελτιώνουν σημαντικά αυτή τη δυνατότητα. Τώρα ο μεταγλωττιστής είναι σε θέση να ανιχνεύει και να επιβάλλει αυστηρότερους ελέγχους κατά την εκτέλεση λειτουργιών μνήμης σε υπο-αντικείμενα για να διασφαλίσει ότι τα άλλα μέλη αντικειμένων δεν αντικαθίστανται κατά λάθος, αποφεύγοντας μια ολόκληρη κατηγορία πιθανών τρωτών σημείων υπερχείλισης buffer εντός του πυρήνα.

Επίλογος

Συνολικά, το τεράστιο εύρος βελτιώσεων ασφαλείας που έχουν εισαχθεί στο Ubuntu 24.04 LTS βελτιώνεται σημαντικά στη σταθερή βάση που παρείχαν οι προηγούμενες εκδόσεις του Ubuntu, καθιστώντας το την πιο ασφαλή έκδοση μέχρι σήμερα. Πρόσθετες λειτουργίες τόσο στον πυρήνα, όσο και στον χώρο χρηστών και σε ολόκληρη τη διανομή συνδυάζονται για να αντιμετωπίσουν ολόκληρες κατηγορίες ευπάθειας και επιφάνειες επίθεσης. Με υποστήριξη έως και 12 ετών, το Ubuntu 24.04 LTS παρέχει την καλύτερη και πιο ασφαλή βάση για την ανάπτυξη και την ανάπτυξη υπηρεσιών και εφαρμογών Linux. Η Διευρυμένη Συντήρηση Ασφαλείας, η ζωντανή επιδιόρθωση του πυρήνα και οι πρόσθετες υπηρεσίες παρέχονται στους συνδρομητές του Ubuntu Pro για να ενισχύσουν την ασφάλεια των αναπτύξεων τους στο Ubuntu.

Πηγή άρθρου: https://www.ubuntu-gr.org

Leave a Comment