Publicado el Dejar un comentario

Sincronizar la hora entre Windows y Linux

Si tienes instalada alguna distribución GNU/Linux conviviendo con Windows, es muy probable que te resulte molesto (y necesario) sincronizar la hora entre Windows y Linux.

Este “detalle” (porque no es un problema realmente), se debe a que estos ambos sistemas operativos, gestionan de manera distinta el tiempo: en el caso de una gran mayoría de distribuciones GNU/Linux, se utiliza los esquemas UTC (Universal Time Coordinated) o GMT (Greenwich Mean Time) que no son otra cosa que formas universales de “comprender” el tiempo y zonas horarias; en otro sentido, los sistemas operativos Windows, utilizan los esquemas de “Hora Local” (Localtime) que al día de hoy, se encuentran asistidos por NTP (Network Time Protocol) para “sincronizar” relojes entre dispositivos. La hora local, no es más que la “hora” de una zona horaria particular que “establece” el usuario o bien, que establece tu servidor NTP en función de la región que le hayas indicado.

Para serte honesto, el modelo UTC es un esquema de gestión del tiempo universal más apropiado que garantiza interoperabilidad.

Lo anterior, es la razón por la cual, si tienes una instalación Windows con GNU/Linux conviviendo, es muy seguro que tengas Dual Boot instalado (también conocido como Arranque Dual) por lo que habrás notado que en tu distribución GNU/Linux obtienes la hora exacta sin mayor inconveniente pero, al arrancar sesión en Windows, obtienes una hora distinta que no concuerda con tu zona horaria.

Para resolver esto, tienes 2 opciones:

Opción A: Obligar a Windows a utilizar el esquema de Coordinación de Hora Universal (UTC)

En mi caso, esta sería mi opción favorita porque representa la oportunidad de hacer que tu sistema operativo respete y se ajuste a los estándares de sentido de comunidad y convivencia. Además, será capaz de actualizarse sin problemas durante los cambios de horario de invierno y verano, o simplemente, durante al paso a una zona horaria distinta.

Para configurar este esquema, presiona la combinación de tecla Windows + R y escribe “regedit” para abrir el editor de registro de Windows:

Iniciamos el editor de registro de Windows.

Ahora, busca dentro de los registros, la siguiente clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Modificamos la zona horaria.

A continuación, haz clic con el botón derecho del mouse sobre la carpeta TimeZoneInformation y crea un valor dword al cual deberás poner por nombre “RealTimeIsUniversal”:

Añadimos un valor DWORD…
Sincronizar la hora entre Windows y Linux mediante opción "RealTimeIsUniversal".
RealTimeIsUniversal

Ahora, haz doble clic sobre el valor “RealTimeIsUniversal” creado y asígnale el valor de “1”:

Una vez hecho lo anterior, deberemos ahora desactivar la sincronización automática de hora en Windows; para ello, escribe en la barra de búsqueda de Windows el comando CMD y selecciona la opción “Ejecutar como administrador”:

sc config w32time start= disabled

Si todo ha funcionado bien, observarás un mensaje como este, ¡y es todo!

Nota: Si en algún momento deseas revertir los cambios, solo debes el valor de la entrada “RealTimeIsUniversal” a “0” para volver a trabajar con la hora local.

Opción B: Obligar a GNU/Linux a utilizar el esquema de Hora Local (localtime)

En GNU/Linux el tema es más simple, ya que solo tienes que ejecutar el siguiente comando como administrador:

sudo timedatectl set-local-rtc 1

¡Y eso es todo!

Publicado el Dejar un comentario

Configuración de un Servidor Proxy Squid + Script de Iptables

En este tutorial, te enseñaré a realizar la configuración de un servidor proxy Squid + script de iptables.

Actualización 20210619.- Esta es una entrada de una publicación antigua en donde, para tener contexto de la época, casi todas las conexiones a sitios web se hacían mediante HTTP (80) y muy pocas sobre HTTPS (443). A pesar de ello, es muy probable que este script y archivo de configuración siga funcionando, así como también, te puede servir de base y referencia para jugar con tus propias configuraciones. KW.

Contexto

Resulta que cuando recién llegué a laborar en una organización, la misma tenía una red de aproximadamente 60 computadoras con una conexión a internet tipo ADLS de 2048 kbps (2 mbps) de bajada, y 256 de subida (0.25 mbps). Como ya imaginarán, la velocidad de conexión era lentísima, por lo cual me dí a la tarea de configurar un servidor Proxy Squid con reglas de Iptables para que pudieramos todos trabajar a gusto, bloquear algunas urls para los usuarios ociosos (juegos, pornografía, videos), etc. En fin, en ese entonces, trabajé sobre OpenSuSE 10.0 como sistema operativo y vale, ahora que tengo Internet en casa, me he configurado un servidor Proxy para mi red casera.

En fin, con todo lo anterior, pongo en sus manos una modesta configuración para Squid 2.6 STABLE5 sobre Debian 4 Etch junto con su respectivo Script de IPTables para que lo echen a andar en su casa o red. Debo mencionar que la configuración de estos servicios, podrían resultar ser no tan sencillos para el usuario novato, más sin embargo, les comentaré lo siguiente:

¿Qué es un servidor Proxy?

En el ámbito de las redes informáticas, el término proxy hace referencia a un programa o dispositivo que realiza una acción en representación de otro. La finalidad más habitual de un servidor proxy, es el de permitir el acceso a Internet a todos los equipos de una organización cuando sólo se puede disponer de un único equipo conectado, esto es, una única dirección IP.

Fuente: http://es.wikipedia.org/wiki/Servidor_proxy

¿Qué es y para qué funciona el programa Squid?

Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de páginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.

Fuente: http://es.wikipedia.org/wiki/Squid

¿Qué es Netfilter/Iptables?

Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en Linux.

El componente más popular construido sobre Netfilter es iptables, una herramientas de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traducción de direcciones de red (NAT) para IPv4 o mantener registros de log. El proyecto ofrecía compatibilidad hacia atrás con ipchains hasta hace relativamente poco, aunque hoy día dicho soporte ya ha sido retirado al considerarse una herramienta obsoleta. El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de espacio de usuario y librerías.

Iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de seguimiento de conexiones, o que, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de Linux actuales.

Fuente: http://es.wikipedia.org/wiki/Iptables

Utilidad y funcionamiento

Ahora bien, se preguntarán seguramente, ¿para qué sirve Squid + Iptables en la red de una casa, empresa u organización? Mmmm, de mucho. Intentaré explicarlo de manera sencilla:

Imaginen que tienen 20 computadoras conectadas en su red mediante un switch directamente al modem ADSL de la compañía de su preferencia (Prodigy Infinitum de Telmex, por ejemplo), y resulta que esos 20 usuarios requieren entrar a una página como Hotmail, la cual tiene un peso específico (imágenes, documentos html, animaciones, etc.) de 300 kb cada vez que se conectan a ella. Como muchos seguramente sabrán, todos los navegadores destinan una carpeta en su disco duro para almacenar información en algo que llaman “caché”, el cual es un concepto que tiene como principal objetivo, “acelerar” la descarga en el futuro, y solo para esa PC cuando accedan más adelante a la misma página Web. Así pues, bajo nuestro escenario, si tenemos 20 usuarios que entren a Hotmail al mismo tiempo, estaríamos “descargando” entre todos, 6000 kb de información (20 usuarios X 300 kb = 6,000 kb) o lo que es lo mismo, 5.8 megas de información aproximadamente. ¿Qué sucedería en esta situación? Básicamente, que la conexión se alentaría para todos aún y cuando estén bajando todos lo mismo.

configuración de un servidor proxy squid

Y viene aquí la magia de Squid e Iptables (no puede vivir el uno sin el otro, eh), ya que, suponiendo que hemos destinado una vieja PC para hacerla de “proxy” y/o “router” mediante un servidor DHCP (ya platicaré de él en un post posterior), y conectándole un switch de 20 puertos para esas 20 pc´s, lo que sucedería es que la primer PC de nuestra red que intente establecer una conexión a Hotmail, le enviaría la petición a nuestro proxy para que haga una consulta,  en la cual éste revisaría si está “almacenada” en la caché del servidor, y en caso de no ser así, se conectaría a Internet para “descargar” todos los elementos básicos del sitio (imágenes, scripts, animaciones, etc.), con el fin de devolver “la misma respuesta” a todas las demás computadoras. En otras palabras: si una computadora ha “accedido” con anterioridad a Hotmail, habrá “descargado” seguramente a nuestro proxy esos 300 kbs de los que hablaba, evitando “saturar” nuestra con “otras conexiones” similares, ahorrándonos así 5700 kb.

Instalación de un Servidor Proxy Squid

En mi caso, tengo una PC HP Pavilion a110m con un procesador AMD Atlhon a 1.67 mhz, 512 megas de memoria RAM, dos tarjetas de red PCI y disco duro de 40 gb. Mis tarjetas de red están configuradas de la siguiente manera:

  • ETH0 – Tiene una IP del tipo 192.168.1.XX, y está conectada directamente a mi a mi Modem ADLS Prodigy Infinitum
  • ETH1 – Tiene una IP fija del tipo 192.168.0.254, la cual conecta a mi switch (y la hace de servidor DHCP en la clase 192.168.0.x) y que funciona de “puerta de enlace” a los equipos que tengo conectados.

Para instalar Squid en Debian 4 Etch, solo tienen que hacer lo siguiente:

apt-get install squid

Y ¡listo!

Solo deberán acceder a la carpeta:

/etc/squid/

Renombrar el archivo squi/d.conf y “copiar” o dejar en su lugar el mío (o el que ustedes deseen configurar manualmente).

En el caso de mi Script de Iptables, yo lo he guardado en el directorio:

/etc/init.d/fw_squid

Y le he asignado permiso de ejecutable (chmod 777 /etc/init.d/fw_squid)

Ahora, hago que se cargue al inicio, agregándolo en el nivel 3 mediante el enlace simbólico:

ln -s /etc/init.d/fw_squid /etc/rc5.d/S20fw_squid

Y listo!

Caramba, en verdad podría elaborar todo un tutorial sobre esto, pero, vale, por cuestión de tiempo me resulta un poco difícil. Sin embargo, pongo a su disposición mis archivos de configuración a fin de que puedan hacer uso de ellos; en verdad, deseo que les sirvan:

Con los siguientes comandos:

  • /etc/init.d/squid restart – reiniciamos el servidor proxy squid
  • tail -fv /var/log/squid/access.log – “miran” en tiempo real las páginas que visitan las PC´s de su red
  • /etc/init.d/fw_squid.sh – ejecutan el script de iptables
  • iptables -L -n – sirve para ver qué puertos tienen cerrados, abiertos, bloqueados, etc.

¡Hasta pronto!

PD.- Se me olvidaba. Mi script de Iptables para proxy transparente con Squid, es también una joyita que los sacará de muchos apuros. En otra entrega les platicaré más sobre él. ¡Saludos!