¿Cómo agregar varias IP en una línea de comando de iptables? sudo iptables -A ENTRADA -p tcp --dport 22! -s 1.2.3.4 -j SOLTAR

¿Cómo agregar varias IP en una línea de comando de iptables? sudo iptables -A ENTRADA -p tcp --dport 22! -s 1.2.3.4 -j SOLTAR

Actualizar:

Lo he intentado sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4,11.22.33.44 -j DROP, no funciona y me da error.

iptables v1.8.2 (nf_tables): ! no permitido con múltiples direcciones IP de origen o destino


Por ejemplo, mi objetivo es permitir solo permitir 1.2.3.4y 11.22.33.44conectar el ssh (puerto 22) de mi servidor.

Y prefiero este enfoque/comando más que otros.

sudo iptables -A INPUT -p tcp --dport 22 ! -s 1.2.3.4 -j DROP

Pero no sé cómo agregar otra IP permitida 11.22.33.44en este comando.

¿Podrías darme un poco de ayuda o consejos?

Gracias.

Respuesta1

Definiendomúltipledirecciones usando solouno iptablesEl uso del comando ! --sourceno es posible.

Una dirección puede ser un nombre de red, un nombre de host (probablemente sea una muy mala idea usar nombres de host), una dirección IP de red (con /máscara) o una dirección IP simple. La máscara puede ser una máscara de red o un número simple.

Podría considerar cambiar el conjunto de reglas predeterminado de permitir a eliminar. Esto le permitiría definir basándose únicamente en lo que debería permitirse, es decir, similar a este:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
... your other rules goes here ...
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -s 1.2.3.4,11.22.33.44 -j ACCEPT
iptables -P INPUT DROP

El beneficio/belleza es que dicho conjunto de reglas sería mucho más eficaz, ya que se considera el estado de los paquetes. Además permite la sintaxis deseada. Plus también es la forma recomendada de definir reglas de firewall.

Sin embargo, tenga en cuenta que si utiliza una sintaxis como la que se muestra arriba: -s 1.2.3.4,11.22.33.44todavía crea 2 entradas de tabla individuales, como puede ver usando el comando iptables -L INPUT. Además no funciona con todas las versiones de iptables. Además, personalmente me resulta difícil de leer o mantener. Esa es la razón por la que trato de evitarlo, a favor de usar 2 comandos separados.

En caso de que desee minimizar la cantidad de reglas, lo más parecido que puede hacer es utilizaruno iptablesregla usando --matchen su lugar --source. Sin embargo, aún tienes que definir la coincidencia mediante comandos adicionales. Cómo funciona esto se ha explicado perfectamente en el otro comentario que trata sobre ipset.

Respuesta2

Puedes usar unconjunto de direcciones IP.

Dependiendo de su distribución, es posible que primero necesite instalar la ipsetutilidad.

#(For Debian and Debian-derived distros)
sudo apt install ipset-persistent

Luego creas un conjunto con un nombre descriptivo.

sudo ipset create ssh_friends iphash

Una vez que tenga un conjunto, puede agregarle IP.

sudo ipset add ssh_friends 1.2.3.4
sudo ipset add ssh_friends 11.22.33.44

Ahora puede utilizar el conjunto que creó en una iptablesregla en lugar de IP individuales.

sudo iptables -A INPUT -p tcp --destination-port 22 -m set ! --match-set ssh_friends src -j DROP

información relacionada