Bind 9 & firewall

Alexandros Kosiaris alex at noc.ntua.gr
Mon Sep 22 14:01:43 EEST 2008


Antonis Christofides wrote:
> Μπορείτε να μου εξηγήσετε τι πρέπει να κάνω στο firewall για να
> δουλεύει καλά το bind 9 γιατί έχω καταμπερδευτεί; Αυτή τη στιγμή
> επιτρέπει incoming μόνο στο port 53. Τι είναι αυτά τα udp 32768 κλπ.
> στα οποία ακούει ο named;
> 

Καλημέρα,

Σε τι mode τον θες να λειτουργεί;

Εάν πρόκειται να είναι authoritave-only (non-caching,non-recursive)
αρκεί αυτό που έχεις ήδη κάνει μία και πρέπει μόνο να απαντάει σε
queries σε UDP,TCP port 53. To TCP μάλιστα δεν είναι απόλυτα απαραίτητο
αλλά καλό είναι να το έχεις εάν θες να είσαι RFC-Compliant

Εάν τώρα θα έχει clients οπότε τον θες και σε caching/recursive mode
τότε θα πρέπει να είναι σε θέση να κάνει queries προς τα έξω. Τώρα
παλιότερα η port από την οποία ξεκίναγαν τα queries οριζόταν με:

query-source address <IP address> port <port>;

Στo options part του named.conf.

Εάν δεν υπήρχε αυτό διάλεγε συνήθως μόνος του μία port ξεκινώντας από το
πρώτο ελεύθερο ephemeral port( 32768 στο Linux by default-αν και μπορείς
να το αλλάξεις) και ανέβαινε σειριακά. Αυτά λοιπόν που βλέπεις ΔΕΝ είναι
 listening ports.

Δυστυχώς και οι δύο αυτές συμπεριφορές είναι επιρρεπείς στην επίθεση που
αποκαλύφθηκε μέσα στο καλοκαίρι από τον Dan Kaminsky και επιτρέπουν
poisoning της cache με όλα τα όμορφα που αυτό συνεπάγεται.

To query-souce option έχει αφαιρεθεί από το HEAD του Bind από τις 23
Ιουλίου για να πάψει η χρήση του.

Επίσης στις τελευταίες εκδόσεις περαστεί ένα patch που κάνει source port
randomization. Ως λύση δεν είναι κάτι το εκπληκτικό γιατί δυστυχώς το
πρόβλημα είναι στο πρωτόκολλο και όχι στο BIND αλλά μειώνει πάρα πολύ
τις πιθανότητες επιτυχούς επίθεσης.

Το πρόβλημα είναι ότι πλέον σχεδόν κάθε port > 1024(root-only ports)
και όχι μόνο τα ephemeral είναι δυνατό να χρησιμοποιηθεί από το bind.

Με όλα αυτά ως δεδομένα εάν έχεις dns server σε caching/recursive mode
πρακτικά δεν μπορείς να έχεις UDP firewall για ports > 1024.

Υπάρχει βέβαια workaround. Μπορείς να ορίσεις forwarders κάποιους άλλους
name servers να κάνουν για εσένα το recursion και να επιτρέψεις
επιλεκτικά την UDP κίνηση μόνο από/προς αυτούς.

Επίσης μπορείς να έχεις stateful rules. Γίνεται μεν αλλά μην ξεχνάς ότι
το UDP δεν σχεδιάστηκε να είναι connection-oriented protocol. Η ιδέα
είναι να αφήσεις τα πακέτα που ξεκινάν από εσένα να φεύγουν ελεύθερα και
να αφήσεις να περνάν οι απαντήσεις.

Η μπορείς να κάτσεις να γράψεις application level firewall (υπάρχουν
μερικά πειραματικά που βασίζονται σε διάφορα κόλπα, κανένα production
ready) για Linux :-)

Αυτά. Ελπίζω να σε διαφώτισα...


-- 
Alexandros Kosiaris 	Network Management Center , NTUA
e-mail : alex at noc.ntua.gr
Public Key Fingerprint :
D6B1 0634 BE65 719C 6C95  7492 8201 4B46 C478 F074

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 5196 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20080922/4b0c4bcd/attachment.bin>


More information about the Linux-greek-users mailing list