Problemas al ejecutar el archivo creado para iptables (solucionado)

Imagen de jalberti
0 puntos

Buenas,
Soy nuevo en esto de Ubuntu y lo estoy aprendiendo a manejar.
Tengo un problema con un scrib que e creado para IPTABLES, intentando crear un Firewall.
El error me dice que hay un problema con este parámetro 1:1024.
El scrib que e puesto es el siguiente:

#!/bin/sh

## SCRIPT de IPTABLES - ejemplo del manual de iptables

## Ejemplo de script para firewall entre red-local e internet

##

## Pello Xabier Altadill Izura

## www.pello.info - pello@pello.info

echo -n Aplicando Reglas de Firewall...

## FLUSH de reglas

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

## Establecemos politica por defecto

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING ACCEPT

## Empezamos a filtrar

## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN

# El localhost se deja (por ejemplo conexiones locales a mysql)

/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local

iptables -A INPUT -s 172.16.15.151/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local

# y activamos el BIT DE FORWARDING (imprescindible!!!!!)

iptables -t nat -A POSTROUTING -s 192.168.1.1/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea

# que otras máquinas puedan salir a traves del firewall.

echo 1 > /proc/sys/net/ipv4/ip_forward

## Y ahora cerramos los accesos indeseados del exterior:

# Nota: 0.0.0.0/0 significa: cualquier red

# Cerramos el rango de puerto bien conocido

iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP

iptables -A INPUT -s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin

iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L -n"

# Fin del script

Lo que os estoy pidiendo ya que no entiendo mucho en este tema es haber si está todo correcte en el scrib anterior.

Este scrib tiene una finalidad en principio de para un topologia muy senzilla:
Un servidor conectado a un router i de en ese servidor ai dos targetas de red, la otra está conectada a un swith al cual he formado una subred a la cual quiero hacer NAT, con un cliente connectado al swith, las IP son las siguientes por si os interesa, porque me e liado un poco a la hora de poner-las en el scrib:

SERVIDOR
eth0 #conectada al router
address 172.16.15.151
netmask 255.255.255.0
network 172.16.15.0
broadcast 172.16.15.255
gateway 172.16.15.1

eth1 # conectada a la subred
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 172.16.15.1

CLIENTE
address 192.168.1.50
netmask 255.255.255.0
gateway 192.168.1.1

Imagen de Gabriel_M
+1
0
-1

1- En principio respeta las normas y escribe con corrección, con más razón si intentas
configurar iptables, Gnu/Linux es sensitiva a las mayúsculas minúsculas, lo que intentas
hacer es un script

2- Sin usar iptables, configura adecuadamente la red y ve que esta funcione correctamente

a- Si la dirección de red del router hacia el servidor es:
172.16.15.1

Entonces eth0 que se conecta a él esta correctamente configurada

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 172.16.15.151
netmask 255.255.255.0
network 172.16.15.0
broadcast 172.16.15.255
gateway 172.16.15.1

b- eth1 que se conecta a la subred, no puede tener gateway, es el gateway
lo correcto sería:

# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

c- eth0 en los clientes seria:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

3- Una vez configurada la red, te puedes abocar a configurar iptables
mediante un script

#!/bin/sh
## Ejemplo de script para firewall entre red-local e internet
# Activamos el reenvío para que FORWARD funcione
echo 1 > /proc/sys/net/ipv4/ip_forward

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

## eth0 es el interfaz conectado a internet y eth1 a la LAN
# acceso localhost, le dejamos todo
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde las redes locales
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0/0 -p udp --dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0/0 -p tcp --dport 10000 -j DROP

# Fin del script

4- Sobre iptables:

Un filtro de paquetes es un componente de software con la capacidad para examinar las cabeceras de los paquetes que lo atraviesan y de tomar decisiones, según esas cabecera, sobre el destino de cada uno de los paquetes.
Paquetes con origen remoto y destino remoto: son los paquetes, que actuando como gateway, nuestra máquina tiene que reenviar. Estos paquetes se analizan mediante el filtro de reenvío, llamado FORWARD.
Paquetes con origen remoto y destino local: son los paquetes que las máquinas de cualquier red envían a nuestra máquina. Estos paquetes se analizan mediante el filtro de entrada, llamado INPUT.
Paquetes con origen local y destino remoto: son los paquetes que nuestra máquina envía a otras computadoras. Estos paquetes se analizan mediante el filtro de salida, llamado OUTPUT.
Generalizando un poco los tipos de filtros pueden ser:
MANGLE: reglas de manipulación de paquetes.
NAT: reglas PREROUTING, POSTROUTING de traducción de direcciones. (NAT network address translation).
FILTER: reglas INPUT, OUTPUT, FORWARD
Las decisiones que puede tomar un cada regla de un filtro de paquetes pueden ser, dejar pasar el paquete (ACCEPT), responderle al emisor educadamente que ese paquete no puede pasar (REJECT) o bien simplemente descartarlo como si no hubiera llegado (DROP o DENY).
Dirección de origen
Indica quien es el emisor del paquete, de qué ordenador viene. Lo podremos especificar con una dirección IP, un nombre de host o una dirección de red en formato CIDR (192.168.0.0/24) o en notación clasica (192.168.0.0/255.255.255.0). En iptables podemos especificar la dirección origen con la opción "-s". Si en una regla omitimos la dirección origen equivale a poner 0/0 es decir cualquier dirección. Por ejemplo "-s 192.168.0.0/24" indicaría cualquier dirección con origen en la red de clase C (24 bits de red) 192.168.0.0. Si delante de la dirección añadimos "!" entonces hacemos referencia a cualquier dirección salvo la especificada, es decir, que no sea esa dirección.
Dirección de destino
Indica a quien va dirigido el paquete, a qué ordenador via. También lo podremos especificar con una dirección IP, un nombre de host o una dirección de red en formato CIDR (192.168.0.0/24) o en notación clasica (192.168.0.0/255.255.255.0). En iptables podemos especificar la dirección destino con la opción "-d". Si en una regla omitimos la dirección origen equivale a poner 0/0 es decir cualquier dirección. Por ejemplo "-s 192.168.0.0/24" indicaría cualquier dirección con destino a la red de clase C (24 bits de red) 192.168.0.0. Si delante de la dirección añadimos "!" entonces hacemos referencia a cualquier dirección salvo la especificada, es decir, que no sea esa dirección.
Protocolo
Podemos establecer filtros sobre protocolos concretos, será obligatorio si además especificamos algún puerto. La opción para especificar un protocolo es "-p" y los valores posibles son TDP, UDP e ICMP. El signo "!" antes del nombre del protocolo también se utiliza para negar.
Interfaz de entrada
Podemos especificar un dispositivo de entrada de red concreto con la opción "-i". Por ejemplo "-i eth0" indicaría un paquete que proviene de eth0. Se puede usar un "!". Evidentemente no podremos usar un interfaz de entrada con una regla de salida (OUTPUT).
Interfaz de salida
Podemos especificar un dispositivo de salida de red concreto con la opción "-o". Por ejemplo "-o eth0" indicaría un paquete que sale por eth0. Se puede usar un "!". Evidentemente no podremos usar un interfaz de salida con una regla de entrada (INTPUT).
Puerto origen
Mediente la opción "--sport" podemos especificar un puerto o un rango de puertos si los separamos por ":", por ejemplo [1024:65535] indicaría desde 1025 hasta 65535. Los puertos los podemos especificar por su número o también por el nombre asociado en el fichero /etc/services. Es necesario especificar -p TCP o -p UDP para poder especificar un pueerto origen.
Puerto destino
Mediente la opción "--dport" podemos especificar un puerto o un rango de puertos. Las consideraciones son iguales que para el puerto origen.
Para definir una nueva regla sólo tenemos que decirle a iptables si tiene que insertar la nueva regla en alguna posición (-I numero) o bien simplemente añadirla al final (-A) y la descripción de la regla.

+1
0
-1
Imagen de jalberti
+1
0
-1

Gracias aunque me sigue dando un error de un mal aurgumento que es lo siguiente, al ejecutar las siguientes instrucciones para ejecutar el scrib:

root@EquipoA:/home/equipoa/Escritorio# chmod 777 jaume.sh
root@EquipoA:/home/equipoa/Escritorio# ./jaume.sh
Bad argument `1:1024'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `1:1024'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `10000'
Try `iptables -h' or 'iptables --help' for more information.

sabrias decirme porque me dice esto?

+1
0
-1
Imagen de Gabriel_M
+1
+1
-1

Tal como te puse en el resumen tanto el puerto origen como el destino
llevan dos - - guiones, que en el post si no pones un espacio entre ellos
no se ven, (en el script van los dos guiones juntos)

# Cerramos el rango de puerto bien conocido
iptables -A INPUT -s 0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0/0 -p udp --dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0/0 -p tcp --dport 10000 -j DROP

+1
+1
-1
Imagen de holapollo
+1
0
-1

Aunque la cabecera suene paradójica , pero es literal .
Estaba yo rompiéndome la cabeza con exactamente lo mismo , y me pasaba igual que a jalberti, no estaba viendo que había uno : " - " donde tendría que haber dos: " -- " .
Gracias una vez más , Gabriel.

+1
0
-1