PDF de programación - H-Zine #1

Imágen de pdf H-Zine #1

H-Zine #1gráfica de visualizaciones

Publicado el 24 de Mayo del 2018
523 visualizaciones desde el 24 de Mayo del 2018
909,4 KB
38 paginas
Creado hace 15a (31/08/2008)
- 1 -



Iptables por SoulLost


¿Qué es Iptables?

Sirve para filtrar paquetes tcp/ip mediante reglas estrictamente establecidas (es pocas palabras es un
cortafuegos o firewall).

¿Para qué me demonios me sirve un firewall? Para controlar el tráfico de información o paquetes que
pasan por nuestro ordenador e Internet (incluyendo redes locales).

Bien, ¿cómo obtengo un firewall en Linux? Fácil, solo debes cargar los "módulos" necesarios que te
permitirán realizar cierta actividad con los paquetes que especifiques (Para información sobre los
módulos consultar google.com o la ayuda del kernel), en conjunto con el kernel y el programa "Iptables"
( http://www.iptables.org/ http://www.linuximq.net/ http://l7-filter.sf.net/ ).
Para descargar iptables se puede usar nuestro gestor de paquetes, algunos de los que conozco:

Debian: apt-get install iptables
Gentoo: emerge iptables

Claro también puede optar por compilar el programa a mano o usar paquetes precompilados de ciertas
distros.

¡Demonios!, pero ¿cómo levanto esos mentados módulos? Básicamente estos módulos están ya
disponibles en la mayoría de las distribuciones GNU/Linux que existen en la actualidad..
Para darlos de alta utilizamos la herramienta modprobe, primero antes que nada hay que mirar que
módulos tenemos disponibles con modprobe -l | grep netfilter :


UnderHouse linux # modprobe -l | grep netfilter
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_conntrack.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_nat.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_mangle.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/iptable_filter.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_state.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_limit.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_REDIRECT.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ipt_LOG.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_tables.ko
/lib/modules/2.6.14-gentoo-r5/kernel/net/ipv4/netfilter/ip_nat.ko


Se preguntaran qué módulos necesito. Para esto les recomiendo levantar los módulos principales para
el funcionamiento:


modprobe ip_tables iptable_filter iptable_nat


Conforme estemos asignando nuestras reglas de iptables puede que pida algún modulo y mande algún
error, solo quedaría montar dicho módulo que nos pida.


¿Y si no tengo los módulos? Buena pregunta, pues habrá que modificar el kernel (tema que no nos
corresponde en este momento). Solo como nota hay que entrar a la carpeta del kernel, modificar el
kernel y hacer los cambios correspondientes en nuestro gestor de arranque si es necesario, sería algo
como esto:



cd /usr/src/linux
make menuconfig

##Dejar la siguiente configuración (es la que recomiendo):



- 2 -

2



Networking --->
Networking options --->

[*] TCP/IP networking
[*] IP: multicasting
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
<M> Connection tracking (required for masq/NAT)
<M> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> Connection state match support
<M> Packet filtering
<M> LOG target support
<M> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
<M> Packet mangling
-------------------------------------------------------------------------------
############################################

make && make modules_install && make install



Conceptos básicos

En primera necesitamos saber las políticas que iptables usa por defecto:



UnderHouse soullost # iptables -L
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


Por así definirlas, tenemos tres secciones: INPUT (entrada), OUTPUT (salida) y FORWARD
(Redireccionamiento). Estas por defecto están puestas para aceptar todo el trafico (ACCEPT), ¡bien!,
pues aquí necesitamos saber bien que es lo que queremos:


- Denegar todo y aceptar solo lo que necesitamos
- Aceptar todo y denegar solo lo que se necesita


En este punto ustedes tendrán que idear una estrategia de filtrado, en mi caso les recomiendo denegar
la entrada y el redireccionamiento (INPUT Y FORWARD) y aceptar todo lo que yo mande al exterior
(OUTPUT). Para esto, hacemos lo siguiente:


iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


Quedando:



- 3 -

3





Nomenclatura de Iptables


UnderHouse soullost # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

iptables -A Agrega una regla
iptables -D Elimina una regla
iptables -P Politica por defecto
iptables -R Reemplazar una ragla
iptables -L Lista las reglas actuales
iptables -F Elimina todas las reglas


En las reglas podemos hacer uso de ciertos parámetros que son los siguientes:











-p Potocolo (tcp,icmp,udp,etc)
-s Ip fuente
-d Ip destino
-o Interfaz de salida (ethx, lo, etc)
-i Interfaz de entrada (ethx, lo, etc)
--sport Puerto o rango de puertos fuente
--dport Puerto o rango de puertos destino
-j Acción a tomar ( ACCEPT o DROP, Aceptar o Denegar)


Denegar todo y aceptar solo lo que necesitamos

Quiero creer que esta es la mejor manera de entender las reglas de iptables y por obvió la opción mas
segura para nuestro equipo de computo.

Les muestro mi ip de la tarjeta Ethernet:


soullost@UnderHouse ~ $ su -c "ifconfig eth0"
Password:
eth0 Link encap:Ethernet HWaddr 00:0B:6A:8E:94:D8
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:137 errors:0 dropped:0 overruns:0 frame:0
TX packets:137 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:92963 (90.7 Kb) TX bytes:15155 (14.7 Kb)
Interrupt:11 Base address:0x6f00



Asignamos políticas por defecto



iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP



¿Haciendo ping?

(vale, es como si la tarjeta de red estuviera desconectada).



- 4 -

4





UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2012ms



Aceptando ping al exterior


UnderHouse soullost # iptables -A OUTPUT -s 192.168.1.2 -d 192.168.1.1 -p icmp -j ACCEPT

¿Qué demonios dice lo de arriba? Aceptamos paquetes de salida de la ip 192.168.1.2 (nuestra ip) hacia
la ip 192.168.1.1 del protocolo icmp..

¡¡Excelente!! ¿Hacemos el ping?



UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms



¿Pero qué sucede? Nada, el problema esta en que aceptamos paquetes para enviar pero recuerden
que tenemos cualquier paquete de entrada denegado. En este caso el ping usa el protocolo icmp el cual
envía un paquete para saber si el host esta conectado a la red (echo-request), el host destino una ves
recibido el paquete de pregunta, reenvía otro paquete con el cual contestara a nuestra solicitud
(conocido como echo-reply)…

Agregamos la regla faltante


UnderHouse soullost # iptables -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p icmp -j ACCEPT


Hacemos ping



UnderHouse soullost # ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=30 time=0.286 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=30 time=0.328 ms

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1006ms
rtt min/avg/max/mdev = 0.286/0.307/0.328/0.021 ms


Miramos nuestras primeras dos reglas para que se familiaricen con estos reportes



- 5 -

5





UnderHouse soullost # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- 192.168.1.1 192.168.1.2

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- 192.168.1.2 192.168.1.1


Permitir ping desde el exterior

¿Haciendo telnet?


UnderHouse soullost # telnet 192.168.1.1

Trying 192.168.1.1...



Malo malo, manos a la obra:

UnderHouse soullost # iptables -A OUTPUT -s 192.168.1.2 -d 192.168.1.1 -p tcp --sport 1024:65535 --
dport 23 -j ACCEPT

Aceptamos paquetes de salida de cualquier puerto privilegiado (1024:65535 son puertos que por default
están asignados a ciertos programas o servicios, paquetes enviados fuera de este rango puede ser
inseguros) de mi ip hacia el puerto telnet (23) de la ip 192.168.1.1.

UnderHouse soullost # iptables -A INPUT -s 192.168.1.1 -d 192.168.1.2 -p tcp --sport 23 --dport
1024:65535 -j ACCEPT

Aceptamos paquetes de entrada del puerto 23 de la ip 192.168.1.1 hacia nuestra ip en cualquiera de los
puertos privilegiados.


UnderHouse soullost # telnet 192.168.1.1 Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
SpeedStream Telnet Server


login: as
password:
password: Connection closed by foreign host.


Ejercicio: Permitir que entre desde telnet del exterior

¿Obteniendo Internet?

Vamos estoy atrás de un router el cual me comparte Internet a la red local, por ende necesito tener
comunicación con él...
  • Links de descarga
http://lwp-l.com/pdf11280

Comentarios de: H-Zine #1 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad