13 haastattelukysymystä Linux iptables -palomuurista


Nishita Agarwal, säännöllinen Tecmint-vierailija, jakoi kokemuksensa (kysymys ja vastaus) kanssamme äsken antamastasi työhaastattelusta yksityisessä omistetussa hosting-yrityksessä Punessa, Intiassa. Hänelle esitettiin paljon kysymyksiä eri aiheista, mutta hän on asiantuntija iptablesissa ja hän halusi jakaa nuo kysymykset ja heidän vastauksensa (hän antoi) koskien iptablesia muille, jotka saattavat antaa haastattelun lähitulevaisuudessa.

Kaikki kysymykset ja niiden vastaus kirjoitetaan uudelleen Nishita Agarwalin muistin perusteella.

"Hei ystävät! Nimeni on Nishita Agarwal. Olen suorittanut tekniikan kandidaatin tutkinnon. Erikoisalani on UNIX ja UNIX-versiot (BSD, Linux) kiehtovat minua siitä hetkestä lähtien, kun kuulin sen. Minulla on yli 1 vuoden kokemus varastoinnista. Etsin työnvaihtoa, joka päättyi hosting-yritykseen Pune, Intia. "

Tässä on kokoelma siitä, mitä minulta kysyttiin haastattelun aikana. Olen muistin perusteella dokumentoinut vain ne kysymykset ja niiden vastaukset, jotka liittyivät iptables-sovelluksiin. Toivottavasti tämä auttaa sinua murtamaan haastattelusi.

Vastaus: Olen käyttänyt iptablesia melko kauan ja olen tietoinen sekä iptablesista että palomuurista. Iptables on sovellusohjelma, joka on kirjoitettu enimmäkseen C-ohjelmointikielellä ja julkaistaan GNU General Public License -lisenssillä. Kirjoitettu järjestelmänhallinnan näkökulmasta, uusin vakaa julkaisu, jos iptables 1.4.21. iptables voidaan katsoa palomuureiksi UNIX: n kaltaiselle käyttöjärjestelmälle, jota voidaan kutsua tarkemmin nimellä iptables/netfilter. Järjestelmänvalvoja on vuorovaikutuksessa iptablesin kanssa konsolin/käyttöliittymän käyttöliittymän avulla lisätäksesi ja määritellessään palomuurisääntöjä ennalta määriteltyihin taulukoihin. Netfilter on ytimen sisään rakennettu moduuli, joka suorittaa suodatustyön.

Firewalld on uusin suodatussääntöjen toteutus RHEL/CentOS 7: ssä (voidaan toteuttaa muissa jakeluissa, joista en ehkä ole tietoinen). Se on korvannut iptables-käyttöliittymän ja muodostaa yhteyden netfilteriin.

Vastaus: Vaikka olen käyttänyt sekä GUI-pohjaisia etupään työkaluja iptable-ohjelmistoihin, kuten Webmin GUI: ssä, että iptables-sovellusten suora pääsy konsolin kautta. Ja minun on myönnettävä, että suora pääsy iptabletteihin Linux-konsolin kautta antaa käyttäjän valtava teho suuremman joustavuuden ja paremman ymmärryksen muodossa taustalla tapahtuvalle, ellei mitään muuta. GUI on aloittelijoille ja konsoli kokeneille.

Vastaus: iptables ja palomuuri palvelevat samaa tarkoitusta (Packet Filtering), mutta eri lähestymistavalla. iptables tyhjentää kaikki asetetut säännöt aina, kun muutos tehdään toisin kuin palomuuri. Tyypillisesti iptables-kokoonpanon sijainti on '/ etc/sysconfig/iptables', kun taas palomuurin kokoonpano on '/ etc/firewalld /', joka on joukko XML-tiedostoja. XML-pohjaisen palomuurin määrittäminen on helpompaa verrattuna iptables-määrityksiin, mutta sama tehtävä voidaan saavuttaa sekä pakettisuodatussovelluksella, esim. iptables että palomuuri. Firewalld käyttää iptablesia konepellin alla, samoin kuin oma komentoriviliittymä ja määritystiedosto, joka on XML-pohjainen ja mainittu edellä.

Vastaus: Tunnen iptablesin ja se toimii, ja jos mikään ei vaadi palomuurin dynaamista näkökulmaa, ei näytä olevan syytä siirtää kaikki kokoonpanoni iptablesista palomuuriin. Useimmissa tapauksissa , toistaiseksi en ole koskaan nähnyt iptablesin muodostavan ongelmaa. Myös tietotekniikan yleissäännössä sanotaan "miksi korjata, jos se ei ole rikki". Tämä on kuitenkin henkilökohtainen ajatukseni, enkä välitä palomuurin käyttöönotosta, jos organisaatio aikoo korvata iptablesin palomuurilla.

Mitä taulukoita käytetään iptablesissa? Anna lyhyt kuvaus iptablesissa käytetyistä taulukoista ja niiden tukemista ketjuista.

Vastaus: Kiitos tunnustuksesta. Siirtyminen kysymysosaan: iptablesissa on neljä taulukkoa, nimittäin ne ovat:

  1. Nat-taulukko
  2. Mangle-taulukko
  3. Suodataulukko
  4. Raakapöytä

Nat-taulukko: Nat-taulukkoa käytetään ensisijaisesti verkko-osoitteen kääntämiseen. Naamiaiset paketit muuttavat IP-osoitettaan taulukon sääntöjen mukaisesti. Streamin paketit kulkevat Nat-taulukon läpi vain kerran. ts., jos paketti pakettisuihkusta naamioidaan, ne loput virran paketit eivät kulje tämän taulukon läpi. Tässä taulukossa ei suositella suodattamista. NAT-taulukon tukemia ketjuja ovat PREROUTING-ketju, POSTROUTING-ketju ja OUTPUT-ketju.

Mangle-taulukko: Kuten nimestä voi päätellä, tämä taulukko palvelee pakettien sekoittamista. Sitä käytetään erityispakettien muuttamiseen. Sitä voidaan käyttää erilaisten pakettien ja niiden otsikoiden sisällön muuttamiseen. Mangle-pöytää ei voi käyttää naamiointiin. Tuetut ketjut ovat PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain.

Suodatustaulukko: Suodatustaulukko on iptablesissa käytetty oletustaulukko. Sitä käytetään pakettien suodattamiseen. Jos sääntöjä ei ole määritetty, suodatustaulukko otetaan oletustaulukoksi ja suodatus tehdään tämän taulukon perusteella. Tuetut ketjut ovat INPUT Chain, OUTPUT Chain, FORWARD Chain.

Raw Table: Raw-taulukko tulee toimintaan, kun haluamme määrittää aiemmin vapautetut paketit. Se tukee PREROUTING-ketjua ja OUTPUT-ketjua.

Vastaus: Seuraavat ovat kohdearvot, jotka voimme määrittää kohteena iptablesissa:

    1. HYVÄKSY: Hyväksy paketit
    2. JONO: Paas-paketti käyttäjän tilaan (paikka, jossa sovellus ja ohjaimet sijaitsevat)
    3. DROP: pudota paketteja
    4. PALAUTA: Palaa hallinta soittoketjuun ja lopeta seuraavan sääntöjoukon suorittaminen ketjun nykyisille paketeille.

    Kuinka tarkistat iptables rpm: n, jota tarvitaan iptablesin asentamiseen CentOSiin ?.

    Vastaus: iptables rpm sisältyvät CentOS-vakioasennuksiin, eikä meidän tarvitse asentaa sitä erikseen. Voimme tarkistaa kierrosnopeuden seuraavasti:

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

    Jos haluat asentaa sen, voit tehdä sen hankkimiseksi.

    # yum install iptables-services
    

    Vastaus: Voit tarkistaa iptablesin tilan suorittamalla seuraavan komennon päätelaitteessa.

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

    Jos se ei ole käynnissä, seuraava komento voidaan suorittaa.

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

    Voimme myös tarkistaa, onko iptables-moduuli ladattu vai ei, kuten:

    # lsmod | grep ip_tables
    

    Vastaus: Iptablesin nykyiset säännöt voidaan tarkistaa yksinkertaisesti:

    # iptables -L
    

    Näyte tuotos

    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
    

    Vastaus: Voit huuhdella tietyn iptables-ketjun käyttämällä seuraavia komentoja.

     
    # iptables --flush OUTPUT
    

    Kaikkien iptables-sääntöjen tyhjentäminen.

    # iptables --flush
    

    Vastaus: Yllä oleva skenaario voidaan saavuttaa yksinkertaisesti suorittamalla alla oleva komento.

    # iptables -A INPUT -s 192.168.0.7 -j ACCEPT 
    

    Voimme sisällyttää lähdekoodiin tavallisen kauttaviivan tai aliverkon peitteen seuraavasti:

    # 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
    

    Vastaus: Toivoen ssh: n olevan käynnissä portissa 22, joka on myös ssh: n oletusportti, voimme lisätä säännön iptablesiin seuraavasti:

    TCP-pakettien hyväksyminen ssh-palvelua varten (portti 22).

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

    TCP-pakettien hylkääminen ssh-palvelua varten (portti 22).

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

    TCP-pakettien kieltäminen ssh-palvelua varten (portti 22).

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

    TCP-pakettien pudottaminen ssh-palvelua varten (portti 22).

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

    Vastaus: Minun tarvitsee vain käyttää" multiport "-vaihtoehtoa, jossa on iptables, jonka jälkeen porttinumerot estetään, ja yllä oleva skenaario voidaan saavuttaa yhdellä kertaa.

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

    Kirjalliset säännöt voidaan tarkistaa alla olevan komennon avulla.

    # 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
    

    Haastattelija: Se on kaikki mitä halusin kysyä. Olet arvokas työntekijä, jota emme halua kaipaamaan. Suosittelen nimesi korkeaan edustajaan. Jos sinulla on kysyttävää, voit kysyä minulta.

    Ehdokkaana en halunnut tappaa keskustelua, joten kysyn jatkuvasti projekteista, joita käsittelen, jos valitaan, ja mitkä ovat yrityksen muut aukot. Puhumattakaan HR-kierroksesta, jota ei ollut vaikea murtaa, ja sain mahdollisuuden.

    Haluaisin myös kiittää Avishekia ja Ravia (joita olen ollut ystäväni kauan), että he käyttivät aikaa dokumentoida haastatteluni.

    Ystävät! Jos olisit antanut tällaisen haastattelun ja haluaisit jakaa haastattelukokemuksesi miljoonille Tecmint-lukijoille ympäri maailmaa? lähetä sitten kysymyksesi ja vastauksesi osoitteeseen [email tai voit lähettää haastattelukokemuksesi seuraavalla lomakkeella.

    Kiitos! Pysy yhteydessä. Kerro minulle myös, olisinko voinut vastata kysymykseen oikein kuin mitä tein.