13 Vprašanja za intervju na požarnem zidu iptables Linux


Nishita Agarwal, pogosta obiskovalka Tecminta, je z nami delila svoje izkušnje (vprašanja in odgovore) v zvezi z razgovorom o zaposlitvi, ki ga je ravnokar opravila v zasebni družbi za gostovanje v mestu Pune v Indiji. Zastavila so ji veliko vprašanj o različnih temah, vendar je strokovnjakinja za iptables in želela je ta vprašanja in njihov odgovor (ki jih je dala) v zvezi z iptables deliti z drugimi, ki bodo morda dali intervju v bližnji prihodnosti.

Vsa vprašanja in njihovi odgovori so napisani na podlagi spomina na Nishito Agarwal.

\ "Pozdravljeni prijatelji! Moje ime je Nishita Agarwal. Diplomiral sem iz tehnologije. Moje področje specializacije je UNIX in različice UNIX (BSD, Linux) me navdušujejo že od takrat, ko sem to slišala. Iskal sem zamenjavo službe, ki se je končala z gostiteljskim podjetjem v Pune v Indiji. "

Tu je zbirka tega, kar so me vprašali med intervjujem. Dokumentiral sem samo tista vprašanja in njihove odgovore, ki so se nanašali na iptable na podlagi mojega spomina. Upam, da vam bo to pomagalo pri razpokanju vašega intervjuja.

Odgovor: iptables uporabljam že precej dolgo in poznam iptables in požarni zid. Iptables je aplikacijski program, ki je večinoma napisan v programskem jeziku C in je izdan pod GNU General Public License. Napisano za sistemsko skrbniško stališče, zadnja stabilna izdaja iptables 1.4.21. iptables se lahko šteje za požarni zid za UNIX podoben operacijski sistem, ki ga lahko natančneje imenujemo iptables/netfilter Skrbnik sodeluje z iptables prek orodij za konzolo/GUI, da doda in definira pravila požarnega zidu v vnaprej določene tabele. Netfilter je modul, zgrajen znotraj jedra, ki opravlja naloge filtriranja.

Firewalld je najnovejša izvedba pravil filtriranja v RHEL/CentOS 7 (lahko se uporablja v drugih distribucijah, ki jih morda ne poznam). Zamenjal je vmesnik iptables in se povezal z netfilter.

Odgovor: Čeprav sem uporabil tako orodij, ki temeljijo na GUI, za iptables, kot je Webmin v GUI, in neposreden dostop do iptables prek konzole. iptables prek konzole Linux daje uporabniku neizmerno moč v obliki večje stopnje prilagodljivosti in boljšega razumevanja dogajanja v ozadju, če ne kar koli drugega. GUI je namenjen skrbnikom začetnikom, medtem ko je konzola izkušenim.

Odgovor: iptables in požarni zid imata isti namen (filtriranje paketov), vendar z drugačnim pristopom. iptables splaknejo celotna pravila, nastavljena vsakič, ko pride do spremembe, za razliko od požarnega zidu. Običajno je lokacija konfiguracije iptables na naslovu '/ etc/sysconfig/iptables', medtem ko je konfiguracija požarnega zidu na '/ etc/firewalld /', ki je nabor datotek XML. Konfiguriranje požarnega zidu na osnovi XML je lažje v primerjavi s konfiguracijo iptables, vendar je isto nalogo mogoče doseči z uporabo aplikacije za filtriranje paketov, tj. iptables in firewalld. Firewalld zažene iptables pod svojim pokrovom, skupaj z lastnim vmesnikom ukazne vrstice in konfiguracijsko datoteko, ki temelji na XML in omenjena zgoraj.

Odgovor: Poznam iptables in deluje in če ni ničesar, kar bi zahtevalo dinamični vidik požarnega zidu, ni razloga za selitev vse moje konfiguracije iz iptables v požarni zid. V večini primerov doslej še nisem videl, da bi iptables ustvarjal težavo. Tudi splošno pravilo o informacijski tehnologiji pravi\"zakaj popraviti, če ni pokvarjen". Vendar je to moja osebna misel in nikoli ne bi motil uvedbe požarnega zidu, če bo Organizacija iptables zamenjala s požarnim zidom.

Katere tabele se uporabljajo v iptables? Na kratko opišite tabele, ki se uporabljajo v iptables, in verige, ki jih podpirajo.

Odgovor: Hvala za priznanje. Če preidemo k vprašanju, v iptables uporabljajo štiri tabele, in sicer:

  1. Nat Table
  2. Mangle Table
  3. Tabela filtrov
  4. Surova tabela

Nat Table: Nat tabela se uporablja predvsem za prevajanje omrežnih naslovov. Maskirani paketi spremenijo svoj naslov IP v skladu s pravili v tabeli. Paketi v toku preidejo Nat Table samo enkrat. tj. Če je paket iz curka paketov maskiran, preostali paketi v toku ne bodo spet prečkali te tabele. V tej tabeli ni priporočljivo filtrirati. Verige, ki jih podpira tabela NAT, so PREROUTING Chain, POSTROUTING Chain in OUTPUT Chain.

Mangle Table: Kot že ime pove, ta tabela služi za mangiranje paketov. Uporablja se za posebne spremembe paketov. Uporablja se lahko za spreminjanje vsebine različnih paketov in njihovih glav. Tabele Mangle ni mogoče uporabiti za maskiranje. Podprte verige so PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain.

Tabela filtrov: Tabela filtrov je privzeta tabela, ki se uporablja v iptables. Uporablja se za filtriranje paketov. Če pravila niso določena, se kot privzeta tabela vzame tabela filtriranja in filtriranje se izvede na podlagi te tabele. Podprte verige so VHODNA veriga, IZHODNA veriga, NAPRED veriga.

Surova tabela: Surova tabela začne delovati, ko želimo konfigurirati pakete, ki so bili prej izvzeti. Podpira PREROUTING Chain in OUTPUT Chain.

Odgovor: Sledijo ciljne vrednosti, ki jih lahko določimo v cilju v iptables:

    1. SPREJEM: Sprejem paketov
    2. Čakalna vrsta: Paasov paket v uporabniški prostor (kraj, kjer sta nameščena aplikacija in gonilniki)
    3. DROP: Spustite pakete
    4. RETURN: Vrni nadzor v klicno verigo in prenehaj izvajati naslednji nabor pravil za trenutne pakete v verigi.

    Kako boste preverili iptables rpm, ki je potreben za namestitev iptables v CentOS ?.

    Odgovor: iptables rpm so vključeni v standardno namestitev CentOS-a in nam ga ni treba namestiti ločeno. Število vrtljajev lahko preverimo kot:

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

    Če ga želite namestiti, ga lahko dobite.

    # yum install iptables-services
    

    Odgovor: Če želite preveriti stanje iptables, lahko na terminalu zaženete naslednji ukaz.

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

    Če se ne izvaja, se lahko izvede spodnji ukaz.

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

    Prav tako lahko preverimo, ali je modul iptables naložen ali ne, kot:

    # lsmod | grep ip_tables
    

    Odgovor: Trenutna pravila v iptables je mogoče pregledati tako preprosto kot:

    # iptables -L
    

    Vzorec izhoda

    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
    

    Odgovor: Za izpiranje določene verige iptables lahko uporabite naslednje ukaze.

     
    # iptables --flush OUTPUT
    

    Če želite sprati vsa pravila iptables.

    # iptables --flush
    

    Odgovor: Zgornji scenarij je mogoče doseči preprosto z zagonom spodnjega ukaza.

    # iptables -A INPUT -s 192.168.0.7 -j ACCEPT 
    

    V vir lahko vključimo standardno poševnico ali masko podomrežja kot:

    # 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
    

    Odgovor: V upanju, da se ssh izvaja na vratih 22, ki so tudi privzeta vrata za ssh, lahko iptables dodamo pravilo kot:

    SPREJEMANJE paketov tcp za storitev ssh (vrata 22).

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

    ZAVRNITEV paketov tcp za storitev ssh (vrata 22).

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

    ODKLONITI tcp pakete za ssh storitev (vrata 22).

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

    DROP tcp paketov za ssh storitev (vrata 22).

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

    Odgovor: No, vse kar moram uporabiti je možnost 'multiport' z iptables, ki jim sledijo številke vrat, ki jih je treba blokirati, zgornji scenarij pa je mogoče doseči z enim potezom kot.

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

    Zapisana pravila lahko preverite s spodnjim ukazom.

    # 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
    

    Anketar: To je vse, kar sem hotel vprašati. Ste dragocen zaposleni, ki ga ne bomo radi pogrešali. Vaše ime bom priporočil predstavniku kadrovske službe. Če imate kakršno koli vprašanje, me lahko vprašate.

    Kot kandidat nisem želel ubiti pogovora, zato se nenehno sprašujem o projektih, s katerimi bi se ukvarjal, če bi bil izbran, in kakšne so druge možnosti v podjetju. Da ne omenjam HR kroga, ni bilo težko razbiti in dobil sem priložnost.

    Prav tako bi se rad zahvalil Avisheku in Raviju (ki sem že dolgo prijatelj), da sta si vzela čas za dokumentiranje intervjuja.

    Prijatelji! Če ste dali kakršen koli tak intervju in bi radi svojo izkušnjo intervjuja delili milijonom bralcev Tecminta po vsem svetu? nato svoja vprašanja in odgovore pošljite na [email ali pa lahko svojo izkušnjo razgovora oddate z naslednjim obrazcem.

    Hvala vam! Bodite povezani. Sporočite mi tudi, ali bi lahko na vprašanje odgovoril bolj pravilno kot to, kar sem storil.