Publicado el Dejar un comentario

¿Cuántos usuarios soporta Moodle?

Si eres administrador de plataformas de e-learning, director de una escuela, administrador de sistemas o profesor, seguramente te habrás preguntado en alguna ocasión cuántos usuarios soporta Moodle. No hay una respuesta simple o sencilla para ello ya que depende de varios factores por lo que en este artículo, te ayudaré a tener una mayor comprensión del tema para que evalúes y elijas correctamente lo que se ajuste a tu presupuesto.

Servidores y Servidores Web

Un servidor, tradicionalmente definido, es un equipo de cómputo conectado a una red de computadoras, con software configurado para tal propósito que tiene la capacidad de atender o dar respuesta a todas y cada una de las peticiones que recibe a través de la misma, según las especificaciones o protocolo utilizado y configurado para ello.

¿Cuántos usuarios soporta Moodle?
El primer servidor web de la historia

Por ejemplo, cuando Tim Berners Lee creó las especificaciones del protocolo HTTP para dar paso a la World Wide Web, configuró una computadora NeXT para desplegar y servir páginas web o “de hipertexto” a sus compañeros científicos en el CERN de Suiza, algo novedoso y completamente revolucionario.

En este sentido, el puerto asignado al protocolo HTTP fue el puerto 80. No obstante lo anterior, previo a esto, ya existía el puerto 20 para conexiones mediante consola a través de Telnet, puerto 21 para transferencia de archivos mediante FTP, puerto 22 para conexiones cifradas mediante consola mediante SSH, puerto 25 para correo electrónico y así sucesivamente. Para que un servidor o equipo de cómputo permitiese la conexión a estos puertos en una red, era necesario configurar en dicho equipo cada uno de ellos mediante programas que se ejecutan en memoria como “servicios”.

Así, en nuestra comprensión de qué es un “servidor”, podemos decir que cada puerto o protocolo tiene como misión y propósito proveer un “servicio” o conjunto de “servicios” a nuestros “clientes” según el protocolo que utilice. Así, un servidor web, puede ser entendido como un programa (el servidor web más popular es Apache seguido de Nginx mediante el puerto 80 (HTTP) o puerto 443 (HTTPS), el cual provee a nuestros usuarios del acceso a páginas web planas o de hipertexto (HTML) o bien, páginas generadas a través de procesadores de páginas de hipertexto como PHP, Phyton, etc.

Si un cliente (usuario, visitante, cibernauta, etc.) realiza una petición a nuestro servidor, de manera técnica lo que podemos decir es que solicita una respuesta a un servicio previamente configurado (servidor web Apache o servidor web Nginx) que está funcionando en ese momento en memoria para responder y dar respuesta a ello.

Con esto en consideración, y gracias a la generosidad de los entusiastas del software libre, hoy en día un servidor web puede cubrir múltiples funciones y satisfacer múltiples demandas.

¿Qué recursos necesito para implementar un servidor web?

Por ello, es importante mencionar que para que un sitio web complejo pueda funcionar basado en GNU/Linux, Apache, PHP y MySQL o MaríaDB (un servidor LAMP), a grandes rasgos, necesitarás de:

  • Un servidor físico o virtual con conexión a Internet, espacio en disco duro suficiente, memoria RAM y otros recursos de misión crítica como procesador, sistema operativo, etc.
  • Una dirección IP pública estática (o dinámica, más complejo de usar, pero no imposible de configurar) para tu servidor físico o virtual.
  • Un software que actúe como servicio de servidor web como Apache o Nginx para el procesamiento e interpretación de páginas HTML mediante el protocolo HTTP.
  • Un procesador o intérprete como PHP que facilite la generación dinámica de páginas de hipertexto.
  • Un servicio que actúe como servidor de base de datos como MariaDB, PostgreSQL o MySQL.

Adicionalmente, si quieres tener URLs amigables para tu sitio web, requerirás de:

  • Un nombre de dominio contratado del tipo misitioweb.com.
  • Un servidor DNS que redireccione tu dominio contratado a la dirección IP pública estática (o dinámica) de tu servidor física o virtual.

Todo esto, en conjunto, requiere de una adecuada instalación instalación y configuración de paquetes y librerías que permitan optimizar y garantizar la disponibilidad de tus servicios, así como una correcta resolución de peticiones de los clientes, usuarios o visitantes de tu sitio web.

Un servidor LAMP (Linux, Apache, MySQL y PHP) es una alternativa simple, económica y eficiente para instalar Moodle.

Con todo, ¿cuántos usuarios soporta Moodle?

En este punto, vamos a resolver tu duda y tratar de responder lo más objetivamente: antes de preguntarte cuántos usuarios soporta Moodle, debes tratar de encuadrar y definir primero tu problemática o escenario deseado en los siguientes términos:

  1. ¿Qué experiencia de usuario deseas brindar a tus alumnos y profesores?
  2. ¿Cuántos usuarios en total tienes programado atender?
  3. ¿Cuántos de estos usuarios serán concurrentes o se conectarán simultáneamente? ¿En qué momentos podrías tener alta demanda que derive en cuellos de botella?
  4. ¿Qué tanta tolerancia tendrías a respuestas lentas del servidor en horas pico?
  5. ¿Cuáles son tus perspectivas de crecimiento en el corto, mediano y largo plazo?

Con lo anterior en consideración, te daré un dato: Moodle es un LMS (Learning Management System) súmamente robusto que ofrece una gran cantidad de recursos para diseñar y programar nuestros cursos. Para que te des una idea, el código fuente o paquete comprimido de la versión de Moodle 4.2+, tiene un tamaño de archivo de 62.2 MB en formato tar.gz. Estos datos son determinantes para calcular cuántos usuarios soporta Moodle.

Última versión de Moodle en https://download.moodle.org/releases/latest/.
Este es el LMS de CulturaLibre.ent.

Ello no quiere decir que esos recursos ya descomprimidos estarán simultáneamente procesándose completa y enteramente en la memoria RAM del servidor; sin embargo, es un dato de referencia que no debemos perder de vista.

Con ello, más o menos desde la versión 1.x de Moodle, surgió una recomendación sobre la cantidad de memoria RAM que debe tener un servidor web para atender N número de usuarios: por cada 10 – 20 usuarios concurrentes, se recomienda tener disponibles 1 GB de memoria RAM.

A grandes rasgos, si tienes una escuela con 100 alumnos y esperas que los 100 se conecten al mismo tiempo (concurrencia), deberías de tener 5 GB de memoria RAM + unos 2 o 4 GB adicionales para al sistema operativo de tu servidor web Apache o Ngix.

Ahora bien, es probable que tus usuarios no estarán conectados las 24 hrs. del día de manera concurrente o simultánea sino que existan “eventos” más o menos “dispersos” a lo largo del tiempo por lo que, a manera de “riesgo calculado” podrías decidir decir: voy a destinar 2 GB de memoria RAM para Moodle + 2 GB para mi sistema operativo con los cuales atenderé a 100 usuarios en total, pero entiendo y comprendo que 40 usuarios concurrentes están garantizados.

Este es un escenario o panorama con riesgos calculados y tolerados.

¿Cuál es el escenario que te resulta ideal? ¿Qué tanta tolerancia tienes a probables demoras, fallos o errores?

En ambientes GNU/Linux, existen múltiples formas, si no tienes memoria RAM física pero sí un disco duro de estado sólido, para conseguir “memoria” adicional pero eso, será motivo de otro artículo.

Calcular el número de usuarios que soporta Moodle

Te dejo aquí un par de calculadoras en línea que he elaborado para que pueda obtener un estimado de:

  • Cantidad de usuarios concurrentes en Moodle que soporta un servidor web en función de la cantidad de memoria RAM disponible.
  • Cantidad de memoria RAM que necesitas para atender a N número de usuarios de Moodle de manera concurrente.

¡Utiliza las barras de desplazamiento!

{{ thankYouPage.title }} {{ thankYouPage.description }}
{{ thankYouPage.order_title }} {{ getOrder.orderId }}
Two columns
Vertical
Horizontal
Calcular memoria RAM necesaria para el número de usuarios recurrentes que necesito
Resumen
Name Total
"{{getWooProductName}}" has been added to your cart
{{ thankYouPage.title }} {{ thankYouPage.description }}
{{ thankYouPage.order_title }} {{ getOrder.orderId }}
Two columns
Vertical
Horizontal
Calcular cantidad de usuarios concurrentes de Moodle que soporta mi memoria RAM disponible
Resumen
Name Total
"{{getWooProductName}}" has been added to your cart

Conclusiones

Como has podido observar, el performance o desempeño esperado de un servidor web y, sobre todo, de una instalación de Moodle, depende de una gran cantidad de factores como la cantidad de dinero que estás dispuesto a invertir en los recursos necesarios de servidor (memoria, disco, ancho de banda), riesgos tolerados, concurrencia de usuarios estimada, etc.

Ahora bien, cada instalación de Moodle es distinta así como el comportamiento de los usuarios.

Generalmente la concurrencia de usuarios suele darse en periodos de exámenes, por ejemplo, en las noches (un hábito que he observado sobre las nuevas generaciones o personas que trabajan en mi experiencia), etc.

Por lo anterior, en casi la totalidad de casos no es necesario destinar y garantizar el 100% de cumplimiento en recursos del servidor. Al final del día, la decisión es tuya; tú decides cuánto estás dispuesto a invertir y determinar qué calidad en la experiencia de usuario deseas brindar a tus usuarios.

Si deseas profundizar más sobre el tema, te recomiendo los siguientes artículos de Moodle:

Publicado el Dejar un comentario

Activar permisos de escritura a particiones Windows desde Linux

Si eres usuario de una computadora con dual boot instalado para trabajar con Windows y Linux, es muy probable que hayas tenido el problema de no poder “escribir”, crear directorios, copiar, pegar o mover archivos en la propia partición donde está instalado Windows por lo que en esta ocasión, te mostraré cómo configurar tu equipo para activar permisos de escritura a particiones Windows desde Linux.

Contexto

Desde el lanzamiento de Windows 8, Microsoft implementó una función un poco “interesante” denominada “fastboot” que tiene como propósito “iniciar” el sistema operativo de manera más rápida para una mejor experiencia de usuario. No obstante lo anterior, desde un punto de vista, “fastboot” es en realidad un “modelo” de “hibernación” en donde, cuando tú lanzas la señal de apagar el equipo, Windows “guarda” un “estado” de tu sistema operativo (kernel y drivers) en un archivo de hibernación que, posteriormente, cuando “enciendes” nuevamente tu máquina, no hace más que “recuperar” ese estado para “iniciar” más rápido.

De cierta manera, esta “función” nos “ayuda” a que tengamos la “apariencia “impresión” de que el inicio de Windows es más rápido pero, para los linuxeros como nosotros, nos impide trabajar con otros sistemas operativos con normalidad ya que, por seguridad, si una partición contiene un sistema operativo “hibernado”, por defecto, GNU/Linux, no te permitirá escribir o realizar cambios en dicho disco o partición.

Para activar permisos de escritura a particiones Windows desde Linux, un primer paso es abrir la utilidad de discos.
En este ejemplo, podemos ver una partición NTFS que tiene una instalación de Windows sobre ella; esta partición, se encuentra montada y disponible en la ruta /media en mi disco.
No puedo crear carpetas en Linux en una partición Windows.
Sin embargo, aquí puedes observar que mi menú contextual para crear carpetas, documentos o pegar archivos, están desactivados por default, con lo cual solo puedo “leer” pero no realizar cambios ni modificaciones al sistema de archivos.

¿Cómo activar permisos de escritura a particiones Windows en Linux para crear carpetas, copiar archivos, etc.?

Si tienes un caso como el que te muestro en este artículo, y una vez que estés seguro de que aún y cuando tu partición se encuentre montada y legible, lo primero que tienes que hacer es reiniciar tu computadora e iniciar Windows.

Sin importar si tienes Windows 10 o Windows 11, lo primero que te recomiendo hacer es escribir la palabra:

Elegir un plan de energía

Te aparecerá algo como esto, solo deberás hacer clic sobre la opción correspondiente.

Elegir un plan de energía para desactivar el inicio rápido de Windows.
Elegir un plan de energía para desactivar el inicio rápido de Windows.

Con lo anterior, se abrirá una ventana y sección específica de Opciones de energía en el antiguo Panel de Control de Windows como este:

Elegir la acción del botón de inicio/apagado.

Aquí, solo deberás hacer clic en la columna izquierda de tu ventana sobre la opción “Elegir la acción del botón de inicio/apagado”. Hecho lo anterior, te aparecerá lo siguiente:

Desactivamos la opción de "Activar inicio rápido (recomendado)".

Ahora, en esta pantalla, para poder hacer modificaciones en las opciones, haz clic en la opción “Cambiar la configuración no disponible actualmente”, con lo cual, se habilitarán las casillas de verificación de las opciones “Activar inicio rápido (recomendado)”, “Suspender”, etc.

Desactivamos la opción de "Activar inicio rápido (recomendado)".

Con lo anterior, te serán habilitadas las casillas de verificación del apartado de “Configuración de apagado”.

Desactivamos la opción de "Activar inicio rápido (recomendado)".

Aquí, solo tienes que desactivar la opción “Activar inicio rápido (recomendado)” para inhabilitar ese “inicio híbrido” de Windows…

Desactivamos la opción de "Activar inicio rápido (recomendado)".

…y solo restaría hacer clic en “Guardar cambios” y reiniciar tu equipo.

Ahora, de regreso a nuestra sesión en GNU/Linux, puedes montar tu partición y verificar que con lo anterior, ya estarán habilitadas las opciones de crear una carpeta nueva, copiar, cortar, renombrar, mover a la papelera o eliminar cualquier archivo o carpeta.

Desactivando la opción de "Activar inicio rápido (recomendado)" en Windows ya podremos crear carpetas, copiar, mover y eliminar archivos en Linux.
Desactivando la opción de "Activar inicio rápido (recomendado)" en Windows ya podremos crear carpetas, copiar, mover y eliminar archivos en Linux.
Desactivando la opción de "Activar inicio rápido (recomendado)" en Windows ya podremos crear carpetas, copiar, mover y eliminar archivos en Linux.

Con todo lo anterior, espero que puedas disfrutar de este truco y conseguir que tu experiencia en GNU/Linux al momento de trabajar archivos te brinde la mejor experiencia posible.

GNU/Linux es un gran proyecto que bien vale mucho la pena usar y aprovechar para mantener la seguridad y estabilidad de tu vida digital.

Publicado el Dejar un comentario

Encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux

Encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux

La línea Predator de computadoras tipo laptop de Acer, incorporan un software llamado PredatorSense a través del cual, como usuarios, podemos controlar el encendido o apagado (manual o automático) de nuestra computadora. Desafortunadamente, PredatorSense solo funciona en Windows por lo que, aquellos usuarios que utilizamos sistemas operativos alternativos basados en GNU/Linux, no podemos disponer de una herramiento oficial para ello. Por ello, en esta ocasión, echaremos mano de algunos hacks y utilidades que he encontrado por ahi para conseguir encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux. ¡Veamos!

PredatorSense para Windows

Encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux

Como te lo comentaba al inicio del post, PredatorSense no tiene otra función más que la de controlar el ventilador de tu computadora de manera manual o automática y en distintos grados de intensidad.

Si realizas una instalación limpia de Windows y borraste por alguna razón la partición de drivers y utilidades de tu PC, es recomendable que descargues e instales esta herramienta. El link del sitio es: https://www.acer.com/ac/es/ES/content/predatorsense; no obstante, descárgala directamente desde la sección de utilidades al realizar una búsqueda de drivers para tu modelo específico de computadora.

Encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux

Bien. Como te comentaba: no existe una herramienta oficial de Acer para hacer funcionar los ventiladores o fans de nuestra laptop en GNU/Linux, lo cual es decepcionante. Para serte franco, y desde mi punto de vista, los fabricantes tendrían que ofrecer las herramientas y detalles técnicos mínimos para aprovechar las funciones de nuestros equipos sin importar su sistema operativo (que al día de hoy, bien puede ser GNU/Linux, Windows e, inclusive, Android) de nuestra PC.

Sin embargo, siempre hay buenos samaritanos que buscan explorar y explotar al máximo el poder del pingüino por lo que, gracias a un hack, es posible tener cuando menos la función de “encender” o “apagar” nuestro ventilador con el uso de herramientas externas.

NBFC (NoteBook Fan Control) para Linux

NBFC es una herramienta multiplataforma que es capaz de ajustar configuraciones específicas para controlar los ventiladores de distintos modelos de computadora.

El link oficial del proyecto es: https://github.com/hirschmann/nbfc

Primeros pasos: instalar NBFC en Linux

Para el desarrollo de este tutorial, estaré trabajando bajo GNU/Linux Ubuntu 22.04 por lo que, algunos de los comandos que veas por aquí, tendrás que adaptarlos si es que usas distribuciones distintas o alternativas. No obstante, no creo que tengas mayores problemas.

En primer lugar, vamos a instalar el conjunto de herramientas Mono para correr programas compatibles desarrollados en .NET en Linux. Para ello, agregamos el repositorio de Mono a nuestro directorio de fuentes de software, actualizamos el repositorio e instalamos Mono.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

sudo apt update && sudo apt upgrade -y

sudo apt install mono-complete
Instalación de Mono en GNU/Linux Ubuntu 22.04

Ahora, como siguiente paso, deberemos instalar Git en nuestra computadora:

sudo apt install git

Hecho lo anterior, procederemos a descargar NBFC en nuestro directorio Descargas/nbfc con el siguiente comando:

git clone --depth 1 https://github.com/hirschmann/nbfc.git ~/Descargas/nbfc

Una vez hecho lo anterior, procederemos a crear un directorio en /opt/nbfc y, posteriormente, a copiar los archivos que descargamos mediante Git de nuestro directorio ~/Downloads/nbfc.

sudo mkdir /opt/nbfc

sudo cp -r ~/Descargas/nbfc/Linux/bin/Release/* /opt/nbfc/

sudo cp ~/Descargas/nbfc/Linux/{nbfc.service,nbfc-sleep.service} /etc/systemd/system/

cd /opt/nbfc

Con esto, ¡ya tienes nbfc disponible en tu computadora!

Encender y apagar ventiladores de Acer Predator Helios 300 PH315-51 en Linux

Ahora, para encender los ventiladores de nuestra laptop Acer Predator Helios 300 PH315-51 en Linux, según el post “Fan control in Linux” de Namangup, solo tenemos que ejecutar dentro del directorio /opt/nbfc el siguiente conjunto de comandos:

sudo modprobe -r ec_sys

sudo modprobe ec_sys write_support=1

sudo mono ec-probe.exe write 0x21 0x64

sudo mono ec-probe.exe write 0x22 0x0c

Ahora bien, Namangup especifica 2 comandos adicionales en donde 00 es el valor más bajo y 64 el valor más alto para indiciar la intensidad del ventilador dentro de [value].

En este sentido, los comandos en cuestión son:

ec_probe write 0x37 0x[value]

ec_probe write 0x3a 0x[value]

En mi experiencia personal, pude encender el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux con este comando:

sudo mono ec-probe.exe write 0x21 0x64

…y pude apagar el ventilador de una laptop Acer Predator Helios 300 PH315-51 en Linux con este otro:

sudo mono ec-probe.exe write 0x21 0x00
Probando valores mediante ec-probe de nbfc

Si estos comandos no te funcionan, es probable que esté funcionando como servicio nbfc por lo que, puedes verificarlo así:

sudo systemctl status nbfc
Consulta de estado del servicio nbfc en Linux

Si el servicio está ejecutándose (running), puedes detenerlo ejecutando el siguiente comando:

sudo systemctl stop nbfc
Consulta de estado del servicio nbfc en inux

Y vuelve a intentar con los comandos “sudo mono ec-probe.exe write 0x21 0x64” y “sudo mono ec-probe.exe write 0x21 0x00” para encender y apagar los ventiladores.

pIndependientemente de que estos comandos realmente funcionan, para serte honesto, no me fue posible elegir otras intensidades o velocidad de las revoluciones de los ventiladores.

Por ello, exploré más opciones y encontré la posibilidad de utilizar archivos de configuración previamente desarrollados con las opciones disponibles, hallazgos y experimentos personales de diversos desarrolladores y entusiastas.

Utilizar nbfc con opciones preconfiguradas

Como te lo comentaba: debes saber que nbfc viene por defecto con distintas configuraciones preconfiguradas para comenzar a trabajar de inmediato.

Antes de continuar y comenzar a experimentar opciones preconfiguradas, debemos activar nbfc como servicio mediante el siguiente comando:

sudo systemctl enable nbfc --now

Para asegurarte de que esté activo lanza una comprobación así:

sudo systemctl status nbfc

Si está activo, deberá mostrarse por ahí la palabra “active (running)”.

Consulta de estado del servicio nbfc en inux

Hecho lo anterior, la forma más fácil de averiguar qué configuración podría funcionar en tu computadora es que ejecutes dentro del directorio /opt/nbfc el siguiente comando:

sudo mono nbfc.exe config -r
Consulta de lista de configuraciones recomendadas de nbfc en Linux para mi laptop

…e inmediatamente se te desplegará una lista recomendaciones de configuraciones prefabricadas para distintos tipos de computadora.

En mi caso, como tengo una computadora Acer Predator Helios 300 PH315-51, la configuración que más se le podría parecer es la de la Acer Predator G3-572 por lo que, para activarla de inmediato, solo debes de ejecutar:

sudo mono nbfc.exe config -a "Acer Predator G3-572"

Y sería todo. Con esto, habrás conseguido implementar el servicio de encendido automático del ventilador de tu computadora Acer Predator Helios 300 PH315-51 de manera eficiente y en automático en tu computadora.

Ahora, si así lo deseas, puedes obtener información sobre la configuración actual de nbfc tecleando lo siguiente:

sudo mono nbfc.exe status -a
Consulta del estado de la configuración aplicada mediante nbfc en Linux

Lo anterior, resulta muy útil ya que así puedes probar distintas configuraciones y experimentar.

Para saber más

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.

Así, Network Time Protocol (NTP) es un protocolo de Internet para sincronizar los relojes de los sistemas informáticos a través del enrutamiento de paquetes en redes con latencia variable, y el UTC se obtiene a partir del Tiempo Atómico Internacional, un estándar de tiempo calculado a partir de una media ponderada de las señales de los relojes atómicos, localizados en cerca de 70 laboratorios nacionales de todo el mundo.

Debido a que la rotación de la Tierra es estable, pero no constante y se retrasa con respecto al tiempo atómico, UTC se sincroniza con el tiempo medio de Greenwich (obtenido a partir de la duración del día solar), al que se le añade o quita un segundo intercalar cuando resulta necesario, siempre a finales de junio o diciembre. La decisión sobre los segundos intercalares la determina el Servicio Internacional de Rotación de la Tierra y Sistemas de Referencia, basándose en sus mediciones de la rotación de la Tierra..

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

Recordar el último sistema operativo en Linux

Si eres instalaste alguna distribución de GNU/Linux en tu computadora y la configuraste para convivir junto con Windows, seguramente te podrá resultar “molesto” que tu distribución sea la primera en iniciar cada que enciendes tu computadora; por ello, para que tu computadora pueda recordar el último sistema operativo en Linux, solo debes seguir los siguientes pasos:

1.- Abre una sesión de terminal y edita el archivo /etc/default/grub

sudo nano /etc/default/grub

2.- Una vez abierto, verás algo como esto:

Aquí, deberás cambiar la línea..

GRUB_DEFAULT=0

…por la línea:

GRUB_DEFAULT=saved

…y deberás añadir también la línea:

GRUB_SAVEDEFAULT=true

…y guardar los cambios de tu archivo.

Te recomiendo mucho verificar que escribas correctamente las líneas para evitar problemas en la reconfiguración del arranque de inicio; revisa bien antes de guardar cambios.

Si todo está correcto, tu archivo del cargador de arranque GRUB deberá verse algo así:

recordar el último sistema operativo

3.- Ahora, solo resta indicarle a Linux que aplique los cambios en el cargador de arranque ejecutando el siguiente comando:

sudo update-grub2

¡Y listo! Tu cargador de arranque estará listo y programado para iniciar y recordar el último sistema operativo con el que iniciaste la computadora.

Publicado el Dejar un comentario

Configurar un servidor de archivos Samba en Ubuntu

En casi cualquier institución educativa, organización, empresa, negocio u hogar, es muy común que tengamos alguna computadora o equipo que ya no utilicemos, se encuentre un poco obsoleto, o simplemente esté en desuso. Por ello, te voy a enseñar a configurar un servidor de archivos Samba en Ubuntu con el propósito de que puedas recuperar y darle nueva vida a ese dispositivo.

Veamos: en el ámbito de las redes de área local en donde conviven computadoras con Windows instalado, siempre ha resultado de gran utilidad la posibilidad que crear carpetas compartidas mediante las cuales, podamos transferir fácilmente documentos, guardar música, crear respaldos de información, etc.

En este sentido, si bien es cierto que tanto Mac como Windows disponen esta función de manera nativa o bien, existen alternativas en la nube como NextCloud (un día de estos haremos un tutorial sobre ello), también es cierto que puedes configurar un servidor de archivos Samba independiente asociado a cuentas de usuario para agregar una capa de seguridad independiente a la de tu sistema operativo, accesible desde Internet, y que cumple estándares para “crear” unidades compartidas de red.

Instalación de Samba

Para lograr lo anterior, y partiendo del punto de que dispones de una instalación de GNU/Linux Debian, Ubuntu, LinuxMint o derivadas, lo primero que tienes que hacer es realizar la instalación de los paquetes de Samba. Para ello tecleamos:

sudo apt install samba

Configuración de Samba

Ahora, crearemos una cuenta de usuario en nuestro sistema operativo (para nuestro caso, crearé el usuario “samba”) mediante el siguiente comando:

sudo adduser samba

Solo deberás asignarle una contraseña y completar algunos datos (si así lo deseas) para identificar y completar información de tu usuario:

Tip: si en algún momento en el futuro deseas cambiar la contraseña a tu usuario, solo deberás teclear algo como esto:

sudo passwd samba

Ahora, si todo ha salido bien, es momento de modificar el archivo de configuración de Samba que se ubica en /etc/samba/smb.conf; para ello, utilizaremos el editor de texto nano, con lo cual es pertinente teclear:

sudo nano /etc/samba/smb.conf

A continuación, verás una pantalla como esta:

Configurar un servidor de archivos Samba

Solo debes ir al final del archivo y añadir la siguiente configuración:

[Samba]
comment = Servidor de Archivos Samba
path = /home/samba
guest = no
browseable = yes
read only = no
create mask = 0775
directory mask = 0775
valid users = %S

Guarda los cambios en nano (presionando CTRL + O y Y) y regresemos a la consola (presionar letra Q). Con ello, deberemos ahora agregar el usuario Samba al servidor de archivos Samba (valga la redundancia) mediante el siguiente comando:

smbpasswd -a samba

Al hacer lo anterior, te pedirá que ingreses una clave de usuario de Samba; asimismo, puedes ver en todo momento el estado del servicio Samba en tu computadora tecleando el comando:

sudo service smbd status

…o bien, puedes reiniciar el servicio ejecutando el siguiente comando también:

sudo service smbd restart

¿Cómo conectarte a tu servidor de archivos Samba desde Windows?

Si has seguido los pasos anteriores, tu servidor Samba está listo para funcionar; para acceder al mismo desde Windows, lo primero que tienes que saber es la IP que tiene asignada dentro de tu red de área local. Para ello, ejecuta el comando IP en Linux:

ip a

En el caso del presente ejemplo, la IP que tiene mi computadora con Samba es la 192.168.52.128; así, solo tienes que abrir una ventana del Explorador de Windows y teclear algo como sigue y presionar Enter:

\\192.168.52.128\samba

Es muy importante que utilices la diagonal invertida; en tu teclado, la puedes obtener presionando la tecla ALT DERECHA + la tecla ? (la que está justo a la derecha del cero). Si todo ha resultado correcto, inmediatamente se te desplegará un cuadro de información como el que sigue:

Aquí, solo resta ingresar el nombre de usuario y contraseña que configuraste al inicio, y activar la opción “recordar credenciales”, si así lo deseas, para evitar tener que teclearla en cada ocasión que desees acceder. Con esto, ¡ya tienes listo tu servidor Samba para almacenar archivos!

Añadir tu servidor Samba como una unidad de disco de red

Hasta el paso anterior, tenemos un servidor Samba funcional. No obstante, resulta ser muy cool el poder añadir mi servidor de archivos como “una unidad de red” en mi explorador en Windows.

Para hacer esto, es muy fácil: con una ventana del explorador de archivos abierta, haz clic con el botón derecho del mouse sobre el icono “Red” y selecciona la opción “Conectar a una unidad de red”.

Acto seguido, Windows te solicitará que asignes una letra a tu “nueva” unidad de disco, así como la ruta de acceso al “recurso compartido”. Para ello, deberás ingresar la IP y nombre de usuario de tu servidor Samba; en mi caso:

Unidad: Z:
Carpeta: \\192.168.52.128\samba

¡Y listo! Sólo deberás teclear nuevamente tu nombre de usuario

y contraseña creados en cada ocasión que desees acceder si es que no activaste la opción “Recordar credenciales”.

Si en algún momento deseas desconectar tu red, solo presiona botón derecho sobre una unidad de red existente, y selecciona la opción “Desconectar”.

¡Espero que te sirva!

Publicado el Dejar un comentario

Configurar una tarjeta de red con WPA desde la línea de comandos en Ubuntu

configurar una tarjeta de red con WPA desde la línea de comandos

En mi oficina, tengo una vieja laptop a la cual, el monitor de cuando en cuando deja de funcionar sin forma de volver a encenderlo nuevamente. Con ello en consideración, decidí tomar esta laptop para configurarme un modesto servidor conUbuntu Server 14.04 LTS en el cual tengo habilitado Apache, PHP y MySQL principalmente con la cual te mostraré cómo conigurar una tarjeta de red con WPA desde la línea de comandos en Ubuntu.

Es pertinente comentar en este que punto que para el presente tutorial, procedí a realizar una instalación limpia de Ubuntu Server 14.04, configuré mi tarjeta de red, particiones y demás, pero al concluir el proceso de reinicio posterior a la instalación.

Así, para lograr que Ubuntu “inicie” y se “conecte” automáticamente a una red WPA, tenemos que seguir los siguientes pasos desde la consola o línea de comandos:

1.- Averiguamos en primer lugar el nombre de nuestra interface de red inalámbrica (generalmente es wlan0):

iwconfig

2.- Creamos el archivo de configuración del demonio de administración de redes wpa_supplicant…

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

…y guardamos dentro del mismo los siguientes valores:

ctrl_interface=/var/run/wpa_supplicant
network={
ssid="NOMBRE-DE-RED-WIFI"
key_mgmt=WPA-PSK
psk="CONTRASEÑA-WIFI"
}

3.- Ahora, iniciamos el demonio wpa_supplicant mediante el siguiente comando:

sudo wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -B

4.- “Levantamos” nuestra tarjeta de red…

sudo ifconfig wlan0 up

5.- Pedimos ahora una dirección IP al servidor DHCP activo:

sudo dhclient wlan0

6.- Con ello, si hacemos un ping a google.com, deberías de obtener ya una respuesta. Pero bien, para que nuestra configuración se cargue en cada reinicio, abrimos el archivo /etc/network/interfaces…

sudo nano /etc/network/interfaces

…y nos aseguramos de añadir lo siguiente:

auto wlan0
iface wlan0 inet dhcp
wpa-ssid NOMBRE-DE-RED-WIFI
wpa-psk CONTRASEÑA-WIFI

7.- Para comprobar que el demonio wpa_supplicant se iniciará automáticamente en cada inicio del sistema, ejecutamos los siguientes comandos:

sudo /etc/init.d/networking stop
sudo /etc/init.d/networking start

¡Y es todo!

Si deseas profundizar mucho más en el tema u obtener información para realizar un proceso similar para redes WEP, te recomiendo hacer clic en este enlace, el cual te llevará a un excelentísimo artículo que habla con gran detalle sobre este proceso.

Publicado el Dejar un comentario

Bloquear accesos por país con Firewall CSF

Bloquear accesos por país con Firewall CSF

Para todos aquellos que en algún momento tengan la necesidad de desarrollar actividades de administración de un servidor Web bajo GNU/Linux, descubrirán que Internet es un entorno más que propicio tanto para la colaboración o distribución de contenidos, como también, para prácticas maliciosas o ataques informáticos por lo que seguramente te resultará de gran utilidad el aprender a bloquear accesos por país con firewall CSF.

En este sentido, les comento que en mi práctica profesional, y concretamente, para el caso de una tienda en línea administrada con Magento, comencé a notar una baja en el performance impresionante, al punto tal en que las peticiones al servidor, se resolvían muy lentamente.

En este contexto, una solución “rápida” y “lógica” era incrementar los recursos del VPS contratado (más memoria RAM, más procesador), con el respectivo costo asociado.

Al revisar los logs de Apache (siempre es una buena práctica, algo tediosa) y las estadísticas del sitio en mi panel de control (con AW Stats o Webanalizer) y las visitas de Google Analytics, descubrí que tenía visitas en varias horas del día, y con distinta intensidad, del robot del buscador Chino llamado Baidu.

Con esta información en consideración, mi primer “movimiento” lógico, fue deshabilitar la indexación del agente/bot Baidu en el home de mi servidor, pero, el problema persistía: Baidu maneja diversos agentes (de contenidos, de imágenes, de video, etc.) para indexar un sitio, y para serles francos, aún y cuando Baidu tiene documentadas las medidas para el manejo de sus bots mediante el archivo robots.txt (puedes consultarlas aquí: http://help.baidu.com/question?prod_en=master&class=498&id=1000973), me dio la impresión de que sus bots no respetaban las instrucciones contenidas en el mismo, por lo cual, teniendo en consideración que el público de la tienda en línea era solo mexicano, procedí a realizar un bloqueo mediante reglas de un Firewall basado en software, inicialmente a China, con posibilidades de extenderlo a todo el mundo y permitir solo IP´s de México y Estados Unidos. Es importante destacar que Baidu, tiene una “página” en la cual uno puede “retroalimentar” y reportar incidentes; la liga es: http://webmaster.baidu.com/feedback/index. Aquí puedes encontrar más información sobre el “bloqueo” a Baidu Spider mediante el archivo robots.txt: http://www.baidu.com/search/robots_english.html

Consideraciones

Este “truco” te funcionará si tienes una distribución Linux en la cual tengas acceso como root o usuario con privilegios. Si tienes un VPS, asegúrate que si realizas por accidente un “bloqueo” a la IP desde la cual te conectas, podrás acceder nuevamente mediante una terminal o consola Web que te ofrezca tu propio proveedor.

Primeros pasos

CSF (ConfigServer Security & Firewall), es un poderoso conjunto de scripts que nos permiten disponer reglas de iptables para constituir un Firewall SPI (Stateful Packet Inspection) basado en software, con detector de intrusiones y seguridad en aplicaciones para servidores Linux.

Si actualmente tienes reglas de IPtables aplicadas en tu server, es muy probable que vayas a tener conflicto con las mismas, por lo cual, es muy probable que decidas qué solución de Firewall pretendes usar, o bien, analizar si CSF puede hacer por tí lo que actualmente estás haciendo con otra solución. Desde mi punto de vista personal, CSF es uno de los Firewalls para servidores Linux más potentes, transparentes y sencillos de usar que he visto.

Puedes conocer más a fondo las características de CSF visitando este link: http://configserver.com/cp/csf.html

Para este tutorial, estaré trabajando sobre Ubuntu Server 14.04.01 de 64 Bits.

De igual manera, la documentación oficial para la instalación de CSF la puedes encontrar aquí: http://download.configserver.com/csf/install.txt

Comentado lo anterior, primero vamos “actualizar” un poco algunas dependencias y paquetes de Perl requeridos:

sudo apt-get install libwww-perl liblwp-protocol-https-perl

Posteriormente, vamos a proceder a descargar y descomprimir el conjunto de scripts de CSF mediante el siguiente comando:

cd /usr/src
sudo wget https://download.configserver.com/csf.tgz
sudo tar -xzf csf.tgz

Ahora, procedemos a realizar la ejecución del script de instalación de CSF:

cd csf
sudo sh install.sh

Si no ha habido mayores problemas, podrás leer en tu pantalla algo como esto:

TCP ports currently listening for incoming connections:
     22

UDP ports currently listening for incoming connections:
     68,45861

Note: The port details above are for information only, csf hasn't been auto-configured.

Don't forget to:
     1. Configure the following options in the csf configuration to suite your server: TCP_*, UDP_*
     2. Restart csf and lfd
     3. Set TESTING to 0 once you're happy with the firewall, lfd will not run until you do so
     «lfd.sh» -> «/etc/init.d/lfd»
     «csf.sh» -> «/etc/init.d/csf»
     el modo de «/etc/init.d/lfd» permanece como 0755 (rwxr-xr-x)
     el modo de «/etc/init.d/csf» permanece como 0755 (rwxr-xr-x)
     Removing any system startup links for /etc/init.d/lfd ...
     Removing any system startup links for /etc/init.d/csf ...
     Adding system startup for /etc/init.d/lfd ...
     /etc/rc0.d/K20lfd -> ../init.d/lfd
     /etc/rc1.d/K20lfd -> ../init.d/lfd
     /etc/rc6.d/K20lfd -> ../init.d/lfd
     /etc/rc2.d/S80lfd -> ../init.d/lfd
     /etc/rc3.d/S80lfd -> ../init.d/lfd
     /etc/rc4.d/S80lfd -> ../init.d/lfd
     /etc/rc5.d/S80lfd -> ../init.d/lfd
     Adding system startup for /etc/init.d/csf ...
     /etc/rc0.d/K80csf -> ../init.d/csf
     /etc/rc1.d/K80csf -> ../init.d/csf
     /etc/rc6.d/K80csf -> ../init.d/csf
     /etc/rc2.d/S20csf -> ../init.d/csf
     /etc/rc3.d/S20csf -> ../init.d/csf
     /etc/rc4.d/S20csf -> ../init.d/csf
     /etc/rc5.d/S20csf -> ../init.d/csf
     «/etc/csf/csfwebmin.tgz» -> «/usr/local/csf/csfwebmin.tgz»

Installation Completed

Lo que debemos saber

CSF es una colección de scripts muy potente, que en un momento determinado, puede inclusive “impedirnos” la conexión remota al servidor si no tenemos muy claro lo que hacemos.

En este sentido, la ruta para la edición de su archivo de configuración, es:

/etc/csf/csf.conf

Dentro del mismo, tenemos 2 líneas que son muy interesantes:

  1. TESTING = “1” – Si está activida esta regla así, es porque tu Firewall está en “modo de prueba” con lo cual, en función del valor asignado en el siguiente punto (testing_interval), pasado ese tiempo, te “borrará” todas las reglas de Firewall con el propósito de “regresar” a la normalidad. En otro caso, si has quedado conforme con la configuración de Firewall, puedes ponerle el valor de “0”, con lo cual, quedará aplicado este sistema.
  2. TESTING_INTERVAL = “5” – Si las reglas de Firewall están en modo de prueba (testing), pasado número de minutos, se “limpiarán” del sistema, volviendo todo a la normalidad.

Bloquear accesos por país con firewall CSF y asignación de permisos de conexiones por país

Particularmente, CSF utiliza los 2 caracteres de país del código ISO de países CIDR (Classless Inter-Domain Routing – enrutamiento entre dominios sin clases) mediante el cual, se “clasifican” los rangos de direcciones IP de cada país. Como comenta CSF en el archivo de configuración, esta lista no es 100% segura ya que algunos ISPs, usan designaciones de IP para sus clientes mediante criterios no geográficos, lo cual dificulta su ubicación.

Por otra parte, la creación de reglas asociadas a grandes rangos de direcciones IP, pueden representar una disminución en el performance del servidor, con lo cual, no es muy recomendado para servidores VPS; aunque en mi caso, lo he usado en VPS de 1 GB de RAM y me fue muy bien, inclusive, me ayudó con tráfico indeseado.

Con ello en consideración, CSF se apoya en los 2 caracteres de país para la asignación en las reglas de Firewall, a partir de los bloques CIDR administrados por Maxmind GeoLite Country, el cual puedes consultar aquí: http://dev.maxmind.com/geoip/legacy/geolite/ (te sugerimos descargar el archivos CSV disponible para crear tus reglas con mayor seguridad y certeza).

Ahora bien, ¿qué haré? Permitiré el tráfico a México y Estados Unidos, y bloquearé al resto del mundo. Para ello, deberemos editar el archivo de configuración de CSF:

sudo nano /etc/csf/csf.conf

Ahora, buscamos las líneas:

CC_DENY = ""
CC_ALLOW = ""

Y nos aseguramos que queden algo así como:

CC_DENY = "AU,CN,JP,TH,IN,MY,KR,SG,HK,TW,PH,VN,RU,FR,EU,DE,IL,SE,IT,NL,GR,ES,AT,GB,BE,AE,KZ,PT,SA,DK,IR,NO,CA,SY,UA,CY,CZ,CH,IQ,TR,RO,BZ,PA,BR,CL,AR,CO,PL,LB,GE,AZ,A2,PS,LT,OM,SK,RS,FI,IS,HU,BG,SI,MD,MK,LI,JE,HR,BA,PY,EE,LV,JO,A1,KG,RE,IE,IM,LY,LU,AM,VG,YE,BY,GI,QA,KW,GP,MQ,GF,ZA,EG,ID,PK,DO,GU,VI,PR,MN,NZ,NP,PG,AP,CR,PE,NG,VE,BS,MA,SC,BB,KE,BN,BH,AW,LC,BD,TK,KH,MO,MV,AF,NC,FJ,WF,AL,UZ,ME,KP,VA,AQ,BM,CW,EC,KN,WS,GG,MT,TJ,ZW,LR,GH,TZ,ZM,MG,AO,NA,CI,SD,CM,MW,MU,GA,ML,BJ,TD,BW,CV,RW,CG,UG,MZ,GM,LS,DZ,GN,CD,SZ,BF,SL,SO,NE,CF,TG,BI,GQ,SS,SN,MR,DJ,KM,TN,YT,LA,MM,LK,NR,VU,BT,FM,PF,TL,TO,ER,ET,TM,GL,KY,JM,GT,MH,MC,AI,GD,MS,TC,AG,TV,SB,BO,SR,CK,NU,TF,NF,PN,SM,AX,FO,SJ,CC,GS,UM,SX,GW,MF,VC,PM,BL,DM,ST,FK,MP,BQ,AS,KI,PW,GY,HN,NI,SV,AD,HT,TT,UY,CU,SH,CX,IO"
CC_ALLOW = "MX,US"

Ahora, guardamos el archivo, y reiniciamos el CSF:

sudo csf -r

Y revisamos las reglas aplicadas:

sudo iptables -L -n

Pasos finales

Por otra parte, con el objetivo de que nuestro Firewall tome acciones a partir de “falsos positivos” o “información confusa” proporcionada por los registros del sistema (syslog/rsyslog), en el archivo /etc/csf/csf.conf, debemos cambiar esto:

# 0 = Allow those options listed above to be used and configured
# 1 = Disable all the options listed above and prevent them from being used
# 2 = Disable only alerts about this feature and do nothing else
# 3 = Restrict syslog/rsyslog access to RESTRICT_SYSLOG_GROUP ** RECOMMENDED **
RESTRICT_SYSLOG = "0"

Por esto:

# 0 = Allow those options listed above to be used and configured
# 1 = Disable all the options listed above and prevent them from being used
# 2 = Disable only alerts about this feature and do nothing else
# 3 = Restrict syslog/rsyslog access to RESTRICT_SYSLOG_GROUP ** RECOMMENDED **
 RESTRICT_SYSLOG = "3"

Con lo anterior, evitarás también “molestas” alertas del tipo:

*WARNING* RESTRICT_SYSLOG is disabled. See SECURITY WARNING in /etc/csf/csf.conf.

Goodie

CSF es un estupedísimo Firewal; para el caso de este material, podría decir que no está reservado solamente para “bloquear” rangos de IP´s de países sino para implementar un cortafuego por software a tu computadora o servidor.

Por ello, si modificas, en el siguiente conjunto de líneas, puede “decidir” qué puertos deseas mantener abiertos y en qué dirección:

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"

# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"

# Allow incoming UDP ports
UDP_IN = "20,21,53"

# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = "20,21,53,113,123"

…e inclusive, si permitirás que hagan “ping” a tu equipo:

# Allow incoming PING
ICMP_IN = "1"

Si has despertado la curiosidad con respecto a las capacidades de CSF, te recomendamos encarecidamente dar un vistazo a todo el fichero de configuración para hacer pruebas y descubrir sus posibilidades. ¡Te encantará! Cpanel lo integra generalmente a través de WHM, lo cual nos “garantiza” en cierto sentido su mejora y mantenimiento constante.

Nota final

Si al aplicar tus reglas de Firewall con CSF te aparece el mensaje de error:

*WARNING* URLGET set to use LWP but perl module is not installed, reverting to HTTP::Tiny

Es probable que te hayas olvidado de instalar paquetes de Perl de apoyo, con lo cual, solo hace falta instalar un módulo faltante mediante lo siguiente:

sudo apt-get install libwww-perl liblwp-protocol-https-perl

¿Qué pasa en este punto? Según comentan en algunos sitios, CSF implementó el procesamiento de peticiones para HTTP y HTTPS, con lo cual, el modelo LWP::UserAgent procesa muchísimo mejor HTTPS que el modelo HTTP::Tiny.

Si quisieramos evitar usar LWP, hay que buscar la línea:

# "1" = HTTP::Tiny
# "2" = LWP::UserAgent
URLGET = "2"

Y dejarla en algo como esto:

# "1" = HTTP::Tiny
# "2" = LWP::UserAgent
URLGET = "1"
Publicado el Dejar un comentario

Análisis de logs de Apache con Scalp!

Análisis de logs de Apache con Scalp!

En temas de seguridad y protección de servidores, no existe nada mejor que proteger los mismos con aplicaciones de detección de intrusiones como Snort (https://www.snort.org/) o Suricata (http://suricata-ids.org/) u otras ofertas comerciales basadas tanto en hardware (firewalls) como Software (http://www.acunetix.com/) o servicios en la nube (https://www.cloudflare.com/) que actualizan con mayor regularidad sus bibliotecas y/o diccionarios de ataques, y están “más preparados” ante estas amenazas de la red Internet, por los que reaizar análisis de logs de Apache con Scalp! es una fantástica idea para prevenir y/o anticipar amenazas.

En esta ocasión les comparto un analizador de Logs muy sencillo, el cual propiamente, no es el más recomendado para “prevenir” ataques a un servidor Apache sino que más bien, su propósito es el de analizar potenciales huecos de seguridad o vulnerabilidades apoyándose de los registros (logs) que ha dejado atrás Apache para detectar aquellas áreas de oportunidad, mejora, e inclusive, vulnerabilidades propias de sistemas o aplicaciones desarrollados en PHP.

Scalp!, es un script analizador de logs del servidor Apache desarrollado en Phyton, que tiene como objetivo buscar problemas de seguridad. Su idea principal, es “leer” dentro de los registros de accesos al servidor para buscar patrones ataques potenciales mediante el envío de peticiones por los métodos HTTP/GET y HTTP/POST.

El sitio Web oficial de Scalp! es https://code.google.com/p/apache-scalp/.

Primeros pasos

Para los propósitos de este post, he de comentar que estoy realizando pruebas sobre Ubuntu Server 14.04. En este caso, tengo una instalación con Apache 2, PHP5 y MySQL para un servidor Web, en donde mis “logs”, se encuentran dentro del directorio /var/logs/apache2/access.log.

Con esto en consideración, lo primero que tenemos que hacer, es “descargar” el script de Scalp! en nuestro directorio favorito:

wget https://apache-scalp.googlecode.com/files/scalp-0.4.py

(Nota: te sugiero que visites regularmente la página de Scalp! para descargar la última versión actualizada).

Ahora, descargamos el archivo de expresiones regulares que utiliza PHP-IDS (otra estupenda herramienta para proteger a nuestras aplicaciones PHP) para combinarlo en su uso con Scalp! mediante el siguiente comando:

wget https://dev.itratos.de/projects/php-ids/repository/raw/trunk/lib/IDS/default_filter.xml --no-check-certificate

Ahora bien, con estos dos archivos descargados, vamos a hacer nuestro primer análisis de logs:

python scalp-0.4.py -l /var/log/apache2/access.log default_filter.xml -o scalp-output --html

En este caso, al ejecutar Scalp! por primera vez, me arrojó este mensaje de error:

The directory %s doesn't exist, scalp will try to create it
 Loading XML file 'default_filter.xml'...
 The rule '(?i:(\%SYSTEMROOT\%))' cannot be compiled properly

“Tuneando” nuestro fichero de patrones

Con respecto a la primera y segunda línea de error, no tenemos mayor problema. Más bien, el detalle que tenemos que resolver es que al parecer Phyton, no es capaz de “procesar” correctamente parte del contenido XML que descargamos de PHP-IDS. Para ello, la solución es muy sencilla, abrimos el archivo default_filter.xml con nuestro editor favorito:

nano default_filter.xml

Y alrededor de la línea 741, hay que cambiar (referencia: https://code.google.com/p/apache-scalp/issues/detail?id=8) esto:

(?i:(\%SYSTEMROOT\%))

…por esto:

(?:(\%[sS][yY][sS][tT][eE][mM][rR][oO][oO][tT]\%))

Iniciando Scalp!

Con lo anterior, guardamos los cambios, y volvemos a ejecutar el comando de Scap!

python scalp-0.4.py -l /var/log/apache2/access.log default_filter.xml -o scalp-output --html

A continuación, les aparecerá un mensaje como este, ante el cual, solo tenemos que esperar un poco (en función del tamaño de archivo de tu log o de las reglas que hayas pedido ejecutar):

Loading XML file 'default_filter.xml'...
 Processing the file '/var/log/access.log'...
 Scalp results:
 Processed 491229 lines over 491413
 Found 3175 attack patterns in 177.725208 s
 Generating output in scalp-output/access.log_scalp_*

Ahora, solo tienes que ir al directorio scalp-output y “visualizar” en tu navegador en archivo generado para visualizar el reporte completo de patrones de ataque observados.

¡Esta herramienta es genial!

Goodie

Tecleando el comando:

python scalp-0.4.py --help

…podrás obtener la ayuda relacionada con otros patrones de uso de Scalp!.

Scalp the apache log! by Romain Gaucher - http://rgaucher.info
 usage: ./scalp.py [--log|-l log_file] [--filters|-f filter_file] [--period time-frame] [OPTIONS] [--attack a1,a2,..,an]
 [--sample|-s 4.2]
 --log |-l: the apache log file './access_log' by default
 --filters |-f: the filter file './default_filter.xml' by default
 --exhaustive|-e: will report all type of attacks detected and not stop
 at the first found
 --tough |-u: try to decode the potential attack vectors (may increase
 the examination time)
 --period |-p: the period must be specified in the same format as in
 the Apache logs using * as wild-card
 ex: 04/Apr/2008:15:45;*/Mai/2008
 if not specified at the end, the max or min are taken
 --html |-h: generate an HTML output
 --xml |-x: generate an XML output
 --text |-t: generate a simple text output (default)
 --except |-c: generate a file that contains the non examined logs due to the
 main regular expression; ill-formed Apache log etc.
 --attack |-a: specify the list of attacks to look for
 list: xss, sqli, csrf, dos, dt, spam, id, ref, lfi
 the list of attacks should not contains spaces and comma separated
 ex: xss,sqli,lfi,ref
 --output |-o: specifying the output directory; by default, scalp will try to write
 in the same directory as the log file
 --sample |-s: use a random sample of the lines, the number (float in [0,100]) is
 the percentage, ex: --sample 0.1 for 1/1000

Si te interesa el tema, aquí puedes encontrar un estupendo artículo (en inglés) sobre una comparativa entre Snort y Suricata, los IDS (intrusion detection system) Open Source más populares. La liga es: http://wiki.aanval.com/wiki/Snort_vs_Suricata

Publicado el Dejar un comentario

Yellow Dog Linux en una iMac G3

El día de hoy, recuperé una memoria USB en la cual tengo varios screenshots, documentos y curiosidades que vengo guardando de hace algunos años. Así pues, encontré algunas capturas de pantalla y fotografías de cuando, hace aproximadamente unos 5 años, instalé Yellow Dog Linux 2 Pomona en un iMac G3 a 233 mhz con 32 MB de memoria RAM. La verdad, KDE corría lentísimo, pero vale, queda para la historia, y como mera curiosidad: Linux funciona casi donde sea y con los recursos que sean.

yellow dog linux
Aquí, iniciando el sistema operativo…
Aquí, iniciando el escritorio KDE…
…y aquí puedes ver los recursos de la iMac G3 de mi distro Yellow Dog Linux para Mac.