Outras respostas estão sendo iptables -I
usadas em seus exemplos, o que geralmente não é o que você deve usar.
O iptables executará a primeira regra que corresponder, portanto a ordem das regras é muito importante. -I
é o comando "inserir" e deve ser usado com um parâmetro de índice para especificar onde uma determinada regra pertence à lista. -A
é o comando "acrescentar", que adicionará a regra ao final da lista.
Em algumas distrobuções (talvez todas), o uso -I
sem um parâmetro de índice adicionará a regra ao índice um, tornando-a a primeira regra verificada. Nesse cenário, se o último comando que você executar for iptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
, o iptables eliminará todo o tráfego, independentemente de você ter ou não ACCEPT
regras mais tarde na cadeia.
Aqui está um exemplo de como configurar uma regra que permite apenas SSH a partir de um único IP:
Começando sem regras:
#> 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
Adicione uma nova regra "allow SSH from 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Bloqueie o SSH de todos os outros IPs:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Agora sua cadeia de entrada será semelhante 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
Mais tarde, se você precisar colocar um segundo IP na lista de permissões, use o -I
parâmetro para colocá-lo antes da regra da lista negra.
#>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
Observe que o uso -I INPUT 2
da nova regra como regra número 2 e a regra DROP foram adicionadas ao número 3.
iptables
suporta inversão com o operador bang, caso você queira fazer uma segmentaçãoDROP
. Exemplo:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP