Otras respuestas están usando iptables -I
en sus ejemplos, que a menudo no es lo que debe usar.
iptables ejecutará la primera regla que coincida, por lo que el orden de las reglas es muy importante. -I
es el comando "insertar", y debe usarse con un parámetro de índice para especificar a qué lugar de la lista pertenece una regla determinada. -A
es el comando "agregar", que agregará la regla al final de la lista.
En algunas distribuciones (quizás todas), el uso -I
sin un parámetro de índice agregará la regla al índice, convirtiéndola en la primera regla verificada. En este escenario, si el último comando que ejecuta es iptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
iptables, eliminará todo el tráfico, independientemente de si tiene o no alguna ACCEPT
regla más adelante en la cadena.
Aquí hay una muestra de cómo configurar una regla que solo permite SSH desde una sola IP:
Comenzando sin reglas:
#> 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
Agregue una nueva regla "permitir SSH desde 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Bloquee SSH de todas las demás IP:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Ahora su cadena de ENTRADA se verá así:
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
Más adelante, si necesita incluir una segunda IP en la lista blanca, puede usar el -I
parámetro para colocarla antes de la regla de la 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 al usar -I INPUT 2
agregó la nueva regla como regla número 2 y superó la regla DROP al número 3.
iptables
admite la inversión con el operador de explosión en caso de que desee hacer un objetivoDROP
. Ejemplo:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP