Título: Denegar acceso a todos los puertos menos uno en iptables Publicado por: WHK en 9 Mayo 2015, 06:07 am Hola, actualmente en CentOS para denegar el acceso a una ip via iptables lo hago así:
Código: # iptables -I INPUT -s 1.2.3.4 -j DROP && service iptables save Pero, como hago para que esa ip quede bloqueada para todos los puertos excepto el 22? ya que si por algún error me autobaneo no quiero quedar sin acceso a mi propio servidor :-/ a pesar de que el baneo es temporal deberia esperar mucho antes de poder acceder. Tampoco me sirve crear una regla que diga que si es mi ip entonces que no me banee ya que mi ip es dinámica a menos que entre via tunnel por otro servidor a modo de rescate pero no cuento con ese segundo servidor. Por ahi vi una regla con el argumento --destination-port pero como le indico que son todos menos el 22? Puedo crear una regla que prohiba todo el acceso y luego que permita el acceso a esa misma ip al puerto 22? (se me acaba de ocurrir xDDDD) Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: WHK en 9 Mayo 2015, 06:13 am Listo, funcionó :D
Código: # iptables -I INPUT -p tcp -s 1.2.3.4 -j DROP && \ iptables -I INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT && \ service iptables save Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: MinusFour en 9 Mayo 2015, 06:34 am Mucho cuidado con el orden de las reglas, volver a insertar la regla con -I te puede dejar sin conexion. Lo mejor seria dejar la regla con el ACCEPT siempre al inicio y usar iptables -A para agregar la regla al final de la tabla. Tambien puedes dejar una regla para no cortar conexiones establecidas. De esta forma, mientres estes logueado por ssh no te tira.
Código
Mucho cuidado tambien guardando las reglas de iptables. Si reinicias el sistema puedes resetear las reglas de iptables y puedes recuperar rapidamente la conexion. Tecnicamente no es tan riesgoso como cambiar la chain policy a DROP pero es igual de frustrante porque tendrias que obtener una nueva IP. Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: WHK en 9 Mayo 2015, 06:36 am Gracias por el consejo, no sabía que estas reglas se eliminaban al reinicio del sistema, esto pasa a pesar de que guardo las reglas con service iptables save?
Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: MinusFour en 9 Mayo 2015, 14:23 pm Gracias por el consejo, no sabía que estas reglas se eliminaban al reinicio del sistema, esto pasa a pesar de que guardo las reglas con service iptables save? No, si guardas las reglas de iptables, estas persisten a través de reinicios del sistema. Mi punto es que si te quedaste fuera del sistema por una regla de iptables puedes reiniciar el equipo remotamente y volver a conectarte sin problemas. Si guardas las reglas vas a tener que cambiar de ip, acceder al equipo físicamente o si es una instancia controlada por un servicio web usar una shell de rescate, reinstalar el sistema nuevamente, o levantar un ticket. En fin, hay formas de recuperar el sistema. Mi punto es que si no estas seguro que las reglas te van a limitar el acceso completamente, es mejor que no las guardes. Título: Re: Publicado por: yum-kax en 9 Mayo 2015, 16:08 pm WHK, jaja tu forma de plantear la duda y responderte me hizo acordar a esto..
http://www.rubberduckdebugging.com/ No es solo para programación, sino mas bien es un debugging de ideas! Te recomiendo tenerlo frente a tu pc en todo momento! :) Título: Re: Publicado por: engel lex en 9 Mayo 2015, 16:21 pm WHK, jaja tu forma de plantear la duda y responderte me hizo acordar a esto.. http://www.rubberduckdebugging.com/ No es solo para programación, sino mas bien es un debugging de ideas! Te recomiendo tenerlo frente a tu pc en todo momento! :) excelente! XD Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: xv0 en 9 Mayo 2015, 19:49 pm No es mejor, establecer una politica DROP en INPUT y luego dejar paso a las direcciones y puertos convenientes?
Código
Un saludo. Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: MinusFour en 10 Mayo 2015, 02:31 am No es mejor, establecer una politica DROP en INPUT y luego dejar paso a las direcciones y puertos convenientes? Código
Un saludo. El objetivo parece ser denegar a algunos, no permitir a algunos. Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: xv0 en 10 Mayo 2015, 03:03 am Lo se, simplemente dije esto porque seguro que tiene una politica en ACCEPT, desde mi punto de vista y desde el de mucha gente, es mucho mejor tener una politica en DROP, para lo que el quiere hacer.
No colocar un DROP a 1.2.3.4 y luego crear otra con un ACCEPT y el puerto. Solo dije una recomendacion ya se que el problema no va de eso, la proxima no digo nada. Un saludo. Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: WHK en 10 Mayo 2015, 03:51 am Genial!, creo que tengo un pato de goma de mi hijo en el baño xD pero si comienzo a usarlo entonces me voy a ahorrar mas de la mitad de los post en el foro y la gente que pueda tener los mismos problemas no va a encontrar una respuesta :P
Me sale mas fácil hacer un barco de papel, lo pondré al lado de mi monitor. Al final el baneo lo hice baneando la ip por completo y luego habilitandole el acceso al puerto 22 y finalmente guardando las reglas y al final una tarea programada para eliminar las reglas. Código
Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: MinusFour en 10 Mayo 2015, 04:10 am Lo se, simplemente dije esto porque seguro que tiene una politica en ACCEPT, desde mi punto de vista y desde el de mucha gente, es mucho mejor tener una politica en DROP, para lo que el quiere hacer. No colocar un DROP a 1.2.3.4 y luego crear otra con un ACCEPT y el puerto. Solo dije una recomendacion ya se que el problema no va de eso, la proxima no digo nada. Un saludo. No digo que una política DROP no sea mejor, es la manera en la que planteaste la solución. Si puedes usar una política DROP, pero tienes que agregar reglas ACCEPT para tus puertos. Si usas una politica DROP: Código
Pero las reglas para banear las vas a tener que insertar a partir del indice 3. Código
Si pones tus reglas al principio de la tabla puedes perder la conexion porque el DROP pasa antes que el ACCEPT. Si pones tus reglas al final de la tabla el ACCEPT del puerto 80 hace ACCEPT antes que llegue a los drops del puerto 80. Es decir la gente que baneaste puede seguir accediendo al sistema atraves de los puertos que habilitaste. Si usas una poltica ACCEPT: Código
Para banear gente, simplemente agregas al final de la tabla tu regla: Código
En ambos casos: 1.2.3.4 viene siendo tu ip. x.x.x.x viene siendo la ip que quieres banear. La diferencia entre las dos politicas, es que usando una politica DROP es mas restrictiva. Genial!, creo que tengo un pato de goma de mi hijo en el baño xD pero si comienzo a usarlo entonces me voy a ahorrar mas de la mitad de los post en el foro y la gente que pueda tener los mismos problemas no va a encontrar una respuesta :P Me sale mas fácil hacer un barco de papel, lo pondré al lado de mi monitor. Al final el baneo lo hice baneando la ip por completo y luego habilitandole el acceso al puerto 22 y finalmente guardando las reglas y al final una tarea programada para eliminar las reglas. Código
Yo pense que querias agregar solo una regla para que no te banee a ti. En lugar de agregar la regla que permite acceso al SSH por cada IP, mejor simplemente agrega una regla para permitir acceso SSH al principio de la tabla: Código
Igual si los baneas, les estas permitiendo acceso SSH asi que es mejor dejar el acceso abierto a SSH en lugar de agregar una regla nueva por cada IP. Título: Re: Denegar acceso a todos los puertos menos uno en iptables Publicado por: WHK en 10 Mayo 2015, 04:22 am Buena idea, no se me había ocurrido :P
|