openSUSE:Security packaging policy
Οδηγός για το Build Service · Κόλπα & Έξυπνες λύσεις · Οδηγός Ανεξαρτήτου Διανομής · Έλεγχοι πακεταρίσματος
Κατηγορίες μενού επιφάνειας εργασίας · Μακροεντολές RPM · Έτοιμοι κώδικες σεναρίων · Σενάρια εκκίνησης
Περιεχόμενα
Δαίμονες
- Η εγκατάσταση ενός πακέτου δε θα πρέπει να ενεργοποιεί κανένα δαίμονα. Αυτό σημαίνει για παράδειγμα ότι τα σενάρια εκκίνησης δεν πρέπει να εισαχθούν στο %post, τα αρχεία xinetd πρέπει να περιέχουν το 'disable = yes'.
- Οι δαίμονες πρέπει να τρέχουν με την ταυτότητα ενός μη προνομιούχου χρήστη. Αυτό συνήθως σημαίνει ότι πακέτο πρέπει να δημιουργήσει το χρήστη στο τμήμα %pre. Οι δαίμονες θα πρέπει να αποφεύγεται να τρέχουν ως root και δεν πρέπει να χρησιμοποιούν άλλους χρήστες του συστήματος (όπως 'nobody', 'daemon' κλπ.). Ωστόσο είναι εντάξει η χρήση της ομάδας 'nogroup'. Λογική: Αν διάφορες υπηρεσίες τρέχουν στον ίδιο χρήστη, ένας εισβολέας που θα καταφέρει να διαρρήξει μια υπηρεσία αυτόματα κερδίζει πρόσβαση και στις άλλες.
- Οι δαίμονες θα πρέπει να επανεκκινούνται αν το πακέτο αναβαθμίστηκε. Λογική: Οι ενημερώσεις ασφαλείας εφαρμόζονται αμέσως.
- Οι δαίμονες που ανοίγουν πόρτες tcp ή udp ή λαμβάνουν δεδομένα με κάποιο άλλο τρόπο από μη έμπιστα δίκτυα θα πρέπει να περνούν από κάποιο έλεγχο από την ομάδα ασφάλειας πριν εισαχθούν στη διανομή.
Δυαδικά Setuid
Τα πακέτα δεν επιτρέπεται να συμπεριλαμβάνουν δυαδικά setuid/setgid εκτός κι αν η ομάδα ασφάλειας έχει αναθεωρήσει τον πηγαίο κώδικα και έχει δώσει ειδική άδεια.
- Για να ζητήσετε μια ακρόαση για δυαδικά setuid πρέπει να ανοίξει μια αναφορά σφάλματος για την ομάδα ασφάλειας.
- Η αναφορά σφάλματος πρέπει να συμπεριλαμβάνει την ακριβή τοποθεσία του πηγαίου κώδικα, τα επηρεαζόμενα αρχεία και μια εξήγηση γιατί χρειάζεται το setuid bit.
- Αν η ακρόαση είναι θετική η ομάδα ασφάλειας συμπεριλαμβάνει την ρύθμιση για την άδεια των καινούριων αρχείων στο πακέτο 'permissions'. Το σύστημα κατασκευής θα απορρίψει τα πακέτα με δυαδικά setuid που δεν απαριθμούνται στο πακέτο αδειών.
Γενικά το να υπάρχει ένα setuid bit εξ ορισμού θέλει σοβαρό λόγο. Τις περισσότερες φορές είναι καλύτερα να δίδεται το πακέτο χωρίς setuid bit αλλά με οδηγίες τροποποίησης του /etc/permissions.local αν αυτό τελικά χρειάζεται.
Τα δυαδικά setuid χρειάζεται να πακεταριστούν με ειδικό τρόπο. Δείτε την μακροεντολή %verify_permissions για παραδείγματα.
Εγγράψιμοι Κατάλογοι από Όλους
Γενικά οι εγγράψιμοι κατάλογοι από όλους πρέπει να αποφεύγονται. Αν ένα πακέτο χρειάζεται οπωσδήποτε εγγράψιμους καταλόγους από όλους ισχύουν οι ίδιοι κανόνες με τα δυαδικά setuid.
Εγγράψιμοι Κατάλογοι από Ομάδα
Δεν υπάρχει έλεγχος κατασκευής για καταλόγους εγγράψιμους από κάποια συγκεκριμένη ομάδα και δε χρειάζεται αναθεώρηση από την ομάδα ασφάλειας. Ωστόσο οι πακετάδες θα πρέπει να γνωρίζουν ότι οι κατάλογοι μέσα σε καταλόγους εγγράψιμους από συγκεκριμένες ομάδες δεν μπορούν να πακεταριστούν με ασφάλεια και ενδεχομένως να επιτρέψουν σε μέλη της ομάδας να αποκτήσουν δικαιώματα root. Με άλλα λόγια ποτέ να μην πακετάρετε καταλόγους μέσα σε καταλόγους εγγράψιμους από συγκεκριμένη ομάδα.
Ρυθμίσεις Τείχους Προστασίας
Κανένα πακέτο δεν επιτρέπεται να τροποποιήσει τα αρχεία ρυθμίσεων του SuSEfirewall. Μια εξαίρεση ισχύει για το άρθρωμα ρυθμίσεων του yast2 για το τείχος προστασίας. Οποιαδήποτε άλλη εφαρμογή πρέπει να χρησιμοποιήσει τη διεπαφή που παρέχει το άρθρωμα του yast2 για το τείχος προστασίας για να αλλάξει τις ρυθμίσεις. Αλλαγή ρυθμίσεων του τείχους προστασίας πρέπει πάντα να απαιτεί ειδική επιβεβαίωση από το χρήστη.
Υπηρεσίες DBus
Τα προγράμματα που προσφέρουν υπηρεσίες μέσω του DBUS του συστήματος πρέπει να περάσουν ακρόαση από την ομάδα ασφάλειας πριν συμπεριληφθούν στη διανομή. Γενικά ισχύουν οι ίδιοι κανόνες όπως και με κάθε άλλο δαίμονα.
Προνόμια του PolicyKit
Τα προγράμματα που διεξάγουν προνομιούχες λειτουργίες για χάρη του χρήστη (όπως π.χ. Η αλλαγή του ρολογιού) θα πρέπει να ορίζουν ένα προνόμιο στο PolicyKit το οποίο ο χρήστης απαιτείται να κατέχει για να μπορεί μια συγκεκριμένη λειτουργία να εκτελεστεί. Η χρήση των προνομίων του PolicyKit πρέπει να περάσει από ακρόαση από την ομάδα ασφάλειας πριν συμπεριληφθεί στη διανομή
Κωδικοί
Τα πακέτα δεν πρέπει να προρυθμίζονται με σταθερούς κωδικούς, πιστοποιητικά κλπ. Αντ' αυτού ο χρήστης πρέπει να αναγκάζεται να θέσει έναν κωδικό πριν την πρώτη χρήση.
Χρήση κρυπτογραφίας
Γενικά τα πακέτα δεν πρέπει να υλοποιούν τους δικούς τους κρυπτογραφικούς αλγορίθμους αλλά να χρησιμοποιούν κάποια από τις ακόλουθες υλοποιήσεις:
- mozilla-nss (προτιμώμενο)
- openssl
- gcrypt
- gnutls
- kernel crypto interface (μόνο για αρθρώματα πυρήνα)
Κατά προτίμηση η κρυπτογράφηση και οι αλγόριθμοι κατακερματισμού θα πρέπει να είναι ρυθμίσιμα και προκαθορισμένα σε αλγόριθμους που θεωρούνται ασφαλείς σήμερα (π.χ. aes, sha1). Η χρήση του MD5 ως κρυπτογραφική υπογραφή δεν είναι πλέον ασφαλής.
Τα πακέτα δε θα πρέπει να έρχονται με τα δικά τους έμπιστα πιστοποιητικά τύπου x509. Αντί αυτών τα /etc/ssl/certs πρέπει να χρησιμοποιούνται ως εφεδρικά.