13 Ερωτήσεις συνέντευξης για το Τείχος προστασίας iptables Linux


Η Nishita Agarwal, μια συχνή Tecmint Επισκέπτης μοιράστηκε την εμπειρία της (Ερώτηση και Απάντηση) μαζί μας σχετικά με τη συνέντευξη για δουλειά που μόλις είχε δώσει σε μια ιδιωτική εταιρεία φιλοξενίας στο Pune , Ινδία. Της έκαναν πολλές ερωτήσεις για διάφορα θέματα, ωστόσο είναι ειδικός στα iptables και ήθελε να μοιραστεί αυτές τις ερωτήσεις και την απάντησή τους (που έδωσε) σχετικά με τα iptables σε άλλους που μπορεί να πηγαίνουν δώσει συνέντευξη στο εγγύς μέλλον.

Όλες οι ερωτήσεις και η απάντησή τους ξαναγράφονται με βάση τη μνήμη του Nishita Agarwal.

\Γεια σας φίλοι! Το όνομά μου είναι Nishita Agarwal. Έχω κάνει πτυχίο στην Τεχνολογία. Ο τομέας εξειδίκευσής μου είναι το UNIX και οι Παραλλαγές του UNIX (BSD, Linux) με συναρπάζουν από τότε που το άκουσα. Έχω 1+ χρόνια εμπειρίας στον χώρο αποθήκευσης. Έψαχνα για μια αλλαγή εργασίας η οποία ολοκληρώθηκε με μια εταιρεία φιλοξενίας στο Pune της Ινδίας.

Εδώ είναι η συλλογή όσων με ρώτησαν κατά τη διάρκεια της Συνέντευξης. Έχω τεκμηριώσει μόνο αυτές τις ερωτήσεις και την απάντησή τους που σχετίζονταν με iptables με βάση τη μνήμη μου. Ελπίζω ότι αυτό θα σας βοηθήσει να λύσετε τη Συνέντευξή σας.

Απάντηση: Χρησιμοποιώ τα iptables εδώ και πολύ καιρό και γνωρίζω τόσο τα iptable όσο και το τείχος προστασίας. Το Iptables είναι ένα πρόγραμμα εφαρμογής που είναι γραμμένο ως επί το πλείστον σε Γλώσσα Προγραμματισμού C και κυκλοφορεί υπό την άδεια GNU General Public License. Γράφτηκε για τη διαχείριση συστήματος, η πιο πρόσφατη σταθερή έκδοση εάν το iptables 1.4.21.iptables μπορεί να θεωρηθεί ως τείχος προστασίας για λειτουργικό σύστημα όπως το UNIX, το οποίο μπορεί να ονομαστεί iptables/ φίλτρο δικτύου, με μεγαλύτερη ακρίβεια. Ο Διαχειριστής αλληλεπιδρά με τα iptables μέσω εργαλείων διεπαφής κονσόλας/GUI για να προσθέσει και να ορίσει κανόνες τείχους προστασίας σε προκαθορισμένους πίνακες. Το Netfilter είναι μια μονάδα ενσωματωμένη στον πυρήνα που κάνει τη δουλειά του φιλτραρίσματος.

Το Firewalld είναι η πιο πρόσφατη εφαρμογή κανόνων φιλτραρίσματος στο RHEL/CentOS 7 (ενδέχεται να εφαρμοστεί σε άλλες διανομές τις οποίες μπορεί να μην γνωρίζω). Έχει αντικαταστήσει τη διεπαφή iptables και συνδέεται στο netfilter.

Απάντηση: Παρόλο που έχω χρησιμοποιήσει και τα δύο εργαλεία διεπαφής που βασίζονται στο GUI για iptables όπως το Webmin στο GUI και την άμεση πρόσβαση σε iptables μέσω κονσόλας. Και πρέπει να παραδεχτώ ότι η άμεση πρόσβαση σε iptables μέσω κονσόλας Linux δίνει στον χρήστη τεράστια δύναμη με τη μορφή υψηλότερου βαθμού ευελιξίας και καλύτερης κατανόησης του τι συμβαίνει στο παρασκήνιο, αν όχι οτιδήποτε άλλο. Το GUI είναι για αρχάριους διαχειριστές ενώ η κονσόλα είναι για έμπειρους.

Απάντηση: Το iptables και το τείχος προστασίας εξυπηρετούν τον ίδιο σκοπό (Φιλτράρισμα πακέτων), αλλά με διαφορετική προσέγγιση. Το iptables ξεπλένει όλους τους κανόνες που ορίζονται κάθε φορά που γίνεται μια αλλαγή σε αντίθεση με το τείχος προστασίας. Συνήθως η θέση της διαμόρφωσης iptables βρίσκεται στο '/etc/sysconfig/iptables' ενώ η διαμόρφωση του τείχους προστασίας βρίσκεται στο '/etc/firewalld/', που είναι ένα σύνολο αρχείων XML .Η διαμόρφωση ενός τείχους προστασίας που βασίζεται σε XML είναι ευκολότερη σε σύγκριση με τη διαμόρφωση των iptables, ωστόσο η ίδια εργασία μπορεί να επιτευχθεί χρησιμοποιώντας τόσο την εφαρμογή φιλτραρίσματος πακέτων, π.χ., iptables και τείχος προστασίας. Το Firewalld εκτελεί iptables κάτω από την κουκούλα του μαζί με τη δική του διεπαφή γραμμής εντολών και το αρχείο διαμόρφωσης που βασίζεται σε XML και αναφέρθηκε παραπάνω.

Απάντηση: Είμαι εξοικειωμένος με τα iptables και λειτουργεί και αν δεν υπάρχει τίποτα που να απαιτεί δυναμική πτυχή του τείχους προστασίας, δεν φαίνεται να υπάρχει λόγος να μεταφέρω όλες τις ρυθμίσεις παραμέτρων μου από το iptables στο τείχος προστασίας. Στις περισσότερες περιπτώσεις, έτσι Μέχρι στιγμής δεν έχω δει ποτέ τα iptables να δημιουργούν πρόβλημα. Επίσης ο γενικός κανόνας της Πληροφορικής λέει «γιατί να διορθωθεί αν δεν είναι σπασμένο». Ωστόσο αυτή είναι η προσωπική μου σκέψη και δεν θα με πείραζε ποτέ να εφαρμόσω το τείχος προστασίας εάν ο Οργανισμός πρόκειται να αντικαταστήσει τα iptables με τείχος προστασίας.

Ποιοι είναι οι πίνακες που χρησιμοποιούνται στα iptables; Δώστε μια σύντομη περιγραφή των πινάκων που χρησιμοποιούνται στα iptables και των αλυσίδων που υποστηρίζουν.

Απάντηση: Ευχαριστώ για την αναγνώριση. Περνώντας στο τμήμα ερώτησης, υπάρχουν τέσσερις πίνακες που χρησιμοποιούνται στα iptables, και συγκεκριμένα είναι:

  1. Πίνακας Nat
  2. Πίνακας Mangle
  3. Πίνακας φίλτρων
  4. Ακατέργαστος πίνακας

Πίνακας Nat : Ο πίνακας Nat χρησιμοποιείται κυρίως για τη μετάφραση διευθύνσεων δικτύου. Τα μεταμφιεσμένα πακέτα αλλάζουν τη διεύθυνση IP τους σύμφωνα με τους κανόνες του πίνακα. Τα πακέτα στη ροή διασχίζουν τον πίνακα Nat μόνο μία φορά. π.χ., εάν ένα πακέτο από ένα πίδακα πακέτων μεταμφιεσθεί, τα υπόλοιπα πακέτα στη ροή δεν θα διασχίσουν ξανά αυτόν τον πίνακα. Συνιστάται να μην φιλτράρετε σε αυτόν τον πίνακα. Οι αλυσίδες που υποστηρίζονται από τον πίνακα NAT είναι η αλυσίδα PREROUTING, η αλυσίδα POSTROUTING και η αλυσίδα OUTPUT.

Πίνακας Mangle : Όπως υποδηλώνει το όνομα, αυτός ο πίνακας χρησιμεύει για την παραποίηση των πακέτων. Χρησιμοποιείται για ειδική αλλαγή συσκευασίας. Μπορεί να χρησιμοποιηθεί για την αλλαγή του περιεχομένου διαφορετικών πακέτων και των κεφαλίδων τους. Το τραπέζι Mangle δεν μπορεί να χρησιμοποιηθεί για Masquerading. Οι υποστηριζόμενες αλυσίδες είναι PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain.

Πίνακας φίλτρων : Ο πίνακας φίλτρων είναι ο προεπιλεγμένος πίνακας που χρησιμοποιείται στα iptables. Χρησιμοποιείται για το φιλτράρισμα πακέτων. Εάν δεν έχουν καθοριστεί κανόνες, ο πίνακας φίλτρων λαμβάνεται ως προεπιλεγμένος πίνακας και το φιλτράρισμα γίνεται με βάση αυτόν τον πίνακα. Οι υποστηριζόμενες αλυσίδες είναι INPUT Chain, OUTPUT Chain, FORWARD Chain.

Ακατέργαστος πίνακας : Ο ακατέργαστος πίνακας τίθεται σε λειτουργία όταν θέλουμε να διαμορφώσουμε πακέτα που είχαν εξαιρεθεί νωρίτερα. Υποστηρίζει PREROUTING Chain και OUTPUT Chain.

Απάντηση: Ακολουθούν οι τιμές στόχου που μπορούμε να καθορίσουμε στο target στα iptables:

    1. ΑΠΟΔΟΧΗ : Αποδοχή πακέτων
    2. QUEUE : Πακέτο Paas στο χώρο χρήστη (τόπος όπου βρίσκονται η εφαρμογή και τα προγράμματα οδήγησης)
    3. DROP : Απόθεση πακέτων
    4. ΕΠΙΣΤΡΟΦΗ : Επιστρέψτε τον έλεγχο στην αλυσίδα κλήσης και σταματήστε την εκτέλεση του επόμενου συνόλου κανόνων για τα τρέχοντα πακέτα στην αλυσίδα.

    Πώς θα ελέγξετε το iptables rpm που απαιτείται για την εγκατάσταση iptables στο CentOS;.

    Απάντηση: Τα iptable rpm περιλαμβάνονται στην τυπική εγκατάσταση του CentOS και δεν χρειάζεται να το εγκαταστήσουμε ξεχωριστά. Μπορούμε να ελέγξουμε τις στροφές ως εξής:

    # rpm -qa iptables
    
    iptables-1.4.21-13.el7.x86_64
    

    Εάν πρέπει να το εγκαταστήσετε, μπορείτε να κάνετε μια χαρά για να το αποκτήσετε.

    # yum install iptables-services
    

    Απάντηση: Για να ελέγξετε την κατάσταση των iptables, μπορείτε να εκτελέσετε την ακόλουθη εντολή στο τερματικό.

    # service iptables status			[On CentOS 6/5]
    # systemctl status iptables			[On CentOS 7]
    

    Εάν δεν εκτελείται, μπορεί να εκτελεστεί η παρακάτω εντολή.

    ---------------- On CentOS 6/5 ---------------- 
    # chkconfig --level 35 iptables on
    # service iptables start
    
    ---------------- On CentOS 7 ---------------- 
    # systemctl enable iptables 
    # systemctl start iptables 
    

    Μπορούμε επίσης να ελέγξουμε εάν η λειτουργική μονάδα iptables είναι φορτωμένη ή όχι, όπως:

    # lsmod | grep ip_tables
    

    Απάντηση: Οι τρέχοντες κανόνες στο iptables μπορούν να αναθεωρηθούν τόσο απλοί όπως:

    # iptables -L
    

    Δείγμα εξόδου

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Απάντηση: Για να ξεπλύνετε μια συγκεκριμένη αλυσίδα iptables, μπορείτε να χρησιμοποιήσετε τις ακόλουθες εντολές.

     
    # iptables --flush OUTPUT
    

    Για να ξεπλύνετε όλους τους κανόνες iptables.

    # iptables --flush
    

    Απάντηση: Το παραπάνω σενάριο μπορεί να επιτευχθεί απλά εκτελώντας την παρακάτω εντολή.

    # iptables -A INPUT -s 192.168.0.7 -j ACCEPT 
    

    Μπορεί να συμπεριλάβουμε τυπική κάθετο ή μάσκα υποδικτύου στην πηγή ως:

    # iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT 
    # iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
    

    Απάντηση: Ελπίζοντας ότι το ssh εκτελείται στη θύρα 22, η οποία είναι επίσης η προεπιλεγμένη θύρα για το ssh, μπορούμε να προσθέσουμε κανόνα στα iptables ως:

    Για ΑΠΟΔΟΧΗ πακέτα tcp για υπηρεσία ssh (θύρα 22).

    # iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT 
    

    Για ΑΠΟΡΡΙΨΗ πακέτων tcp για την υπηρεσία ssh (θύρα 22).

    # iptables -A INPUT -s -p tcp --dport 22 -j REJECT
    

    Για ΑΠΟΡΡΙΨΗ πακέτων tcp για υπηρεσία ssh (θύρα 22).

     
    # iptables -A INPUT -s -p tcp --dport 22 -j DENY
    

    Για ΑΠΟΣΤΟΛΗ tcp πακέτα για υπηρεσία ssh (θύρα 22).

     
    # iptables -A INPUT -s -p tcp --dport 22 -j DROP
    

    Απάντηση: Λοιπόν, το μόνο που χρειάζεται να χρησιμοποιήσω είναι η επιλογή multiport με iptables ακολουθούμενα από αριθμούς θυρών που πρέπει να αποκλειστούν και το παραπάνω σενάριο μπορεί να επιτευχθεί με μία μόνο κίνηση.

    # iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP
    

    Οι γραπτοί κανόνες μπορούν να ελεγχθούν χρησιμοποιώντας την παρακάτω εντολή.

    # iptables -L
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
    ACCEPT     icmp --  anywhere             anywhere            
    ACCEPT     all  --  anywhere             anywhere            
    ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    DROP       tcp  --  192.168.0.6          anywhere             multiport dports ssh,telnet,http,webcache
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Συνεντευκτής : Αυτό ήταν το μόνο που ήθελα να ρωτήσω. Είστε ένας πολύτιμος υπάλληλος που δεν θα θέλαμε να χάσουμε. Θα προτείνω το όνομά σας στο HR. Αν έχετε οποιαδήποτε ερώτηση μπορείτε να με ρωτήσετε.

    Ως υποψήφιος δεν ήθελα να σκοτώσω τη συζήτηση, γι' αυτό συνεχίζω να ρωτάω για τα έργα που θα χειριζόμουν αν επιλεγούν και ποια είναι τα άλλα ανοίγματα στην εταιρεία. Για να μην αναφέρουμε HR γύρο δεν ήταν δύσκολο να σπάσει και είχα την ευκαιρία.

    Επίσης, θα ήθελα να ευχαριστήσω τους Avishek και τον Ravi (με τους οποίους είμαι φίλος από καιρό) για τον χρόνο που αφιέρωσαν για να τεκμηριώσουν τη συνέντευξή μου.

    Φίλοι! Εάν είχατε δώσει κάποια τέτοια συνέντευξη και θα θέλατε να μοιραστείτε την εμπειρία της συνέντευξης σας σε εκατομμύρια αναγνώστες της Tecmint σε όλο τον κόσμο; Στη συνέχεια, στείλτε τις ερωτήσεις και τις απαντήσεις σας στη διεύθυνση [email  ή μπορείτε να υποβάλετε την εμπειρία της συνέντευξης χρησιμοποιώντας την παρακάτω φόρμα.

    Ευχαριστώ! Μείνετε συνδεδεμένοι. Επίσης, ενημερώστε με αν θα μπορούσα να είχα απαντήσει σε μια ερώτηση πιο σωστά από αυτό που έκανα.