[SOLUCIONADO] Consulta sobre iptables + solicitud revisión de firewall.

  • 4 Respuestas
  • 2670 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ignorante

  • *
  • Underc0der
  • Mensajes: 19
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Buenas a todos, este es mi primer post.Estoy con mi primer firewall y ya encuentro problemas, en mi pc me bloquea el internet, y ni con iptables -F puedo restaurarlas. Debe tener muchos errores que espero que puedan corregir y explicar con paciencia.
Ademas una consulta especifica: Cuando debe especificarse la interface (lo,eth0,etc...)?
Muchas gracias por su tiempo.


CODIGO:

Código: Bash
  1. #!/bin/bash
  2. #Remove all rules
  3. iptables -F
  4.  
  5.  
  6. # Policy Drop
  7. iptables -P INPUT DROP
  8. iptables -P OUTPUT ACCEPT
  9.  
  10. #Allow Apache (80/443)
  11. iptables -A INPUT -m state --state NEW -p tcp  --dport 80 -j ACCEPT
  12. iptables -A INPUT -m state --state NEW -p tcp  --dport 443 -j ACCEPT
  13. #Allow http-proxy
  14. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 8080 -j ACCEPT
  15. #Allow port 8443 (Plesk)
  16. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 8443 -j ACCEPT
  17. #FTP
  18. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 21 -j ACCEPT
  19. ####MAILING####
  20. #Allow SMTP
  21. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 25 -j ACCEPT
  22. #Allow IMAP
  23. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 143 -j ACCEPT
  24. #Allow IMAPS
  25. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 993 -j ACCEPT
  26. #Allow SMTPS
  27. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 465 -j ACCEPT
  28. #Allow ESMTPS
  29. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 587 -j ACCEPT
  30. #Allow 110
  31. iptables -A INPUT -m state --state NEW -p tcp  --dport 110 -j ACCEPT
  32. ########DATABASE####
  33. #Allow Mysql
  34. iptables -A INPUT -p tcp -i eth0 --dport 3306 -j ACCEPT
  35. #Allow PostgreSQL
  36. iptables -A INPUT -p tcp -i eth0 --dport 5432 -j ACCEPT
  37. #Allow DNS
  38. iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
  39. iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
  40. ########## R1soft CDP System ###############
  41. iptables -A INPUT -p tcp -m tcp -s xx.xx.xx.xx --dport 1167 -j ACCEPT
  42.  
  43.  
  44.  
  45. #Allow Nexpose
  46. iptables -A INPUT -m state --state NEW -p tcp -i eth0 --dport 3780 -j ACCEPT
  47.  
  48. ##Redirect SSH to port 50683##
  49. iptables -A PREROUTING -t nat -p tcp -d 127.0.0.1 --dport 22 -j DNAT -to 127.0.0.1 --dport 50683
  50.  
  51.  
  52. #We tell iptables to add (-A) a rule to the incoming (INPUT)- SSH works on port 50683 instead 22.
  53. iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
  54. iptables -A INPUT -p tcp -m tcp -s xx.xx.xx.xx --dport 50683 -j ACCEPT
  55. iptables -A INPUT -p tcp -m tcp -s xx.xx.xx.xx --dport 50683 -j ACCEPT
  56. iptables -A INPUT -p tcp -m tcp -s xx.xx.xx.xx --dport 50683 -j ACCEPT
  57. iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recent --set --name SSH -j ACCEPT
  58. iptables -A INPUT -p tcp --dport 50683 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
  59. iptables -A INPUT -p tcp --dport 50683 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
  60. iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recent --set --name SSH
  61. iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -j SSH_WHITELIST
  62. iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
  63. iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
  64.  
  65.  
  66.  
  67.  
  68. #iptables -A PREROUTING -t nat -p tcp -d 127.0.0.1 --dport 22 -j DNAT -to 127.0.0.1:50683
  69.  
  70. #Reject
  71. iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
  72. iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
  73.  
  74. #flood
  75. iptables -N FLOOD
  76. iptables -A FLOOD -m --limit 2/s --limit-burst 5 -j RETURN
  77. iptables -A FLOOD -j DROP
  78.  
  79. iptables -A INPUT -j FLOOD
  80. iptables -A INPUT -p tcp  --dport 80 -j ACCEPT
  81. #HTTP requests limit to 20
  82. iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 25 --connlimit-mask 24 -j DROP
  83.  
  84. #ALLOW ALL OUTPUT TRAFFIC
  85. iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  86.  
  87.  
  88. iptables -L -n
  89. iptables-save |  tee /etc/iptables.test.rules
  90. iptables-restore < /etc/iptables.test.rules
  91. #service iptables restart
  92.  
« Última modificación: Enero 07, 2016, 09:07:41 pm por EPSILON »

Desconectado Cl0udswX

  • *
  • Ex-Staff
  • *****
  • Mensajes: 878
  • Actividad:
    0%
  • Reputación 4
  • La fisica es el sistema operativo del universo.
  • Skype: cl0udzwx
  • Twitter: @cl0udswzsequre
    • Ver Perfil
    • cl0udswz - Sequre
Normalmente lo que hacemos con iptables siempre es aceptar las conexiones que nos interesan y negar el resto, no se en que tipo de entorno estes usando iptable (empresa, produccion, uso personal, etc..) por lo cual no sabria decirte si esta bien ó mal configurado.

Leete este sencillo articulo para que te orientes:

Solo los usuarios pueden ver los links. Registrate o Ingresar

Saludos y cuenta que tal todo.
El talento se parece al tirador que da en un blanco que los demás no pueden alcanzar; el genio se parece al tirador que da en un blanco que los demás no pueden ver.


Desconectado ignorante

  • *
  • Underc0der
  • Mensajes: 19
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Cl0udswX , muchas gracias por responder, tengo dias luchando con ese script del #%$^$#.

Como ves lo primero que hice fue definir las politicas como bien dijiste,rechazando todo lo entrante por defecto y permitiendo lo saliente.
A eso agregue reglas de excepcion permitiendo acceso entrante a los servicios necesarios: apache, r1soft, mysql, smtp,imap, ftp, imaps,etc...
Ademas redirijo el puerto 22 al 50683. Aplico unas reglas contra flood y ddos.

El firewall es para un server en produccion, aunque no llegue a probarlo ahi,porque no pasa de mi maquina, y no encuentro el error.
Ademas sigo teniendo la duda,que tampoco esta explicada en el link que compartiste, en que casos se especifica la interface y en que casos no?.

Gracias de nuevo,un saludo.

Desconectado Stiuvert

  • *
  • Moderator
  • Mensajes: 2678
  • Actividad:
    6.67%
  • Reputación 15
  • Skype: [email protected]
  • Twitter: @Stiuvert
    • Ver Perfil
Hola,

La mejor forma es especificando la "interface" ya que si no lo haces seguramente lo hará de forma automática o bien para todas las interfaces. Sabiendo que interface estas utilizando estaría bien especificarlo ya que además puedes configurar reglas con distintas interfaces.

Condiciones principales para Iptables:

-p –protocol → la regla se aplica a un protocolo.
-s –src –source → la regla se aplica a una IP de origen.
-d –dst –destination → la regla se aplica a una Ip de destino.
-i –in-interface → la regla de aplica a una interfaz de origen, como eth0.
-o –out-interface → la regla se aplica a una interfaz de destino.

Si encuentras errores puedes probar de eliminar la linea o lineas conflictivas de la siguiente forma:

Código: Bash
  1. iptables -nL --line-number

Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 23.4.18.17 0.0.0.0/0
2 ACCEPT all -- 23.4.18.18 0.0.0.0/0
3 ACCEPT all -- 23.4.18.19 0.0.0.0/0
4 ACCEPT all -- 23.4.18.20 0.0.0.0/0
5 ACCEPT all -- 23.4.18.21 0.0.0.0/0

Una vez que conocemos el número de linea que queremos eliminar y la cadena a la que pertenece simplemente utilizamos el modificador:

-D chain número

Código: Bash
  1. iptables -D INPUT 4

Una vez que ejecutemos el comando, veremos que la linea deseada a desaparecido y las reglas se han reenumerado.

Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 23.4.18.17 0.0.0.0/0
2 ACCEPT all -- 23.4.18.18 0.0.0.0/0
3 ACCEPT all -- 23.4.18.19 0.0.0.0/0
4 ACCEPT all -- 23.4.18.21 0.0.0.0/0


Saludos

Desconectado ignorante

  • *
  • Underc0der
  • Mensajes: 19
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
Muchas gracias Stiuvert, habia consultado en otros lados y nunca me respondieron tan claramente.  Ademas me aclaraste como encontrar yo mismo los errores.
Gracias che, espero volver a postear en este thread con otras consultas.


 

[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 24525
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 9998
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 11323
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 14287
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 13602
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon