GNU/Linux >> Linux Esercitazione >  >> Linux

Procedura:Linux Generale – IPTable di base tramite riga di comando

Introduzione

Una guida di base per proteggere l'accesso al tuo server con iptables.

Prerequisiti

Server che esegue CentOS 6.5 o versioni precedenti (queste istruzioni potrebbero funzionare anche con altre distribuzioni di Linux, sebbene con lievi modifiche basate sulla distribuzione; questo articolo funzionerà da CentOS 6.5)

Se non disponi già di un server, considera l'attivazione di un server privato virtuale da Atlantic.Net

iptables installato

A partire da IPtables di base tramite riga di comando

Per prima cosa, verifichiamo che iptables sia installato e attivo (tutti questi comandi richiederanno i privilegi di root, quindi assicurati che il tuo utente abbia accesso a questi privilegi o, se preferisci, eleva a root ed ovvia alla necessità di premettere tutto i tuoi comandi con 'sudo')

sudo service iptables status

stato di iptables del servizio

Per questo nuovo server, iptables non è in esecuzione, quindi attualmente consente l'ingresso di tutto il traffico. Non va bene. Risolviamolo.

Per coprire alcune nozioni di base, imposteremo il comportamento predefinito per eliminare tutto il traffico e consentire solo un determinato traffico (questa è una pratica di sicurezza spesso chiamata "whitelisting"). Prima faremo tutto dalla riga di comando, quindi lo configureremo in modo che le regole siano persistenti durante i riavvii.

Innanzitutto, avviamo il servizio e quindi controlliamo cosa è in esecuzione.

sudo service iptables start
sudo service iptables status

Tieni presente che la politica predefinita in ciascuna di queste catene è accettare il traffico. Cambiamo l'impostazione predefinita per INPUT per eliminare il traffico. (AVVERTENZA:assicurati di avere almeno una regola ACCEPT nella catena INPUT per consentire l'indirizzo IP della tua workstation o la porta 22 se stai accedendo a questo server in remoto tramite ssh. Nell'output sopra dello stato di iptables, nota che il traffico TCP verso la porta 22 ("tcp dpt:22") è accettata. Se questa regola non fosse presente, potremmo bloccarci fuori da questo server!)

sudo iptables -P INPUT DROP

La "-P ' indica che apporteremo una modifica alla norma generale, 'INPUT ' è la catena particolare da modificare e 'DROP ' è l'obiettivo predefinito del criterio.

Ora aggiungiamo alcune regole specifiche.

Innanzitutto, consentiremo l'accesso per il traffico HTTP e HTTPS, che vorremo accessibile da qualsiasi indirizzo IP. Quando si aggiungono regole a iptables, è importante prestare attenzione all'ordine di tali regole poiché iptables analizza le regole in ordine ed elaborerà il traffico in base al target indicato nella regola e quindi uscirà dalla catena (nella maggior parte dei casi). Nell'output sopra, nota che l'ultima regola rifiuterà il traffico. Se aggiungiamo una regola di autorizzazione alla fine di questa catena, non verrà mai invocata, poiché la regola di rifiuto sopra di essa rifiuterà il traffico e interromperà l'elaborazione di tutte le regole successive nella catena INPUT.

Quindi, scopriamo a quale numero di riga vogliamo inserire la nostra nuova regola:

sudo iptables -nL INPUT --line-numbers

Stato di Iptables

Il '-nL ' combina un paio di flag:'n ' salta la risoluzione DNS (così possiamo vedere quali IP esamina ogni regola); 'L ' elenca ogni regola nella catena indicata. L'ultima opzione, "–line-numbers ', in modo abbastanza appropriato, aggiunge i numeri di riga a ciascuna voce della regola. (Questo output è simile a quello che potresti ottenere con "sudo service iptables status ', ma quel comando fornisce le regole per tutte le catene, mentre 'iptables ' comando sopra ci dà i mezzi per restringere l'ambito dell'output per singola catena.)

In questo caso, inseriremo le nostre regole appena sopra la regola di rifiuto:

sudo iptables -I INPUT 5 -m tcp -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m tcp -p tcp --dport 443 -j ACCEPT

Elenco Iptables con numeri di riga

Cosa significa tutto questo?

* '-I ' indica che inseriremo questa regola al numero di riga indicato (il numero che segue il nome della catena all'interno della quale stiamo inserendo la regola).

* '-m tcp -p tcp –dport 80 ' specifica che questa regola abbinerà i pacchetti TCP in arrivo con una porta di destinazione di 80 (o 443, nel caso della seconda regola).

* '-j ACCETTO ' indica che, se questa regola è soddisfatta, "salta" questo pacchetto alla destinazione ACCEPT (che è il modo lungo per dire che è consentito).

Nota che una volta inserito il primo comando, la regola di rifiuto verrebbe spostata fino alla riga numero 6, ecco perché la seconda regola si inserisce nella riga numero 6.

Ora aggiungiamo una regola per consentire l'accesso da un particolare IP, indipendentemente dal tipo di traffico o porta.

sudo iptables -I INPUT 4 -s 192.168.0.1 -j ACCEPT

Qui stiamo inserendo questa regola appena sopra la regola che consente tutto il traffico ssh sulla riga 4. Il '-s ' specifica l'IP di origine. Avremmo potuto altrettanto facilmente consentire un intervallo IP di origine utilizzando anche la notazione CIDR, in modo da consentire l'intero intervallo 192.168.0.0/24:

sudo iptables -I INPUT 4 -s 192.168.0.0/24 -j ACCEPT

Potremmo rendere questa regola più specifica, diciamo che vogliamo solo essere in grado di accedere a questo server da quell'indirizzo 192.168.0.1. Andiamo anche avanti e aggiungiamo un commento!

sudo iptables -R INPUT 4 -s 192.168.0.1 -m tcp -p tcp --dport 22 -j ACCEPT -m comment --comment "Only home workstation can ssh in"

Innanzitutto, poiché questa regola sostituirà la nostra precedente, nota "-R '–questo significa 'sostituire' sul numero di riga indicato invece di inserire. Questa regola combina il controllo dell'IP di origine e della porta di destinazione, quindi per consentire il traffico, dovremo abbinare entrambi. L'opzione di corrispondenza finale per il commento è facoltativa, ma può essere molto utile quando si elencano le regole di iptables per indicare brevemente perché tale regola è in vigore, il che può essere molto utile quando le regole di iptables sono più coinvolte o quando ci sono regole che lo sono non è immediatamente evidente quando è elencato (come quello per l'interfaccia di loopback, a cui avevo aggiunto il commento in precedenza).

Potremmo, a questo punto, rimuovere la regola che consente a qualsiasi IP di accedere a questo server tramite ssh:

sudo iptables –D INPUT 5

(Il '-D ' specifica che il numero di riga indicato in questa catena verrà eliminato.)

Dopo aver aggiunto le regole, assicurati di salvare:

sudo service iptables save

Ciò salverà le regole di iptables attualmente in esecuzione in /etc/sysconfig/iptables in modo che, la prossima volta che riavvierai il server, caricherà automaticamente le regole che hai trascorso il tempo a inserire qui. Se desideri modificare il tuo file iptables con commenti più descrittivi (o gestire un insieme più ampio e intricato di regole del firewall), consulta l'articolo sulla configurazione di base del file IPTables.


Linux
  1. Come cancellare la cronologia della riga di comando BASH in Linux

  2. Come usare il comando Su in Linux

  3. Come spegnere o riavviare Linux utilizzando la riga di comando

  4. Come generare immagini Cmyk tramite la riga di comando in Linux?

  5. troncare la tabella tramite la riga di comando in Linux

Come utilizzare il proxy sulla riga di comando di Linux?

Come avviare la riga di comando di Linux

Come fare matematica di base nella riga di comando di Linux

Come controllare la versione del sistema operativo con la riga di comando di Linux

Come estrarre il file Tar.xz sulla riga di comando di Linux

Come trovare l'indirizzo IP nella riga di comando di Linux