elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  iptables permitir http y dns
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: iptables permitir http y dns  (Leído 8,077 veces)
patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
iptables permitir http y dns
« en: 26 Febrero 2015, 13:42 pm »

Hola estoy aprendiendo a usar iptables y tengo esto:

Citar
iptables -P OUTPUT DROP
iptables -P INPUT DROP

iptables -A OUTPUT -j ACCEPT -p udp --dport 53
iptables -A INPUT -j ACCEPT -p udp --sport 53

iptables -A OUTPUT -j ACCEPT -p tcp --dport 80
iptables -A INPUT -j ACCEPT -p tcp -sport  80


Quiero bloquear todo y permitir solo http y dns pero con wireshark solo salen paquetes dns pero sin respuesta

Saludos


« Última modificación: 26 Febrero 2015, 14:50 pm por patilanz » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: iptables permitir http y dns
« Respuesta #1 en: 26 Febrero 2015, 16:20 pm »

Tienes destination y source port alrevez.

Cuando tu envias una peticion al servidor HTTP por ejemplo, los puertos se ven asi:

Código:
Source Port: 49900 [Puerto efimero]
Destination Port: 80

Cuando el servidor recibe la respuesta, los puertos ser intercambian:
Código:
Source Port: 80
Destination Port: 49900 [Puerto efimero]

Lo puedes comprobar con tu wireshark.

Tambien seria conveniente que agregues una regla para tu loopback:

Código
  1. iptables -I INPUT 1 -i lo -j ACCEPT

Edit: ¿Esto es para un servidor con HTTP y DNS? Si esto es de lado del cliente (requests en lugar de replies), si deberias poder hacer un nslookup.

Edit 2:: DNS tambien usa TCP 53.


« Última modificación: 26 Febrero 2015, 19:47 pm por MinusFour » En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: iptables permitir http y dns
« Respuesta #2 en: 26 Febrero 2015, 22:32 pm »

Lo estoy viendo con wireshark y cuando me conecto al servidor HTTP el puerto de destino es 80 y el me contesta con sport 80 intercambiando. El OUTPUT seria el envió (dport 80) y el INPUT la respuesta (sport 80) o no ?

El loopback es algo como localhost ?

Citar
¿Esto es para un servidor con HTTP y DNS? Si esto es de lado del cliente (requests en lugar de replies), si deberias poder hacer un nslookup.

El servidor es HTTP bueno es cualquier pagina web y luego el DNS para obtener la ip de 8.8.8.8 de google. A que te refieres ?

Citar
DNS tambien usa TCP 53.

Ahora lo pruebo

@Edit: Funciona con los puertos intercambiados pero no entiendo porque. En teoría el OUTPUT tiene que ser para los paquetes salientes y cuando un paquete DNS sale lo hace con puerto destino 53 y sport aleatorio, bueno con un rango. Y cuando llega por INPUT lo hace con sport 53 y dport el sport de antes.
« Última modificación: 26 Febrero 2015, 22:47 pm por patilanz » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: iptables permitir http y dns
« Respuesta #3 en: 27 Febrero 2015, 01:09 am »

Si tu eres el servidor y te interesa solo permitir las conexiones entrantes. Entonces los paquetes a tu servidor van a llegar asi:

Código:
Source Port: 49900 (efimero)
Destination Port: 80

Y la regla que hace match a eso puede ser esta:

Código:
iptables -A INPUT -p TCP --dport 80 -j ACCEPT/DROP/ETC

Esto es si tu eres el servidor.

Enseguida tu como servidor respondes con paquetes asi:

Código:
Source Port: 80
Destination Port: 49900

La regla que puede hacer match a esto puede ser:

Código:
iptables -A OUTPUT -p TCP --sport 80 -j ACCEPT/DROP/ETC

Como cliente los puertos son los mismos pero estas haciendo cosas diferentes. El cliente esta enviando la peticion (OUTPUT) y el servidor esta recibiendo la peticion (INPUT). Una vez que la peticion le llega al server, este te envia la respueta (OUTPUT) y el ciente recibe la respueta (INPUT).

La peticion:

Código:
CLIENTE ---------------------> SERVIDOR
(OUTPUT)      SPORT:49900     (INPUT)
              DPORT:80

La respuesta:

Código:
CLIENTE <--------------------- SERVIDOR
(INPUT)       SPORT:80         (OUTPUT)
              DPORT:49900                           
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: iptables permitir http y dns
« Respuesta #4 en: 27 Febrero 2015, 16:35 pm »

Debería de ser muy simple pero no funciona.
Con udp 53 sport 53 no obtiene la ip, con udp 53 dport 53 tampoco, con udp sport 53 y dport 53 SI.  :huh: :huh:

Luego si hago esto:

Citar
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -j ACCEPT -p tcp
iptables -A INPUT -j ACCEPT -p udp --dport 53
iptables -A INPUT -j ACCEPT -p udp --sport 53

Obtiene la ip pero no se conecta al servidor.
Lo compruebo con telnet foro.elhacker.net 80
No lo entiendo
En línea

xv0


Desconectado Desconectado

Mensajes: 1.027



Ver Perfil
Re: iptables permitir http y dns
« Respuesta #5 en: 27 Febrero 2015, 23:44 pm »

Hola

Tienes que dejar paso a paquetes ya establecidos y en "conexo". Creo que con estas reglas bastaria.

Citar
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Bueno con telnet y demas seria cambiar por el 23 y demas, si quieres te explico con detalle las reglas.

Un saludo.
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: iptables permitir http y dns
« Respuesta #6 en: 28 Febrero 2015, 05:27 am »

Yo realmente no he tenido que pasar paquetes establecidos, relacionados o nuevos. Con esas mismas reglas me ha funcionado perfectamente:

Código:
[m1n054@manjaro ~]$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:https

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

Código:
[m1n054@manjaro ~]$ sudo iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Realmente deberia agregar el 53 para TCP tambien, pero con eso soy capaz de postear esto.

Código:
[m1n054@manjaro ~]$ curl -I http://foro.elhacker.net
HTTP/1.1 200 OK
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No permitir que se inyecte dll?
Programación Visual Basic
resu 0 1,300 Último mensaje 3 Agosto 2006, 09:07 am
por resu
iptables permitir ip
Seguridad
matiasramos 1 2,746 Último mensaje 25 Abril 2012, 21:43 pm
por r32
En brutus AET2,¿Que diferencia hay entre HTTP (basic auth) y HTTP(form)?
Hacking
robertito_prado 1 3,408 Último mensaje 7 Julio 2012, 13:48 pm
por robertito_prado
Permitir solo algunos puertos con iptables
Seguridad
matiasramos 0 2,393 Último mensaje 28 Junio 2013, 22:25 pm
por matiasramos
Mi clase HTTP + winsock peticion HTTP ejemplo
Programación C/C++
patilanz 3 3,004 Último mensaje 28 Diciembre 2014, 00:30 am
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines