viernes, 22 de noviembre de 2013

Bloquear IPs en Windows con IPSec

Hoy vamos a explicar como bloquear IPs o rangos de IPs a nuestro equipo con sistema operativo Windows. Es particularmente útil si tenemos un servidor, ya que evitaremos ataques de denegación de servicio entre otros.

El primer paso es ejecutar la consola de configuración de seguridad local. Desde inicio > ejecutar escribiremos secpol.msc

En la consola seleccionaremos Directivas de seguridad IP en Equipo local. Con el botón derecho en el marco de la derecha, seleccionamos Crear Directiva de seguridad IP


Se abrirá el asistente para directivas de seguridad IP. Ponemos el nombre de la directiva y pulsamos siguiente.


En la siguiente pantalla dejamos marcada "Activar la regla de respuesta por defecto" y pulsamos Siguiente. En la pantalla dejamos activa la opción del protocolo Kerberos y pulsamos siguiente. (es posible que nos muestre un aviso si no formamos parte de un dominio, si lo hace pulsad SI a utilizar esta configuración).

Pulsamos finalizar el asistente y se abre la ventana de propiedades. En ella desmarcamos la casilla "Usar el asistente" y pulsamos "Agregar".


En la ventana "Propiedades de Nueva regla" pulsaremos el botón "Agregar"


Desactivamos el asistente y pulsamos Agregar



En la siguiente pantalla tenemos el meollo de la cuestión:



En el primer desplegable podremos elegir entre varias opciones, entre ellas una dirección IP de origen determinada o toda una subred. En el ejemplo hemos introducido una subred 60.60.0.0 de 16 bits (estamos incluyendo las direcciones desde la 60.60.1.1 a la 60.60.255.255.

En el segundo desplegable seleccionamos "Mi dirección IP" (dado que queremos bloquear el tráfico entrante) y aceptamos. Podemos repetir la operación para incluir tantas direcciones IP como rangos de ellas queramos.

Una vez terminado de introducir las direcciones a bloquear, desde la ventana de propiedades de la nueva regla pulsamos la pestaña "Acción de filtrado" y pulsamos sobre Agregar:


Se abre el asistente, aquí pondremos el nombre de la acción:


Y lo más importante, la acción "Bloquear"


Pulsamos siguiente, seleccionamos la nueva acción y pulsamos aplicar.


Aquí ya hemos creado nuestra regla. Sólo queda asignarla a nuestro equipo para que entre en funcionamiento. Para ello, desde la pantalla de la consola de Configuración de seguridad local hacemos clic con el botón derecho sobre la nueva directiva y seleccionamos "Asignar".


De este modo se bloquearán automáticamente todas las conexiones entrantes del rango seleccionado.

lunes, 18 de noviembre de 2013

Backup de bases de datos PostgreSQL en línea de comandos

Para los que utilicéis bases de datos PostgreSQL es posible que este post os resulte de utilidad. Los que no lo conozcáis os animo a que le dediquéis un tiempo: actualmente es el gestor de bases de datos orientadas a objetos libre más potente del mercado.


Existen varias formas de hacer un backup de una base de datos PostgreSQL, aunque las más usadas son:


  • En entorno gráfico con PgAdmin (software gratuito distribuido junto a PostgreSQL).
  • Vía web si tenemos instalado PHPPgAdmin.
  • Desde línea de comandos (el caso que nos ocupa).
¿Por qué desde línea de comandos? Si administráis servidores os interesará automatizar la tarea mediante un script, de modo que no tengáis que realizar la copia manualmente cada cierto tiempo. 

En la distribución de PostgreSQL existe un ejecutable llamado pg_dump que nos permite realizar la copia de una base de datos a un archivo. La sintaxis es la siguiente:


  • Backup: pg_dump -i -h localhost -p 5432 -U usuario -f archivo.sql NombreBD
  • Restore: psql -p 5432 -U usuario -d NombreBD -f archivo.sql
Estas sentencias presuponen un servidor local, el puerto 5432 (que podemos cambiar a nuestra conveniencia) y el resto de parámetros que modificaremos para conectar con nuestra base de datos (usuario, archivo.sql y NombreBD). Sobra decir que el usuario que utilicemos debe tener permisos en el servidor para realizar copias de seguridad y acceder a la base de datos (recomendamos utilizar el usuario postgres).

Si ejecutamos la sentencia de backup nos aparecerá un prompt para que ingresemos manualmente la clave. Para evitarlo y automatizar la tarea hay una alternativa: eliminar el parámetro -p y establecer temporalmente el valor de la variable PGPASSWORD con la clave del usuario que queramos utilizar (no olvidéis volverla a establecer a una cadena vacía una vez lanzada la sentencia en el script):

  • Linux: PGPASSWORD=miclave
PGPASSWORD=postgres 
pg_dump -U postgres -h localhost basedatos > /mnt/backup/linuxPgbasedatos.sql
PGPASSWORD=
  • Windows: SET PGPASSWORD=miclave
SET PGPASSWORD=miclave
 pg_dump -i -h localhost -p 5432 -U postgres -f c:\backup\windowsPgbasedatos.sql basedatos
SET PGPASSWORD=

Luego ya sólo queda lanzar el script desde el cron (Linux) o el programador de tareas (Windows) y tendremos automatizado el backup de la base de datos.

[Actualizado 06/05/2014]

Si necesitáis transferir el fichero de backup a otro equipo vía FTP no olvidéis establecer el flujo de datos a binario (comando binary de FTP).

Recomendaciones de Alcasoft