Título: iptables permitir http y dns Publicado por: patilanz 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 Título: Re: iptables permitir http y dns Publicado por: MinusFour 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] Cuando el servidor recibe la respuesta, los puertos ser intercambian: Código: Source Port: 80 Lo puedes comprobar con tu wireshark. Tambien seria conveniente que agregues una regla para tu loopback: Código
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. Título: Re: iptables permitir http y dns Publicado por: patilanz 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. Título: Re: iptables permitir http y dns Publicado por: MinusFour 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) 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 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 La respuesta: Código: CLIENTE <--------------------- SERVIDOR Título: Re: iptables permitir http y dns Publicado por: patilanz 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 Título: Re: iptables permitir http y dns Publicado por: xv0 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. Título: Re: iptables permitir http y dns Publicado por: MinusFour 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 Código: [m1n054@manjaro ~]$ sudo iptables -S 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 |