13 intervjuuküsimust Linuxi iptablesi tulemüüri kohta


Nishita Agarwal, sage Tecminti külastaja, jagas meiega oma kogemusi (küsimus ja vastus) seoses töövestlusega, mille ta just andis Indias Pune'i eraomanduses hostimisettevõttes. Talle esitati palju küsimusi mitmesugustel teemadel, kuid ta on iptablesi ekspert ja ta soovis neid iptablesiga seotud küsimusi ja nende vastuseid (mida ta andis) teistele jagada, kes võivad lähiajal intervjuusid anda.

Kõik küsimused ja nende vastused kirjutatakse ümber Nishita Agarwali mälestuse põhjal.

\ "Tere, sõbrad! Minu nimi on Nishita Agarwal. Olen omandanud bakalaureusekraadi tehnoloogias. Minu spetsialiseerumisala on UNIX ja UNIX-i variandid (BSD, Linux) paeluvad mind sellest ajast, kui ma seda kuulsin. Mul on 1 + aastane kogemus otsisin töökohavahetust, mis lõppes Indias Punes asuva hostimisettevõttega. "

Siin on kogumik, mida minult intervjuu ajal küsiti. Olen oma mälu põhjal dokumenteerinud ainult need küsimused ja nende vastused, mis olid seotud iptablesiga. Loodetavasti aitab see teil intervjuu purunemisel.

Vastus: Olen kasutanud iptablesi üsna pikka aega ja olen teadlik nii iptable'idest kui ka tulemüürist. Iptables on rakendusprogramm, mis on kirjutatud enamasti C-programmeerimiskeeles ja on välja antud GNU General Public License all. Kirjutatud süsteemihalduse seisukohast - iptables 1.4.21. iptablesi viimast stabiilset versiooni võib pidada UNIX-i sarnase operatsioonisüsteemi tulemüüriks, mida saab täpsemalt nimetada iptables/netfilter. Administraator suhtleb iptablesiga konsooli/GUI esiotstööriistade kaudu, et lisada ja määratleda tulemüüri reeglid etteantud tabelitesse. Netfilter on tuuma sisse ehitatud moodul, mis täidab filtreerimist.

Firewalld on uusim RHEL/CentOS 7 filtreerimisreeglite juurutus (võib rakendada ka muudes distributsioonides, millest ma ei pruugi teada olla). See on asendanud iptablesi liidese ja ühendub netfilteriga.

Vastus: Ehkki olen iptablettide jaoks kasutanud nii GUI-põhiseid eeltööriistu nagu Webmin GUI-s kui ka konsooli kaudu otsepääsu iptablesile. Ja pean tunnistama, et otsene juurdepääs iptables Linuxi konsooli kaudu annab kasutajale tohutu võimsuse suurema paindlikkuse ja parema arusaamise taustal toimuvast, kui mitte millekski muuks. GUI on algajale administraatorile, konsool aga kogenud.

Vastus: iptables ja tulemüür täidavad sama eesmärki (pakettide filtreerimine), kuid erineva lähenemisviisiga. Erinevalt tulemüürist muudavad iptables kõik reeglid, mis on määratud iga kord, kui muudatus tehakse. Tavaliselt asub iptablesi konfiguratsiooni asukoht '/ etc/sysconfig/iptables', tulemüüri konfiguratsioon aga '/ etc/firewalld /', mis on XML-failide komplekt. XML-põhise tulemüüri konfigureerimine iptablesi konfiguratsiooniga võrreldes on lihtsam, kuid sama ülesande saab saavutada nii pakettide filtreerimise rakenduse, st iptablesi kui ka tulemüüri abil. Firewalld käitab oma kapoti all iptableid koos oma käsurea liidese ja konfiguratsioonifailiga, mis on XML-põhine ja eespool öeldud.

Vastus: Olen iptablesiga tuttav ja see töötab ja kui miski ei vaja tulemüüri dünaamilist aspekti, ei tundu olevat põhjust kogu oma konfiguratsiooni iptables'ist tulemüüriks üle viia. Enamasti pole ma siiani iptableid probleemi looma näinud. Ka infotehnoloogia üldreegel ütleb\"miks parandada, kui see pole rikutud". Kuid see on minu isiklik mõte ja mul poleks kunagi selle vastu tulemüüri installimist, kui organisatsioon asendab iptables tulemüüriga.

Milliseid tabeleid iptablesis kasutatakse? Kirjeldage iptablesis kasutatud tabeleid ja nende toetatavaid ahelaid lühidalt.

Vastus: Täname tunnustuse eest. Küsimusele liikudes on iptablesis kasutatud nelja tabelit, nimelt:

  1. Nat tabel
  2. Mangle tabel
  3. Filtritabel
  4. Toores laud

Nati tabel: Nati tabelit kasutatakse peamiselt võrgu aadresside tõlkimiseks. Maskeeritud pakettide IP-aadressi muudetakse vastavalt tabelis toodud reeglitele. Vooges olevad paketid läbivad Nat tabeli ainult üks kord. st. kui pakettide jetist pakett maskeeritakse, siis ülejäänud voos olevad paketid enam selle tabeli kaudu ei liigu. Selles tabelis pole soovitatav filtreerida. NAT tabeli poolt toetatud ahelad on PREROUTING kett, POSTROUTING kett ja OUTPUT kett.

Mangle Table: Nagu nimigi ütleb, on see tabel pakettide haldamiseks. Seda kasutatakse spetsiaalsete pakendite muutmiseks. Seda saab kasutada erinevate pakettide ja nende päiste sisu muutmiseks. Mangle tabelit ei saa maskeerimisel kasutada. Toetatud ketid on PREROUTING kett, OUTPUT kett, edasi kett, INPUT kett, POSTROUTING kett.

Filtritabel: filtritabel on vaiketabel, mida iptablesis kasutatakse. Seda kasutatakse pakettide filtreerimiseks. Kui reegleid pole määratletud, võetakse filtritabel vaiketabeliks ja filtreerimine toimub selle tabeli põhjal. Toetatud ketid on INPUT kett, OUTPUT kett, EDASI kett.

Toores tabel: töötlemata tabel hakkab toimima siis, kui soovime seadistada varem vabastatud paketid. See toetab PREROUTING ketti ja OUTPUT ketti.

Vastus: Järgnevad sihtväärtused, mille saame iptablesis sihtmärgis määrata:

    1. VASTU: aktsepteerige pakette
    2. järjekord: Paas pakett kasutajaruumi (koht, kus rakendus ja draiverid asuvad)
    3. DROP: visake paketid
    4. TAGASI: naaske juhtnupp helistamisketti ja lõpetage järgmise reeglistiku täitmine ahela praeguste pakettide jaoks.

    Kuidas saate kontrollida iptablesi pööret minutis, mis on vajalik iptable'i installimiseks CentOS-is ?.

    Vastus: iptables rpm sisaldub CentOSi standardses installis ja me ei pea seda eraldi installima. Pööret saame kontrollida järgmiselt:

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

    Kui peate selle installima, võite selle saamiseks lihtsalt teha.

    # yum install iptables-services
    

    Vastus: iptablesi oleku kontrollimiseks võite terminalis käivitada järgmise käsu.

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

    Kui see ei tööta, võidakse täita järgmine käsk.

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

    Samuti võime kontrollida, kas iptables-moodul on laaditud või mitte, nagu:

    # lsmod | grep ip_tables
    

    Vastus: iptablesi praegused reeglid saab üle vaadata nii lihtsalt kui:

    # iptables -L
    

    Proovi väljund

    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
    

    Vastus: Konkreetse iptablesi keti loputamiseks võite kasutada järgmisi käske.

     
    # iptables --flush OUTPUT
    

    Kõigi iptable'i reeglite loputamiseks.

    # iptables --flush
    

    Vastus: Ülaltoodud stsenaariumi saab saavutada lihtsalt alloleva käsu käivitamisega.

    # iptables -A INPUT -s 192.168.0.7 -j ACCEPT 
    

    Võime lisada allikasse standardse kaldkriipsu või alamvõrgu maski järgmiselt:

    # 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
    

    Vastus: Lootes, et ssh töötab pordis 22, mis on ka ssh-i vaikeport, saame iptablesile lisada reegli järgmiselt:

    TCS-i pakettide aktsepteerimiseks ssh-teenuse jaoks (port 22).

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

    TCS-i pakettide tagasilükkamine ssh-teenuse jaoks (port 22).

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

    TCP-pakettide eitamine ssh-teenuse jaoks (port 22).

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

    TCS-i pakettide DROPimine ssh-teenuse jaoks (port 22).

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

    Vastus: Kõik, mida ma pean kasutama, on valik „multiport” koos iptablesiga, millele järgnevad blokeeritavad pordinumbrid ja ülaltoodud stsenaariumi saab saavutada ühe korraga.

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

    Kirjalikke reegleid saab kontrollida alloleva käsu abil.

    # 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
    

    Intervjueerija: see on kõik, mida ma tahtsin küsida. Olete väärtuslik töötaja, kellest me ei taha puudust tunda. Soovitan HR-le teie nime. Kui teil on küsimusi, võite mulle esitada.

    Kandidaadina ei tahtnud ma vestlust tappa, seega küsin pidevalt nende projektide kohta, mida ma valin, ja millised on ettevõtte muud võimalused. HR voorust rääkimata ei olnud keeruline murda ja sain võimaluse.

    Samuti tahaksin tänada Avishekit ja Ravit (keda ma olen juba ammu sõber), et nad leidsid aega intervjuu dokumenteerimiseks.

    Sõbrad! Kui oleksite sellise intervjuu andnud ja soovite jagada oma intervjuukogemust miljonitele Tecminti lugejatele kogu maailmas? siis saatke oma küsimused ja vastused aadressile [email või võite oma vestluskogemuse esitada järgmise vormi abil.

    Aitäh! Hoidke ühendust. Samuti andke mulle teada, kas ma oleksin võinud vastata küsimusele õigemini kui see, mida ma tegin.