Βρέθηκα πρόσφατα σε μια εγκατάσταση στην οποία η παλιά υποδομή Standard ISA 2006 αντικαταστάθηκε από Forefront TMG Enterprise Array. Κατά τη διάρκεια των δοκιμών παρουσιάστηκαν προβλήματα στην επικοινωνία του smtp server στη DMZ (exchange) και του εσωτερικού mail server οπότε μου ζητήθηκε να ρίξω μια ματιά.

Η εγκατάσταση είχε ως εξής:

Η εξωτερική αλληλογραφία κατέληγε στον Edge και αυτός έπειτα έκανε relay στον Hub-Transport. Από την μεριά του TMG κάναμε publishing την smtp υπηρεσία (tcp port 25) του hub προς τον edge. Στην ουσία αυτό που γίνεται είναι πως στην εξωτερική κάρτα του TMG ενεργοποιείται listener στην 25 tcp port που δρομολογεί ότι κίνηση εμφανιστεί στον εσωτερικό αφού βέβαια την ελέγξει.

Πίσω στο πρόβλημα, μόλις τοποθετήθηκε ο TMG τότε στον Edge εμφανιζόταν μήνυμα λάθους πως δεν μπορούσε να δρομολογήσει τα μηνύματα και αυτά παρέμεναν στη λεγόμενη “ουρά”. Σαν πρώτο βήμα πήραμε network trace από τον Hub.

H επικοινωνία φιλτραρισμένη με την εντολή smtp, όπως βλέπετε είναι πολύ σύντομη! Οι 2 servers 10.101.0.26 (hub-transport) & 192.168.167.5 (edge) συνδέονται και σχεδόν αμέσως ο edge κλείνει το κανάλι.

Δεν πρέπει βέβαια να ξεχνάμε πως αυτό που βλέπουμε είναι η επικοινωνία μεταξύ εσωτερικού interface TMG & Hub. Αυτό γιατί το firewall engine δεν μεταβιβάζει τις εντολές που δέχεται στο εξωτερικό interface αλλά τις ελέγχει-φιλτράρει και έπειτα ανοίγει 2ο κανάλι επικοινωνίας στο εσωτερικό interface και περνάει όποιες θεωρεί ασφαλείς.

Τo tcp stream της προηγούμενης επικοινωνίας έχει ως εξής:

Μπλε: Hub-transport

Κόκκινο: Edge, TMG

Μέχρι εδώ είναι προφανές πως για κάποιο λόγο (ακόμα δεν ξέρουμε) ο TMG αποφάσισε να διακόψει την επικοινωνία στέλνοντας την εντολή QUIT.

Επόμενο βήμα, ανάλογο trace στον Edge.

Εδώ τα πράγματα αρχίζουν να ξεκαθαρίζουν, παρατηρήστε τα frames 127-128 όπου πλέον ο Edge στέλνει κάποια εντολή (X-AnonymousTLS) και ο TMG απαντά Invalid command. Αναλυτικότερα:

Μπλε: Hub-transport, TMG

Κόκκινο: Edge

Φαίνεται λοιπόν πως ο Edge κάνει χρήση της εντολής “X-AnonymousTLS” και ο TMG απαντάει “421 5.5.1 Invalid command”. Βλέπετε λοιπόν πως ο TMG όντως ελέγχει τις εντολές που περνάνε στο application layer και επεμβαίνει όπου χρειαστεί.

Τώρα για την επίλυση του συγκεκριμένου προβλήματος χρειάστηκε να επέμβουμε στο SMTP Filter που βρίσκεται με τα υπόλοιπα application filters

Οπότε οι ιδιότητες του φίλτρου είναι όπως αναμένεται

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

Μπορεί να φαίνεται δύσκολο σε κάποια σημεία το troubleshooting αλλά για να επιτευχθεί πρέπει να έχουμε κατανοήσει πως ακριβώς λειτουργούν τα application layer firewalls (το λέει και ο τίτλος τους αλήθεια) σε αντίθεση με τα Stateful Firewalls που στην ουσία επιτρέπουν ή όχι συγκεκριμένες πόρτες αγνοώντας και χωρίς να επεμβαίνουν στα δεδομένα της επικοινωνίας. Τα statefull firewalls δεν ελέγχουν καν αν τα δεδομένα που διακινούνται έχουν σχέση με το πρωτόκολλο π.χ. tcp port 80 –> http.