viernes, 14 de agosto de 2009

Restaurar conexion luego de insertar una regla erronea con iptables

Usualmente solemos agregar una regla en iptables, en la cual nos deja afuera del server. Si nuestro servidor esta alojado en otro pais y no disponemos de que nadie realice el cambio en la regla para volver acceder podemos utilizar el comando iptables-apply.

Un ejemplo de uso podria ser el siguiente:

Pensemos que queremos bloquear el acceso ssh para todos las PCs menos nuestra pc, si por casualidad nos equivocamos o ponemos mal algun filtro nos quedaremos sin acceso al server.

Guardamos las reglas de iptables en un archivo de texto:

#iptables-save > ipt.txt

Editamos dicho archivo:

#vim ipt.txt

En el INPUT denegamos el ssh, no tengamos miedo, ya que hasta que no restablezcamos no perderemos coneccion. Tengamos en cuenta que no restauraremos con el comando iptables-restore, sino que lo haremos con iptables-apply.

Dentro del ipt.txt pondremos lo siguiente dentro del la cadena INPUT:

-A INPUT -p tcp --dport 24 -j DROP

Guardamos y salimos:

:wq

Ahora indicaremos el tiempo que tendremos para que el servidor vuelva a restablecer las reglas antes que perdamos la conexion ssh. Tengamos en cuenta que si vemos un mensaje para volver validarlo, el cual pedira confirmacion, si no lo vemos perderemos la conexion. Recuerden que luego del tiempo que le ponemos mediante el parametro -t volveremos a poder conectarnos.

Ejecutamos el util comando:

#iptables-apply -t 30 ipt.txt

Vemos que se aplicaron bien las reglas y perdemos conexion a la terminal:

Applying new ruleset... done.

Luego de 30 segundos u otra cantidad que le especifiquemos con el -t volveremos a poder conectarnos.

Con itables -L veremos que volvio hacia atras el ultimo cambio que realizamos.

En cambio si hubiesemos colocado la regla correcta nos aparecera en pantalla un mensaje, al cual le indicaremos que si y aplicara los cambios sin volver a atras los cambios

Applying new ruleset... done.
Can you establish NEW connections to the machine? (y/N) y
... then my job is done. See you next time.

No hay comentarios: