Altre risposte stanno usando iptables -Inei loro esempi, che spesso non è quello che dovresti usare.
iptables eseguirà la prima regola che corrisponde, quindi l'ordine delle regole è molto importante. -Iè il comando "inserisci" e deve essere utilizzato con un parametro index per specificare a quale elenco appartiene una determinata regola. -Aè il comando "append", che aggiungerà la regola alla fine dell'elenco.
In alcune distrobuzioni (forse tutte) l'uso -Isenza un parametro di indice aggiungerà la regola per indicizzarne una, rendendola la prima regola selezionata. In questo scenario, se l'ultimo comando che esegui è iptables -I INPUT -s tcp 0.0.0.0/0 -j DROPiptables, eliminerà tutto il traffico, indipendentemente dal fatto che tu abbia o meno delle ACCEPTregole successive nella catena.
Ecco un esempio di impostazione di una regola che consente solo SSH da un singolo IP:
A partire senza regole:
#> iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Aggiungi una nuova regola "consenti SSH da 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Blocca SSH da tutti gli altri IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Ora la tua catena INPUT sarà simile a:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 1.2.3.4 0.0.0.0/0 tcp dpt:22
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Successivamente, se è necessario autorizzare un secondo IP, è possibile utilizzare il -Iparametro per posizionarlo prima della regola della lista nera.
#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 1.2.3.4 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 4.3.2.1 0.0.0.0/0 tcp dpt:22
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Si noti che l'utilizzo ha -I INPUT 2aggiunto la nuova regola come regola numero 2 e ha portato la regola DROP al numero 3.
iptablessupporta l'inversione con l'operatore bang nel caso in cui tu voglia fare un bersaglioDROP. Esempio:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP