Πίσω στο blog

English  ·  Ελληνικά

Cisco / IOS  ·  Tutorial  ·  Ιουλιος 2026

Cisco IOS
Zone-Based Firewall

Τα ACL κρίνουν κάθε πακέτο μόνο του. Ένα πραγματικό firewall θυμάται συνομιλίες — αφήνει μια απάντηση να μπει πίσω επειδή επέτρεψες το αίτημα να βγει. Το Zone-Based Firewall μετατρέπει έναν router IOS ακριβώς σε αυτό: ομαδοποίησε interfaces σε zones, και γράψε stateful πολιτική για την κίνηση ανάμεσά τους.

Cisco IOS ZBF Firewall Stateful Inspection Security Zone-Pair

LAN έμπιστο DMZ δημόσιος server WAN μη έμπιστο LAN→WAN: inspect (stateful, επιτρέπεται) WAN→LAN: drop (default — οι απαντήσεις γυρνάνε ακόμα μέσω state) Η κίνηση ανάμεσα σε δύο zones απορρίπτεται μέχρι μια πολιτική zone-pair να την επιτρέψει. Τα inspected sessions επιτρέπουν αυτόματα την επιστρεφόμενη κίνησή τους — δεν χρειάζεται κανόνας-καθρέφτης.

Το post των ACL τελείωσε ειλικρινά: τα κλασικά ACL είναι stateless. Κάθε πακέτο κρίνεται μεμονωμένα, οπότε για να αφήσεις τις απαντήσεις web να μπουν πίσω είτε ανοίγεις μια φαρδιά τρύπα inbound είτε στηρίζεσαι στην ακατέργαστη λέξη-κλειδί established — μόνο TCP, και τυφλή στην πραγματική συνομιλία. Ένα πραγματικό firewall είναι stateful: θυμάται ότι ένας inside host άνοιξε μια σύνδεση προς τα έξω, και επιτρέπει αυτόματα την επιστρεφόμενη κίνηση αυτής της σύνδεσης ενώ κλείνει ό,τι είναι αυθόρμητο. Κανένας κανόνας-καθρέφτης, κάθε πρωτόκολλο.

Το Zone-Based Firewall (ZBF) της Cisco φέρνει stateful inspection σε κάθε router IOS/IOS-XE — χωρίς ξεχωριστή συσκευή. Το μοντέλο είναι καθαρό μόλις κλειδώσει: βάλε τα interfaces σε security zones (LAN, WAN, DMZ), και η κίνηση ανάμεσα σε οποιεσδήποτε δύο zones απορρίπτεται by default μέχρι να προσαρτήσεις μια πολιτική zone-pair που λέει αλλιώς. Η πολιτική χτίζεται από το ίδιο modular CLI (class-maps και policy-maps) που χρησιμοποιεί το QoS. Αυτό το post χτίζει ένα λειτουργικό edge τριών zones — πρόσβαση internet προς τα έξω, τίποτα αυθόρμητο προς τα μέσα, έναν δημοσιευμένο server DMZ — και το μοντέλο κλιμακώνεται κατευθείαν σε απομόνωση guest.

Προαπαιτουμενα

01

Το Μοντελο — Zones, Pairs, και Default-Deny

Τέσσερα κινούμενα μέρη, πάντα με την ίδια σειρά: όρισε zones, ταίριασε κίνηση (class-map), αποφάσισε τι να κάνεις μαζί της (policy-map), και δέσε την πολιτική σε μια κατεύθυνση ανάμεσα σε δύο zones (zone-pair).

ΚομματιΡολος
zone securityΜια ονομασμένη ομάδα interfaces (LAN, WAN, DMZ).
class-map type inspectΤαιριάζει ποια κίνηση — συνήθως μέσω ενός ACL. «Για ποια κίνηση μιλάμε;»
policy-map type inspectΛέει τι να κάνεις με κάθε class: inspect / pass / drop. «Τι κάνουμε μαζί της;»
zone-pair securityΔένει μια πολιτική σε κίνηση ΑΠΟ μια zone ΠΡΟΣ μια άλλη. Η κατεύθυνση έχει σημασία.

Δύο κανόνες κάνουν όλο το σύστημα προβλέψιμο. Η κίνηση μέσα στην ίδια zone ρέει ελεύθερα (δύο interfaces LAN μιλάνε χωρίς καμία πολιτική). Η κίνηση ανάμεσα σε διαφορετικές zones πέφτει εκτός αν ένα zone-pair την επιτρέψει ρητά — και ένα zone-pair είναι μονής κατεύθυνσης, οπότε το LAN→WAN και το WAN→LAN είναι ξεχωριστές πολιτικές. Ένα interface χωρίς zone δεν μπορεί να μιλήσει με κανένα interface που έχει, που είναι μια κλασική έκπληξη «γιατί σταμάτησαν όλα».

02

Βημα 1 — Οριστε τα Zones

Ονόμασε τα domains εμπιστοσύνης, μετά ανάθεσε κάθε interface σε ακριβώς ένα. Αυτή είναι η στιγμή που το firewall αρχίζει να ρίχνει κίνηση inter-zone, οπότε σχεδίασε πριν αναθέσεις.

IOS — δημιουργησε zones και τοποθετησε interfaces
R1(config)# zone security LAN
R1(config)# zone security WAN
R1(config)# zone security DMZ

R1(config)# interface GigabitEthernet0/1
R1(config-if)# zone-member security LAN
R1(config-if)# exit
R1(config)# interface GigabitEthernet0/0
R1(config-if)# zone-member security WAN
R1(config-if)# exit
R1(config)# interface GigabitEthernet0/2
R1(config-if)# zone-member security DMZ
R1(config-if)# end
⚠ Παγιδα — Η Αναθεση Zone στο Management Interface σε Κλειδωνει Εξω

Τη στιγμή που ένα interface μπαίνει σε μια zone, όλη η κίνηση προς/από άλλες zones — μαζί με το δικό σου session SSH αν διασχίζει ένα σύνορο zone — πέφτει μέχρι ένα zone-pair να την επιτρέψει. Ανάθεσε το WAN ή το interface διαχείρισης σε μια zone χωρίς αντίστοιχη πολιτική self-zone και θα χάσεις τη συσκευή. Δύο άμυνες: ρύθμισε μέσω console για την αρχική μετάβαση, και θυμήσου ότι η ειδική self zone (επόμενη παγίδα) διέπει την κίνηση προς τον ίδιο τον router. Χτίσε τα zone-pairs πρώτα, ανάθεσε interfaces τελευταία, ή κάν' το από το console.

03

Βημα 2 — Ταιριασε & Πολιτικη: Class-Map + Policy-Map

Όρισε ποια κίνηση σε νοιάζει (ένα ACL τυλιγμένο σε ένα class-map), μετά μια πολιτική που την κάνει inspect. Το «Inspect» είναι η μαγική λέξη — σημαίνει stateful.

IOS — επιτρεψε το LAN προς το internet, statefully
# Ποια κίνηση; Ένα ACL, δεμένο σε ένα class-map (η συνήθεια από τα ACL πληρώνει)
R1(config)# ip access-list extended LAN-OUT
R1(config-ext-nacl)# permit ip 192.168.1.0 0.0.0.255 any
R1(config-ext-nacl)# exit

R1(config)# class-map type inspect match-any LAN-TRAFFIC
R1(config-cmap)# match access-group name LAN-OUT
R1(config-cmap)# exit

# Τι κάνουμε; Κάνουμε inspect — αυτή είναι η STATEFUL ενέργεια
R1(config)# policy-map type inspect LAN-TO-WAN-POLICY
R1(config-pmap)# class type inspect LAN-TRAFFIC
R1(config-pmap-c)# inspect
R1(config-pmap-c)# exit
R1(config-pmap)# class class-default
R1(config-pmap-c)# drop log       # ό,τι άλλο σε αυτό το pair: drop + log
R1(config-pmap-c)# end
💡 inspect vs pass — Μαθε τη Διαφορα

Ένα class πολιτικής έχει τρεις πιθανές ενέργειες. Το inspect είναι stateful: επιτρέπει την κίνηση και χτίζει ένα session ώστε η επιστρεφόμενη κίνηση να επιτρέπεται αυτόματα — αυτό θέλεις για ροές TCP/UDP/ICMP που ξεκινούν από μια έμπιστη zone. Το pass επιτρέπει stateless μόνο προς μία κατεύθυνση (χωρίς session επιστροφής) — χρησιμοποιείται για stateless πρωτόκολλα όπως κάποια IPsec/ESP όπου ο router δεν πρέπει να παρακολουθεί state. Το drop απορρίπτει. Το class class-default στο τέλος κάθε πολιτικής είναι το ρητό default-deny σου — βάλ' το πάντα σε drop (πρόσθεσε log για να δεις τι απορρίπτεις), το ισοδύναμο ZBF του implicit deny ενός ACL κάνοντάς το ορατό.

04

Βημα 3 — Δεσ' το: το Zone-Pair

Τίποτα δεν συμβαίνει μέχρι ένα zone-pair να συνδέσει την πολιτική με μια κατεύθυνση. Αυτή είναι η γραμμή που πραγματικά ανάβει την κίνηση ανάμεσα σε δύο zones.

IOS — εφαρμοσε την πολιτικη απο LAN σε WAN
R1(config)# zone-pair security LAN-TO-WAN source LAN destination WAN
R1(config-sec-zone-pair)# service-policy type inspect LAN-TO-WAN-POLICY
R1(config-sec-zone-pair)# end

# Αυτό ήταν. Οι hosts LAN φτάνουν τώρα το internet, και επειδή τα sessions
# είναι INSPECTED, όλη η επιστρεφόμενη κίνησή τους επιτρέπεται αυτόματα. ΔΕΝ υπάρχει
# zone-pair WAN-TO-LAN, οπότε η αυθόρμητη inbound κίνηση πέφτει by default —
# ακριβώς η stateful συμπεριφορά που τα ACL σε έκαναν να προσποιείσαι.

R1# show policy-map type inspect zone-pair sessions
  Zone-pair: LAN-TO-WAN
    Number of established sessions = 42
    Established Sessions
     Session 192.168.1.20:51344=>93.184.216.34:443 tcp SIS_OPEN

05

Δημοσιευοντας εναν Server DMZ

Η μία περίπτωση όπου επιτρέπεις σκόπιμα αυθόρμητη inbound κίνηση: έναν δημόσιο web server στο DMZ. Ένα zone-pair WAN→DMZ, περιορισμένο σε ακριβώς ένα port, συνδυασμένο με το static NAT από το post του NAT.

IOS — επιτρεψε μονο HTTPS απο WAN στον server DMZ
# Ταίριασε ΜΟΝΟ tcp/443 προς τον server DMZ
R1(config)# ip access-list extended WEB-IN
R1(config-ext-nacl)# permit tcp any host 192.168.50.10 eq 443
R1(config-ext-nacl)# exit
R1(config)# class-map type inspect match-any WEB
R1(config-cmap)# match access-group name WEB-IN
R1(config-cmap)# exit
R1(config)# policy-map type inspect WAN-TO-DMZ-POLICY
R1(config-pmap)# class type inspect WEB
R1(config-pmap-c)# inspect
R1(config-pmap)# class class-default
R1(config-pmap-c)# drop log
R1(config-pmap-c)# exit
R1(config)# zone-pair security WAN-TO-DMZ source WAN destination DMZ
R1(config-sec-zone-pair)# service-policy type inspect WAN-TO-DMZ-POLICY
R1(config-sec-zone-pair)# end
# Συνδύασέ το με: ip nat inside source static tcp 192.168.50.10 443 interface g0/0 443
⚠ Παγιδα — Σειρα NAT και ZBF: Ταιριαξε την Πραγματικη (Inside) Διευθυνση

Στην εισερχόμενη κίνηση WAN→DMZ, το NAT κάνει untranslate τον προορισμό πριν το firewall την κάνει inspect, οπότε το ACL του ZBF σου πρέπει να ταιριάζει με την ιδιωτική διεύθυνση του server (192.168.50.10), όχι τη δημόσια. Κάν' το ανάποδα και το class δεν ταιριάζει ποτέ, η κίνηση χτυπάει στο class-default, και πέφτει σιωπηλά — μια πολύ συνηθισμένη αιτία «port-forward + firewall = τίποτα δεν δουλεύει». Στην αμφιβολία, το show policy-map type inspect zone-pair δείχνει μετρητές ανά class: αν το WEB δείχνει μηδέν και το class-default ανεβαίνει, η διεύθυνση ταιριάσματός σου είναι λάθος.

06

Η Self Zone — Προστασια του Router

Η κίνηση ΠΡΟΣ τον ίδιο τον router (SSH, SNMP, πρωτόκολλα δρομολόγησης, τα IP SLA pings σου) ζει σε μια ειδική ενσωματωμένη zone που λέγεται «self». By default η κίνηση self επιτρέπεται — σφίξ' την σκόπιμα.

IOS — επιτρεψε SSH στον router μονο απο το LAN
# Ταίριασε πρωτόκολλα διαχείρισης με προορισμό τον router
R1(config)# ip access-list extended TO-ROUTER
R1(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 22
R1(config-ext-nacl)# permit icmp any any
R1(config-ext-nacl)# exit
R1(config)# class-map type inspect match-any MGMT
R1(config-cmap)# match access-group name TO-ROUTER
R1(config)# policy-map type inspect TO-SELF
R1(config-pmap)# class type inspect MGMT
R1(config-pmap-c)# inspect
R1(config-pmap)# class class-default
R1(config-pmap-c)# drop
R1(config-pmap-c)# exit
R1(config)# zone-pair security WAN-TO-SELF source WAN destination self
R1(config-sec-zone-pair)# service-policy type inspect TO-SELF
R1(config-sec-zone-pair)# end
# Αυτό συμπληρώνει το access-class του VTY από το post των ACL — διπλή ασφάλεια.

07

Ελεγχος & Troubleshooting Ασφαλες να το Τρεξεις

Το ZBF αποτυγχάνει με προβλέψιμους τρόπους — ένα interface χωρίς ανάθεση, ένα zone-pair που λείπει, ή ένα class που δεν ταιριάζει ποτέ. Αυτές οι εντολές εντοπίζουν και τα τρία.

ΕντοληΔειχνει
show zone securityΚάθε zone και τα interfaces-μέλη της — εντόπισε αυτό που λείπει.
show zone-pair securityΌλα τα zone-pairs και η προσαρτημένη πολιτική — εντόπισε την κατεύθυνση που λείπει.
show policy-map type inspect zone-pairΜετρητές πακέτων ανά class — η όψη «ποιο class τρώει την κίνησή μου».
show policy-map type inspect zone-pair sessionsΟ ζωντανός πίνακας stateful sessions.
show class-map type inspectΤι ταιριάζει κάθε class-map.
💡 ACL ή Zone-Based Firewall — Ποτε να Χρησιμοποιησεις το Καθενα

Δεν χρειάζονται όλα ZBF. Για απλό L3 segmentation και έλεγχο management-plane — ο guest δεν φτάνει το LAN, μόνο το mgmt subnet κάνει SSH — τα ACL είναι πιο ελαφριά και απολύτως επαρκή, και αυτή είναι η δουλειά των περισσότερων switch/router SMB. Στρέψου στο ZBF όταν χρειάζεσαι πραγματικό statefulness σε ένα internet edge: χειρισμό επιστρεφόμενης κίνησης για κάθε πρωτόκολλο, ένα DMZ, protocol inspection, ή πολιτική ανά zone που θα ήταν εφιάλτης από καθρεφτισμένα ACL. Σε sites που χρειάζονται σοβαρό stateful edge, ένα αποκλειστικό firewall (ή οι νεότερες πολιτικές του IOS-XE) μπορεί να είναι η καλύτερη επιλογή — το ZBF είναι το ενδιάμεσο «πραγματικό firewall χωρίς να αγοράσεις συσκευή», και είναι αρκετό για τις περισσότερες SMB της Κρήτης.

Συμπερασματα

  1. Το stateful νικάει το stateless. Τα ACL κρίνουν πακέτα μόνα τους· το ZBF θυμάται συνομιλίες, οπότε τα inspected outbound sessions επιτρέπουν αυτόματα την επιστρεφόμενη κίνησή τους — για κάθε πρωτόκολλο, όχι μόνο TCP established.
  2. Τέσσερα κομμάτια, πάντα με τη σειρά: zones (ομαδοποίησε interfaces) → class-map (ταίριασε κίνηση, συνήθως ένα ACL) → policy-map (inspect/pass/drop) → zone-pair (δέσε σε κατεύθυνση).
  3. Διαφορετικές zones είναι deny-by-default· η ίδια zone είναι ανοιχτή. Ένα zone-pair είναι μονής κατεύθυνσης — το LAN→WAN και το WAN→LAN είναι ξεχωριστά — και ένα interface χωρίς zone δεν μπορεί να μιλήσει με κανένα που έχει.
  4. inspect = stateful, pass = stateless μονής κατεύθυνσης, drop = απόρριψη. Τελείωνε κάθε πολιτική με class class-default drop log ως το ορατό default-deny σου.
  5. Δημοσίευσε servers με ένα περιορισμένο pair WAN→DMZ, ταιριάζοντας την ιδιωτική διεύθυνση του server (το NAT κάνει untranslate πριν το inspection) και ακριβώς ένα port — συνδυασμένο με static NAT.
  6. Η self zone προστατεύει τον router. Κλείδωσε την κίνηση διαχείρισης στη συσκευή με πολιτική to-self· συμπληρώνει το VTY access-class.
  7. Ανάθεσε zones τελευταία (ή από το console). Τη στιγμή που ένα interface μπαίνει σε μια zone, η κίνηση inter-zone — πιθανόν το δικό σου session — πέφτει μέχρι ένα pair να την επιτρέψει.

Χρειαζεσαι πραγματικο firewall στην ακρη χωρις να αγορασεις συσκευη;

Χτίζω πολιτικές Zone-Based Firewall σε router Cisco για internet edges, DMZ, και απομόνωση guest — κλειδωμένα by default, με κάθε πολιτική zone-pair τεκμηριωμένη αρκετά ώστε το να αφαιρέσεις μία να είναι σκόπιμη απόφαση, όχι μυστήριο.

Κλεισε μια Discovery Call →