viernes, 10 de julio de 2015

Port Forwarding on FortiGate v5.2.3


Ese es la topología del redireccionamiento que explicaré.


Escenario:

Notebook conectada a internet en cualquier lado del mundo.

Forti configurado con Ip pública(WAN): 200.200.200.200 e ip privada (LAN): 192.168.0.1

Web Server con ip privada 192.168.0.100 escuchando en el puerto http 80


Configuración:

1) Primero agregamos una Virtual IP (VIP) en la pestaña Policy & Objects dentro de Objects:



2) Agregamos el nombre de la regla, el comentario, la interface pública, en mi caso la wan1, la external ip (la pública) en mi caso la 200.200.200.200. En mapped ip va la privada 192.168.0.1, tildamos Port Forwarding, seleccionamos TCP y el puerto origen 80-80 y destino 80-80. Luego damos OK:



3) Seleccionamos al lado de Create New, donde aparece la flecha desplegable y creamos un Virtual IP Group como indica la siguiente imagen:



4) Creamos el Virtual IP Group (VIP) con el miembro creado anteriormente: el Webserver-80a80:



5) Ahora nos dirigimos nuevamente a Policy & Objects y luego dentro de Policy a IPv4, seleccionamos Create New:



6) Agregamos la Incoming Interface a la pública, en mi caso la wan1, Source Address: all, en Outgoing Interface la Internal (iface privada), en Destination Address Webserver-80a80 (el VIP Group creado anteriormente), en Service los puertos, en mi caso el HTTP (80), Antivirus en on, Application Control también en on y Enable this policy también habilitada:



7) Probamos ingresar a la ip pública al puerto 80 -> http://200.200.200.200:80 y debería redireccionarnos al webserver interno en el mismo puerto.



jueves, 18 de junio de 2015

Cambio de proxy denegado por el administrador del sistema

Aparece el siguiente mensaje al querer cambiar el proxy en chrome ó en internet explorer?


El acceso a esta característica está deshabilitado por una restricción establecida por el administrador del sistema.



Abrimos el regedit -> Tecla Windows y en "Buscar programas y archivos" escribimos regedit y damos enter:




Vamos desplegando hasta llegar a la ruta y vemos los valores del panel derecho:

HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel



Hacemos un backup exportando la config antes de modificarla por las dudas. Botón derecho sobre la solapa "Control Panel" del panel izquierdo y exportamos con un nombre que recordemos:



Finalmente cambiamos los valores de la derecha a cero qudando así:




Listo, ya podremos cambiar la configuración del proxy de chrome y de internet explorer:



viernes, 5 de junio de 2015

Crontab cada 2 semanas

Esta tarea se ejecuta todos los sábados cada 2 semanas;

# crontab -e
59 22 * * 6 `date +\%W` \% 2 > /dev/null || /root/scripts/reboot.sh

Más detallado lo que hace es lo siguiente:

59 -> Minutos

22 -> Hora

6   -> Sábado (día de la semana)

`date +\%W` \% 2 -> Date con  el +W devuelve la semana del año, por ejemplo esta es la número 22 del año, el %2 es para verificar si es par, es decir que una semana lo ejecuta y la otra no.

Envía el resultado en /dev/null y ejecuta el comando  /root/scripts/reboot.sh si es verdadero el resultado.

No se olviden de poner el \ delante de los % porque sino no funciona en el crontab.

martes, 14 de abril de 2015

Cambiar el reloj de hardware y que el linux lo tome

Cambio el reloj de hardware:
root@linuxirigillo:/etc# hwclock --set --date "14 Apr 2015 08:41"

Verifico el cambio hecho:
root@linuxirigillo:/etc# hwclock
Tue 14 Apr 2015 08:41:09 AM GMT-3  -0.484876 seconds

Se lo asigno al Sistema Operativo:
root@linuxirigillo:/etc# hwclock -s

lunes, 19 de enero de 2015

Ver fecha de acceso en access.log del Squid



Por ejemplo si queremos ver el acceso de los usuario al squid a las 8:15 del día Lunes 19 de Enero del año actual:

# cat /var/log/squid/access.log | perl -pe 's/(\d+)/localtime($1)/e' | grep "Mon Jan 19 08:15"

viernes, 5 de diciembre de 2014

Expiró licencia de VMware 5.5 free

mv /etc/vmware/license.cfg /etc/vmware/license.cfg.05-12-2014
cp /etc/vmware/.#license.cfg /etc/vmware/license.cfg
/etc/init.d/vpxa restart

restart el VMware server

miércoles, 26 de noviembre de 2014

Balanceo de Carga y Alta Disponibilidad en un Webserver con Apache y Perl (versión 2)



En este enlace http://redes-seguridad.blogspot.com.ar/2014/07/balanceo-de-carga-y-alta-disponibilidad.html les mostré como hacer el balanceo aleatorio entre 2 webservers, detectaba si uno de ambos estaba caído enviaba las peticiones web's al otro:

Pero quedaba pendiente verificar el "CPU load" antes de hacer la redirección y basarse en la carga en vez de redireccionar aleatoria-mente. Con esta última versión del script cubrimos ese tema:


Escenario:

Tenemos 2 servidores web, cada uno escuchando en el mismo puerto la misma aplicación.

El script irá distribuyendo al webServer que tenga menor "Carga de CPU", en caso que alguno tenga el puerto bajo, es decir que la aplicación esté baja reenviará las peticiones al webserver que esté arriba.

Es decir, pueden ocurrir las diferentes situaciones:

1) Ambos servidores UP y con la aplicación ok, testea al de menor uso de CPU y redirige la petición a este.
2) Servidor1 caído ó la aplicación DOWN => redirecciona al Servidor2.
3) Servidor2 caído ó la aplicación DOWN => redirecciona al Servidor1.
4) Ambos Servidores caidos, en mi caso no hago nada, pero puedo mostrar algún mensaje que deseen.



Script:


#!/usr/bin/perl

##Descomentar la siguiente linea si desea ver lo que hace en vez de ejecutar la redirección:
#print "content-type: text/html \n\n";

##Escanea al WebServer1 el puerto 80 y verifica si está abierto, guarda en la variable $VAL1 si el comando fue correcto ó no:
$result1 = `nmap -sT -P0 WebServer1-p 80|grep open`;
$VAL1=$?;

##Escanea al WebServer2 el puerto 80 y verifica, idem al anterior, pero guarda el valor en $VAL2:
$result2 = `nmap -sT -P0 WebServer2 -p 80|grep open`;
$VAL2=$?;

##Concatena los valores de $VAL1 y $VAL2 en $VAL:
$VAL=$VAL1.$VAL2;

##Descomento las siguientes líneas si deseo ver los valores que obtienen las variables, recuerde que también debe descomentar la línea del conten-type que aparece al inicio del script:
#print "VAL1: ", $VAL1, "";
#print "VAL2: ", $VAL2, "";
#print "VAL:   ", $VAL,   "";

##Para pruebas hardcodeadas modificar y descomentar las siguientes variables:
## El valor 00     => ambos servidores escuchan, ver por CPU cual es el de menor uso
## El valor 0256   => redirige a WebServer01 (WebServer01 caido)
## El valor 2560   => redirige a WebServer02 (JDE05 caido)
## El valor 256256 => ambos webservers caido
#$VAL="00";
use Switch;
switch ($VAL)
{
 case "00"
 {
  ##Tener en cuenta que con el usuario de root no funciona, por eso utilicé el de apache, recuerde generar las keys ssh para el usuario www-data:
  my $CPU_SERVER1 = `ssh www-data'\@'ServerNagios /ruta/al/script/de/nagios/libexec/check_nt -H WebServer1 -v CPULOAD -l 5,80,90 | cut -d' ' -f3 | cut -d'%' -f1`;

  my $CPU_SERVER2 = `ssh www-data'\@'ServerNagios /ruta/al/script/de/nagios/libexec/check_nt -H WebServer2 -v CPULOAD -l 5,80,90 | cut -d' ' -f3 | cut -d'%' -f1`;

  ##Descomentar si desea ver valores, recuerde descomentar la content-type al inicio del script
  #print "SERVER1: ", $CPU_SERVER1, " ";
  #print "SERVER2: ", $CPU_SERVER2, " ";

  ##Evalua quien tene menor uso de CPU: 
  if ( $CPU_SERVER1 > $CPU_SERVER2)
  {
   ##Tener en cuenta que esto redirecciona, si descomenta el content-type lo mostrará por pantalla   
   print "Location: http://WebServer2:80/aplicacion\n\n";
  }
  else
  {
   ##Tener en cuenta que esto redirecciona, si descomenta el content-type lo mostrará por pantalla   
   print "Location: http://WebServer1:80/aplicacion\n\n";
  }
 }
 case "0256"    { print "Location: http://WebServer1:80/aplicacion\n\n"; }
 case "2560"    { print "Location: http://WebServer2:80/aplicacion\n\n"; }
 case "256256"  { print "Ningun webserver (WebServer1 y WebServer2) escucha en el puerto 80" }
 else           { print "Valor no contemplado en el Perl de Load Balance" }
}