
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.4
y 11.22.33.44
conectar 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.44
en este comando.
¿Podrías darme un poco de ayuda o consejos?
Gracias.
Respuesta1
Definiendomúltipledirecciones usando solouno iptables
El uso del comando ! --source
no 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.44
todaví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 iptables
regla usando --match
en 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 ipset
utilidad.
#(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 iptables
regla en lugar de IP individuales.
sudo iptables -A INPUT -p tcp --destination-port 22 -m set ! --match-set ssh_friends src -j DROP