Ricerca nel sito web

13 domande di intervista sul firewall iptables di Linux


Nishita Agarwal, una visitatrice Tecmint frequente, ha condiviso con noi la sua esperienza (domande e risposte) riguardo al colloquio di lavoro che aveva appena sostenuto in una società di hosting di proprietà privata a Pune , India. Le sono state poste molte domande su una varietà di argomenti, tuttavia è un'esperta di iptables e voleva condividere quelle domande e la loro risposta (che ha dato) relativa a iptables con altri che potrebbero andare a rilasciare un'intervista nel prossimo futuro.

Tutte le domande e le relative risposte vengono riscritte in base alla memoria di Nishita Agarwal.

"Ciao amici! Il mio nome è Nishita Agarwal. Ho conseguito la laurea in tecnologia. La mia area di specializzazione è UNIX e le varianti di UNIX (BSD, Linux) mi affascinano da quando l'ho sentito. Ho più di 1 anno di esperienza nello stoccaggio. Stavo cercando un cambio di lavoro che si concludesse con una società di hosting a Pune, in India. "

Ecco la raccolta di quanto mi è stato chiesto durante l'Intervista. Ho documentato solo quelle domande e le relative risposte che erano correlate a iptables in base alla mia memoria. Spero che questo ti aiuterà a risolvere la tua intervista.

1. Hai sentito parlare di iptables e firewall in Linux? Hai idea di cosa siano e a cosa servano?

Risposta: Utilizzo iptables da molto tempo e conosco sia iptables che il firewall. Iptables è un programma applicativo scritto principalmente in linguaggio di programmazione C ed è rilasciato sotto GNU General Public License. Scritto per il punto di vista dell'amministrazione di sistema, l'ultima versione stabile di iptables 1.4.21.iptables può essere considerato un firewall per il sistema operativo UNIX che può essere chiamato come iptables/netfilter, in modo più accurato. L'amministratore interagisce con iptables tramite strumenti front-end console/GUI per aggiungere e definire regole firewall in tabelle predefinite. Netfilter è un modulo integrato nel kernel che svolge il compito di filtraggio.

Firewalld è l'ultima implementazione delle regole di filtraggio in RHEL/CentOS 7 (potrebbe essere implementata in altre distribuzioni di cui potrei non essere a conoscenza). Ha sostituito l'interfaccia iptables e si connette a netfilter.

2. Hai utilizzato qualche tipo di strumento front-end basato su GUI per iptables o la riga di comando di Linux?

Risposta: Anche se ho utilizzato sia gli strumenti front-end basati sulla GUI per iptables come Shorewall in coniugazione di Webmin nella GUI sia l'accesso diretto a iptables tramite console.E devo ammettere che l'accesso diretto a iptables tramite la console Linux offre all'utente un potere immenso sotto forma di un maggiore grado di flessibilità e una migliore comprensione di ciò che accade in background, se non altro. La GUI è per amministratori inesperti mentre la console è per esperti.

3. Quali sono le differenze fondamentali tra iptables e firewalld?

Risposta: iptables e firewalld hanno lo stesso scopo (Filtraggio pacchetti) ma con un approccio diverso. iptables scarica l'intero set di regole ogni volta che viene apportata una modifica a differenza di firewalld. In genere la posizione della configurazione di iptables si trova in '/etc/sysconfig/iptables' mentre la configurazione di firewalld si trova in '/etc/firewalld/', che è un insieme di file XML .Configurare un firewalld basato su XML è più semplice rispetto alla configurazione di iptables, tuttavia lo stesso compito può essere ottenuto utilizzando entrambe le applicazioni di filtraggio dei pacchetti, ad esempio iptables e firewalld. Firewalld esegue iptables sotto il suo cofano insieme alla propria interfaccia a riga di comando e al file di configurazione basato su XML come detto sopra.

4. Sostituiresti iptables con firewalld su tutti i tuoi server, se ne avessi la possibilità?

Risposta: Ho familiarità con iptables e funziona e se non c'è nulla che richieda l'aspetto dinamico di firewalld, non sembra esserci motivo di migrare tutta la mia configurazione da iptables a firewalld.Nella maggior parte dei casi, finora non ho mai visto iptables creare un problema. Anche la regola generale dell'informatica dice “perché ripararlo se non è rotto”. Tuttavia questo è il mio pensiero personale e non mi dispiacerebbe mai implementare firewalld se l'Organizzazione intendesse sostituire iptables con firewalld.

5. Sembri fiducioso con iptables e il punto positivo è che anche noi stiamo usando iptables sul nostro server.

Quali sono le tabelle utilizzate in iptables? Fornisci una breve descrizione delle tabelle utilizzate in iptables e delle catene che supportano.

Risposta: Grazie per il riconoscimento. Passando alla parte delle domande, ci sono quattro tabelle utilizzate in iptables, vale a dire che sono:

  1. Tabella Nat
  2. Tavolo Mangano
  3. Tabella dei filtri
  4. Tavola grezza

Tabella Nat: la tabella Nat viene utilizzata principalmente per la traduzione degli indirizzi di rete. I pacchetti mascherati subiscono la modifica del loro indirizzo IP secondo le regole nella tabella. I pacchetti nel flusso attraversano la tabella Nat solo una volta. vale a dire, se un pacchetto da un jet di pacchetti viene mascherato, il resto dei pacchetti nel flusso non attraverserà nuovamente questa tabella. Si consiglia di non filtrare in questa tabella. Le catene supportate dalla tabella NAT sono la catena PREROUTING, la catena POSTROUTING e la catena OUTPUT.

Mangle Table: come suggerisce il nome, questa tabella serve per alterare i pacchetti. Viene utilizzato per la modifica del pacchetto speciale. Può essere utilizzato per alterare il contenuto di diversi pacchetti e le loro intestazioni. Il tavolo Mangle non può essere utilizzato per il Masquerading. Le catene supportate sono PREROUTING Chain, OUTPUT Chain, Forward Chain, INPUT Chain, POSTROUTING Chain.

Filter Table: Filter Table è la tabella predefinita utilizzata in iptables. Viene utilizzato per filtrare i pacchetti. Se non vengono definite regole, la tabella Filtra viene utilizzata come tabella predefinita e il filtraggio viene eseguito sulla base di questa tabella. Le catene supportate sono catena INPUT, catena OUTPUT, catena FORWARD.

Tabella grezza: la tabella grezza entra in azione quando vogliamo configurare i pacchetti che in precedenza erano esentati. Supporta la catena PREROUTING e la catena OUTPUT.

6. Quali sono i valori target (che possono essere specificati in target) in iptables e cosa fanno, sii breve!

Risposta: Di seguito sono riportati i valori target che possiamo specificare nel target in iptables:

    1. ACCETTA: accetta i pacchetti
    2. CODA: pacchetto Paas nello spazio utente (luogo in cui risiedono l'applicazione e i driver)
    3. DROP: rilascia i pacchetti
    4. RETURN: restituisce il controllo alla catena chiamante e interrompe l'esecuzione del successivo set di regole per i pacchetti correnti nella catena.
7. Passiamo agli aspetti tecnici di iptables, per tecnico intendo pratico.

Come controllerai l'RPM di iptables necessario per installare iptables in CentOS?.

Risposta: iptables RPM sono inclusi nell'installazione standard di CentOS e non è necessario installarli separatamente. Possiamo controllare il numero di giri come:

rpm -qa iptables

iptables-1.4.21-13.el7.x86_64

Se hai bisogno di installarlo, potresti fare yum per ottenerlo.

yum install iptables-services
8. Come verificare e assicurarsi che il servizio iptables sia in esecuzione?

Risposta: Per verificare lo stato di iptables, puoi eseguire il seguente comando sul terminale.

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

Se non è in esecuzione, è possibile eseguire il comando seguente.

---------------- On CentOS 6/5 ---------------- 
chkconfig --level 35 iptables on
service iptables start

---------------- On CentOS 7 ---------------- 
systemctl enable iptables 
systemctl start iptables 

Potremmo anche verificare se il modulo iptables è caricato o meno, come:

lsmod | grep ip_tables
9. Come rivedrai le attuali regole definite in iptables?

Risposta: Le regole attuali in iptables possono essere riviste in modo semplice come:

iptables -L

Output di esempio

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
10. Come eliminerai tutte le regole di iptables o una catena particolare?

Risposta: Per svuotare una particolare catena iptables, puoi utilizzare i seguenti comandi.

 
iptables --flush OUTPUT

Per svuotare tutte le regole di iptables.

iptables --flush
11. Aggiungi una regola in iptables per accettare pacchetti da un indirizzo IP affidabile (ad esempio 192.168.0.7)

Risposta: Lo scenario sopra può essere ottenuto semplicemente eseguendo il comando seguente.

iptables -A INPUT -s 192.168.0.7 -j ACCEPT 

Potremmo includere una barra standard o una maschera di sottorete nell'origine come:

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
12. Come aggiungere regole al servizio ssh ACCEPT, REJECT, DENY e DROP in iptables.

Risposta: Sperando che ssh sia in esecuzione sulla porta 22, che è anche la porta predefinita per ssh, possiamo aggiungere una regola a iptables come:

Per ACCETTARE i pacchetti tcp per il servizio ssh (porta 22).

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

Per RIFIUTARE i pacchetti tcp per il servizio ssh (porta 22).

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

Per DENY i pacchetti tcp per il servizio ssh (porta 22).

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

Per DROP i pacchetti tcp per il servizio ssh (porta 22).

 
iptables -A INPUT -s -p tcp --dport 22 -j DROP
13. Lascia che ti dia uno scenario. Supponiamo che ci sia una macchina il cui indirizzo IP locale sia 192.168.0.6. È necessario bloccare le connessioni sulle porte 21, 22, 23 e 80 del computer. Cosa farai?

Risposta: Bene, tutto quello che devo usare è l'opzione 'multiport' con iptables seguito dai numeri di porta da bloccare e lo scenario di cui sopra può essere ottenuto in un unico passaggio come .

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

Le regole scritte possono essere controllate utilizzando il comando seguente.

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

Intervistatore: Questo è tutto quello che volevo chiedere. Sei un dipendente prezioso che non vorremmo perdere. Consiglierò il tuo nome alle risorse umane. Se hai qualche domanda puoi chiedermelo.

Come candidato non volevo interrompere la conversazione, quindi continuo a chiedere quali progetti mi occuperei se selezionato e quali sono le altre posizioni aperte in azienda. Per non parlare del round delle risorse umane non è stato difficile da decifrare e ne ho avuto l'opportunità.

Inoltre vorrei ringraziare Avishek e Ravi (di cui sono amico da molto tempo) per aver dedicato del tempo a documentare la mia intervista.

Amici! Se avessi rilasciato un'intervista del genere e vorresti condividere la tua esperienza con milioni di lettori di Tecmint in tutto il mondo? quindi invia le tue domande e risposte a [email  oppure puoi inviare la tua esperienza di colloquio utilizzando il seguente modulo.

Grazie! Resta connesso. Fammi anche sapere se avrei potuto rispondere a una domanda in modo più corretto di quello che ho fatto.