domingo, 10 de julio de 2016

VMware 12 no inicia en Debian

Resulta que por alguna extraña razon, VMware dejó de funcionar en mi Debian, cuando intento iniciarlo, me dice que no puede iniciar el servicio.

Comienzo mi lectura y me entero que es por una actualización del kernel de mi equipo, todos los que tengan un kernel igual o mayor a 4.6 deberán proceder a parchear un par de archivos de VMware para poder ejecutarlo.

Los pasos a efectuar son los siguientes:

$ sudo -i 
# cd /usr/lib/vmware/modules/source
# tar xf vmmon.tar
# mv vmmon.tar vmmon.old.tar
# sed -i -e 's/get_user_pages/get_user_pages_remote/g' vmmon-only/linux/hostif.c
# tar cf vmmon.tar vmmon-only
# rm -r vmmon-only
# tar xf vmnet.tar
# mv vmnet.tar vmnet.old.tar
# sed -i -e 's/get_user_pages/get_user_pages_remote/g' vmnet-only/userif.c
# tar cf vmnet.tar vmnet-only
# rm -r vmnet-only
 Luego de esto, podrán ejecutar vmware sin problemas.

Fuente: https://wiki.archlinux.org/index.php/VMware#3.19_kernels

sábado, 18 de junio de 2016

Aprende a usar Flexbox - CSS

Aprende a usar Flexbox - CSS

Eres de los que se aburren un poco mientras intentan aprender alguna nueva tecnología? Quieres aprender a usar los modelos de cajas flexibles de CSS? Para ti, la solución más adecuada viene siendo Flexbox Defense, un juego en el cual debes ir situando tus torres de defensa para disparar y acabar con todos los elementos que quieran pasar a tu "fuerte". Por lo que he visto hasta ahora en el juego, la idea consiste en alinear tanto horizontal, como verticalmente tus elementos alrededor de tu caja y así lograr que ellas estén bien ubicadas para el momento en el cual los enemigos intenten pasar. Se los recomiendo, una muy buena manera de aprender código CSS - Flexbox. http://www.flexboxdefense.com/

miércoles, 2 de marzo de 2016

Diferencias entre Wordpress, Joomla y Drupal




Dado que mi trabajo en el curso de los años me ha llevado por el camino de los CMS (Sistema Manejador de Contenido, por sus siglas en inglés, Content Manager System) y LMS (Sistema Manejador de Aprendizaje, por sus siglas en inglés, Learning Managment System), he decidido generar un pequeño artículo comparativo entre los CMS más utilizados actualmente.

Ahora bien, no podemos hablar de CMS sin entender primero qué son, por lo tanto, como ya es costumbre, comenzaremos con una definición.

Un CMS es un sistema que se instala en la nube, con el objetivo de crear un sitio Web en el cual se pueda tener contenidos interactivos, la idea es que luego de haber instalado el sistema, podamos, mediante el mismo, crear y manejar nuevos contenidos (páginas dentro del mismo sitio Web). Las características de este tipo de sitios varía dependiendo del diseño que le dé su creador. Adicionalmente está el hecho de que se puedan tener varias personas trabajando simultáneamente en la creación de nuevos artículos para el sitio, teniendo cada una de ellas, una cuenta de usuario que le permita efectuar diversas operaciones.

“Consiste en una interfaz que controla una o varias bases de datos donde se aloja el contenido del sitio web. El sistema permite manejar de manera independiente el contenido y el diseño. Así, es posible manejar el contenido y darle en cualquier momento un diseño distinto al sitio web sin tener que darle formato al contenido de nuevo, además de permitir la fácil y controlada publicación en el sitio a varios editores. Un ejemplo clásico es el de editores que cargan el contenido al sistema y otro de nivel superior (moderador o administrador) que permite que estos contenidos sean visibles a todo el público (los aprueba).” https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_contenidos Marzo, 2016

Ahora bien, ya siendo conocedores de ¿qué es un CMS?, procederemos a visualizar una pequeña imagen que muestra las diferencias y similitudes entre Joomla, Wordpress y Drupal.



Factores Comunes:
Los tres CMS poseen ciertas características en común, las cuales serán mencionadas a continuación:
  • Programados en PHP.
  • Sistemas de código abierto.
  • Están compuestos de un núcleo principal y módulos básicos.
  • Se pueden descargar e instalar módulos adicionales.
  • Se pueden descargar e instalar plantillas adicionales para darle una apariencia diferente a la original.
  • Soporte MySQL como base de datos.

Características específicas:

Drupal:
Es un sistema creado pensando en los programadores, por lo cual su curva de aprendizaje tiende a ser mayor, sin embargo, una vez se conoce, se pueden generar sitios altamente escalables, alcanza incluso mayor escalabilidad que Joomla y Wordpress; es un CMS bastante completo y por lo tanto, algunos podrían decir que es igualmente bastante complejo, sin embargo, no vean esto como un defecto sino como una necesidad de mayor experiencia para generar sitios con mayor un ciclo de vida.

Recién instalado, Drupal muestra un menú bastante básico, la idea es que el administrador pueda adaptar ese menú y escalarlo a medida de sus necesidades; incluso puede personalizar que tipo de menú desea que visualice cada tipo de usuario, ya sea un administrador, un redactor, un corrector o un lector.

Existen más de 24.000 plugins diferentes descargables para Drupal, lo cual permite añadir una cantidad enorme de posibilidades y capacidades a nuestro CMS. Otra de las ventajas / desventajas (dependiendo del punto de vista) de Drupal, es que, al estar pensado para programadores, se ha contemplado la posibilidad de que el desarrollador haga sus propios códigos para adaptar su sitio web a las necesidades específicas del proyecto.

Ahora bien, desde el punto de vista de seguridad y actualizaciones Drupal no queda para nada mal posicionado, sus actualizaciones son liberadas cada 51 días aproximadamente; esto no quiere decir que Drupal no sea el objetivo de algunos crackers, sin embargo, dado que este CMS posee menor popularidad que sus dos competidores más fuertes (Joomla y Wordpress), normalmente se encuentra menos afectado por los delincuentes tecnológicos o cyber-delincuentes.

Dada su complejidad, Drupal está de tercero en la lista de popularidad entre CMS, sin embargo, no es un manejador de contenidos malo, todo lo contrario, es muy fuerte aunque requiere de conocimientos avanzados para desarrollar un sitio con el.

Joomla:
Un CMS en el cual decidieron abrir un poco más el target de usuarios, enfocándose un poco en la usabilidad del sistema para usuarios no programadores, esto hace que su curva de aprendizaje sea menos prolongada que en el caso de Drupal, sin embargo, con Joomla decidieron no cerrarse y aún sigue permitiendo que un desarrollador genere e integre un código adicional para su sistema Web, esto permite igualmente que la escalabilidad siga siendo grande, en efecto, el sitio será, casi, tan escalable como su desarrollador desee.

Recién instalado, Joomla muestra un menú bastante práctico, la idea es que el administrador pueda hacer cualquier operación y pueda desarrollar un sitio básico sin necesidad de añadir módulos adicionales a su sistema; nótese que es un sitio básico, a mayor complejidad deseada, mayor necesidad de plugins adicionales.

Existen más de 7.000 plugins diferentes descargables para Joomla; si lo se, es menos de la tercera parte de los que podemos descargar para Drupal, sin embargo es relevante tomar en cuenta que Joomla ya cuenta con muchas funcionalidades por defecto, los módulos son para añadir otras posibilidades a nuestro CMS, lo cual hace menos necesario hacer uso de módulos adicionales.

Ahora bien, desde el punto de vista de seguridad y actualizaciones, el equipo de Joomla las libera aproximadamente cada 36 días, lo que nos permite sentirnos un poco más seguros con respecto a la seguridad (vamos, que el tema de seguridad informática tiene mucho que ver con la sensación ya que en realidad ningún sistema es impenetrable, técnicamente hablando).

Dada su relación complejidad - usabilidad, Joomla está de segundo en la lista de popularidad entre CMS, sin embargo esto no quiere decir que sea mejor o peor que Drupal o Wordpress, sino que está pensado para otro target. Ahora bien, no olviden que a mayor nivel de popularidad, mayor conocidos y buscados los bugs de seguridad, así que Joomla es un poco más atacado por los cyber-delincuentes que Drupal.

Wordpress
Siguiendo con el mismo orden de ideas debemos dejar claro que en Wordpress han vuelto a limitar un poco el target de usuarios enfocándose primordialmente en la usabilidad del sistema para usuarios no programadores, esto hace que su curva de aprendizaje sea mínima, comparada con la de sus competidores; el problema es que entonces no permiten la escalabilidad al limitar el desarrollo propio de los programadores durante la creación de una Web con este CMS.

Recién instalado, Wordpress, al igual que Joomla, muestra un menú bastante práctico, la idea es que el administrador pueda hacer cualquier operación y pueda desarrollar un sitio básico sin necesidad de añadir módulos adicionales a su sistema; de nuevo, a mayor complejidad deseada, mayor necesidad de plugins adicionales

Existen más de 27.000 plugins diferentes descargables para Wordpress; lo que deja a Joomla con muchos menos plugins que sus dos competidores, igualmente los módulos son para añadir otras posibilidades a nuestro CMS, lo cual hace menos necesario hacer uso de módulos adicionales.

Ahora bien, desde el punto de vista de seguridad y actualizaciones, el equipo de Wordpress libera las suyas aproximadamente cada 42 días.

Dada su versatilidad, Wordpress está de primero en la lista de popularidad entre los CMS, el problema principal viene a ser que eso lo convierte en una de las plataformas más conocidas por los atacantes; sin embargo el equipo de Wordpress, al igual que el de todos los CMS conocidos, trabaja muy duro en sus actualizaciones y siempre liberan correcciones a los bugs de seguridad descubiertos.

Se considera importante acotar que en realidad ninguno de los CMS es definitivamente mejor que el otro, aquí aplica la teoría de la relatividad de Alber Einstein (https://es.wikipedia.org/wiki/Teor%C3%ADa_de_la_relatividad Marzo, 2016), ya que todo va a depender de diversas variables tales como el nivel de conocimiento del desarrollador, el objetivo del sitio creado con el CMS, el nivel de exigencia del cliente final, entre otros.

También es importante destacar que las diversas plataformas tienen mayor popularidad en campos específicos, tales como:

  • Joomla es más usado para el desarrollo de sitios Web de e-comerce.
  • Wordpress es mas usado para el desarrollo de Blogs.
  • Drupal, dada su escalabilidad puede ser usado tanto para el desarrollo de blogs básicos, como para el desarrollo de sistemas avanzados y sofisticados que requieran mayor programación.

A continuación les dejo la imagen comparativa de WebSiteSetup, la cual es bastante práctica e interesante.

 
Adelante, prueben los diferentes CMS e indiquen sus opiniones al respecto. Que lo disfruten.

Diversas fuentes:

sábado, 27 de febrero de 2016

Diferencia entre fuentes Serif y Sans Serif





Actualmente estoy haciendo un taller de Inskcape, en el cual nos han preguntado si conocíamos la diferencia entre una fuente Serif y una fuente Sans serif; en ese momento recordé que en el pasado, cuando era tesista de TSU (Técnico Superior Universitario) me tocó estudiar al respecto para poder decidir qué fuente utilizar y por qué.

Ahora bien, la palabra serif hace referencia a adornos ubicados en las puntas de las letras, podríamos llamarlo igualmente remates. Por lo tanto, una tipografía que no esté adornada es sans serif (sans del término Francés que significa sin); muchos también la llaman, fuente sin gracia.



Noten los detalles, (serif) normalmente en el inicio y final de las líneas de cada letra.

¿Ahora bien, cual es la diferencia de usar una fuente o la otra?

En realidad muchas veces seleccionamos nuestras fuentes por el simple gusto o amor que le tengamos a una tipografía específica, sin embargo deberíamos tomar en cuenta que la fuente llamará (o dejará de llamar) la atención de nuestro target.

Mi recomendación personal es que si están generando un artículo o un documento de carácter técnico, comercial o empresarial, intenten usar tipografías que no añadan detalles innecesarios a lo que hacen; ahora bien, si quieren representar una escritura antigua o están generando un documento con un sentido más personal, por ejemplo un poema, en ese caso hagan uso de una fuente serif, que traiga adornos.

Si quieren descargar tipografías para sus distintos documentos, les recomiendo esta Web http://www.dafont.com/ Febrero, 2016

Copyleft Rait3 - 2016

domingo, 21 de febrero de 2016

Restaurar GRUB con Rescatux


Rescatux es una distribución de GNU/Linux que nos permite recuperar el gestor de inicio GRUB.

Comencemos entonces con algunas definiciones.

GRUB es el acrónimo de GNU GRand Unified Bootloader, si desean ver la definición, justo en mi anterior artículo pueden leer un poco (http://ojedareinaldo.blogspot.fr/2016/02/cambiar-fondo-del-grub.html Febrero, 2016), igualmente les dejo la URL de la página oficial del GRUB https://www.gnu.org/software/grub/ Febrero, 2016.

Live CD: cada vez que iniciamos nuestro equipo, el sistema operativo es buscado en el disco duro y se comienza a colocar en RAM cada una de las rutinas necesarias para que el mismo funcione de manera correcta; ahora bien, imaginemos por un momento que nuestro equipo no inicia, pero tenemos que entregar urgentemente algún trabajo que hicimos y que está en el HDD (Hard Disk Drive o Disco Duro). Si, lo sé, es que Murphy siempre nos toma siempre desprevenidos con esa ley de “Si algo puede salir mal, saldrá mal” Ahora bien, ¿y si te digo que existe una solución y que teniendo la herramienta adecuada puedes solventar tu inconveniente en un momento?.

Digamos que tenemos un CD o USB booteable preparado con todos los archivos de un sistema operativo, un CD o USB que le dirá a nuestro equipo, “-GNU/Linux o Ms Windows está aquí, no en el HDD, carga todo a memoria RAM desde mi.-”

Eso es un Live CD, un disco que permite correr el sistema en VIVO o en caliente como decimos en español, es importante destacar que el sistema operativo, en este caso, no está instalado en el equipo y no se va a instalar por simplemente iniciarlo.

Casos en los que un Live CD es útil
  • Rescatar algún archivo cuando nuestro sistema operativo no inicia.
  • Respaldar información, sin iniciar equipo en su sistema actual.
  • Probar sistemas operativos específicos (muy útil si quieres ver cierta distribución de GNU/Linux sin instalarla en tu ordenador.)
  • Desinfectar un equipo que se encuentra full de virus (experiencia adicional requerida).
  • Restaurar GRUB luego de instalar Windows.
  • Entre otros...

Ahora bien, ¿Qué es Rescatux?

Rescatux, tal como lo indican en su página oficial, es un Cd de rescate de GNU/Linux (y eventualmente Ms Windows), sin embargo no es como cualquier disco de rescate. Rescatux viene con Rescapp, que es un excelente asistente que te guiará a través de las tareas.

¿Cuales son sus opciones?
  • Restaurar GRUB y GRUB2 (Con un solo clic)
  • Actualizar menús de GRUB2
Windows options:
  • Restaurar el MBR (de Master Boot Record)
  • Resetear claves de Ms Windows
  • Ascender permisos de un usuario de Ms Windows
  • Desbloqueo de usuarios de Ms Windows.
Password options:
  • Cambio de contraseñas de GNU/Linux (aún no he probado esta opción)
  • Regenerar el archivo sudoers
Filesystem options:
  • Chequeo de sistema de ficheros o FS check
Igualmente tiene otras herramientas para expertos, sin embargo no entraré en detalles ahora mismo sobre eso, si deseas obtener más información puedes ir a la página oficial http://www.supergrubdisk.org/rescatux/ (Inglés) Febrero, 2016.
Luego lo descargan y lo copian a un CD o hacen un USB booteable con la ISO.

Si lo que desean es restaurar el GRUB los pasos son los siguientes:
  1. Inicial el live CD (o USB)
  2. Hacer clic en el ícono de rescapp para visualizar el menú de opciones
  3. Hacer clic en Restore GRUB
  4. Y ya desde aquí el programa nos guía.
Aquí les dejo una imagen del menú principal.
Éxito.

Copyleft Rait3 - 2016

sábado, 13 de febrero de 2016

Cambiar fondo del GRUB


Bueno, hice una pausa de mis estudios para tunear un poco mi Debian Stretch, esta vez me decidí a quitar la imagen de Debian y poner algo un poco más a mi estilo. A contiuación indicaré como lo hice.

Antes de hablar de lo que se hizo, un poco de definiciones.
Un bootloader es el primer programa que corre cuando un computador inicia. Es responsable de leer y transferir el control al Kernel del sistema operativo. GRUB (GRand Unified Bootloader) es entonces el bootloader que viene por defecto con GNU/Linux Debian y sus derivados (como Ubuntu por ejemplo).
Para más información al respecto pueden visualizar la página original del proyecto, aunque está en inglés https://www.gnu.org/software/grub/

Lo primero que hice fue asegurarme de saber cual era la versión del Grub instalada en mi sistema; para ello usamos el comando
$sudo grub-install --version
grub-install (GRUB) 2.02~beta2-35
Sabiendo que mi versión es la "2.02~beta2-35" busqué entonces el directorio donde debían estar las imágenes del grub, /usr/share/images/desktop-base/, un simple ls me permitió ver los nombres de las imágenes que estaban allí.
$ls /usr/share/images/desktop-base/
Las imágenes que podremos usar serán las que tienen extensión .tga, .png, o .jpg/.jpeg y su tamaño normalmente es el de 640 × 480, aunque admito que en mi caso use una imagen de 1920 x 1080 y funcionó sin problemas.

Yo lo que hice fue copiar la imagen que quería al mismo directorio donde está el fondo actual de mi grub; vale acotar que mi imagen se llama me.png y la tengo en la ruta /media/Data/Imagenes/Wp/me.png
$sudo cp /media/Data/Imagenes/Wp/me.png /usr/share/images/desktop-base/
Y luego edité el script que llama a la imagen de fondo, dicho script se encuentra en la siguiente ruta: /usr/share/desktop-base/grub_background.sh y lo edité con nano que admito que es mi preferido (aunque en cuestiones de potencia debo igualmente admitir que VI lleva la delantera, a mi parecer).
$sudo nano /usr/share/desktop-base/grub_background.sh
El contenido original de este archivo, en mi caso, es el siguiente:
WALLPAPER=/usr/share/images/desktop-base/desktop-grub.png
COLOR_NORMAL=white/black
COLOR_HIGHLIGHT=black/white
Lo cual es muy sencillo de comprender; lo primero es la ruta de la imagen de fondo, luego tienes el color de las opciones (textos) y fondo, y por último el color de las opciones (textos) una vez las tengas seleccionadas (lo explicaré mas adelante si quieren cambiar colores). Procederemos a cambiar solamente la línea WALLPAPER.
#WALLPAPER=/usr/share/images/desktop-base/desktop-grub.png
WALLPAPER=/usr/share/images/desktop-base/me.png
COLOR_NORMAL=white/black
COLOR_HIGHLIGHT=black/white
Como verán, comenté la línea original y abajo puse la ruta a mi imagen (me.png)

Guardamos y cerramos (Ctrl + o Ctrl + x respectivamente)

Y ahora debemos proceder a decirle a nuestro equipo que actualice las configuraciones del grub2
$sudo update-grub2
Y listo, reinicié mi equipo solo para deleitarme de ver mi nueva imagen, jeje.

Cambiar Colores de Texto

Puede darse el caso, dependiendo de las características de tu imagen, que no se logre leer bien las opciones de los Sistemas operativos que se encuentran en el Grub, para solventar esto deberemos cambiar los colores de las mismas.

Vamos de nuevo al mismo script.
$sudo nano /usr/share/desktop-base/grub_background.sh
Lo que entonces nos muestra nuestro pequeño bloque de código, tal como sigue:
#WALLPAPER=/usr/share/images/desktop-base/desktop-grub.png
WALLPAPER=/usr/share/images/desktop-base/me.png
COLOR_NORMAL=white/black
COLOR_HIGHLIGHT=black/white
Y cambiamos el texto de COLOR_NORMAL, que vale acotar, indica el color de todas las letras del grub.

La primera opción de color indica es como tal el color de la letra, el segundo es el color del fondo que debe tener la línea de esa opción.
Ejemplo: COLOR_NORMAL=white/black
Significa, texto en blanco, fondo de esa línea en transparente.

Ahora simplemente tienen que hacer los cambios, sabiendo lo que quieren. A continuación les doy un listado de los colores que se pueden usar.
Opciones de colores:
white = blanco

black = transparente (Venga tio, que no es negro, NO ES NEGRO!!!)

blue = azul

light-blue = azul claro

cyan = cian (azul verdoso)

light-cyan = cian claro

green = verde

light-green = verde claro

light-gray = gris claro

dark-gray = gris oscuro

light-magenta = magenta claro

red = rojo

light-red = rojo claro

brown = marron

magenta = magenta

yellow = amarillo
Ahora, luego de cambiar los colores, deben de nuevo pedirle al grub que se actualize:
$sudo update-grub2
Bueno, como decían en Looney Tunes, "Eso es todo amigos" jajaja.

Éxito...

PD: Muestro a continuación como quedó el mio, ánimo, hagan uds lo mismo, y si quieren, pongan en los comentarios de este artículo la imagen de lo que hicieron, por cierto, la imagen no la hice yo, ni siquiera puedo decir la fuente original porque en realidad me la copié del computador de un amigo.

Copyleft Rait3 - 2016

sábado, 6 de febrero de 2016

Mostrar mensaje sobre uso de Cookies


Que la cosa es medio fastidiosa, ¿no?

Primero, algo de definición, para no perder la costumbre.
Las cookies permiten obtener datos para generar las estadísticas de uso y visitas de nuestra Web (Google Analytics), sin embargo, también es gracias a dichas cookies que podemos llegar a conocer preferencias del usuario y por lo tanto mostrar publicidad ajustada a su perfil (Google Adsense).

Ahora bien, la ley de cookies europea nos obliga a notificarle al usuario que nosotros almacenamos estas galletas (del término cookie en inglés) y que por lo tanto, cada vez que navegan en nuestra Web, nos dejan algo de información como rastro.

El hecho de que tengamos que avisarle al usuario que está viendo un sitio que almacena cookies lo pueden ver en la "Ley de Servicios de la Sociedad de Información (LSSI)", concretamente en el apartado 2 del artículo 22 de la ley 34/2002
http://noticias.juridicas.com/base_datos/Admin/l34-2002.t3.html#a22

Vale acotar que esta ley afecta a cualquier empresa o particular que posea una página web en Europa y use cookies. No importa si tu página vende productos o es un simplemente una web sencilla que tienes para comunicar locuras (como este Weblog).

Bueno, la cosa es que me encontré que mi blog no mostraba el dichoso mensajito, cosa que me ha inquietado un poco así que puse manos a la obra en la solución y consecuente redacción del presente artículo (Disculpen lo complicado del lenguaje, es que llevo rato leyendo la ley y algo se pega jajajajaja :P).

Lo que hice fue ingresar a la administración de mi Weblog y en el menú de administración hice clic en Plantillas, tal como lo muestro en la imagen.

Hice entonces clic en el botón de "Editar HTML" que aparece justamente debajo de una imagen que muestra nuestro Blog.

Como no veía todo el código, hice uso de una herramienta que ya uno termina por aprender de memoria, "Ctrl + f" o lo que es lo mismo, las teclas para "buscar", y allí escribí /head.
Ahora bien, ¿por qué escribí eso?, sencillo, lo que voy a añadir es un script, y los scripts a nivel de programación de HTML se colocan adentro del encabezado de la página, el cual está definido por una etiqueta para su inicio y /head para su fin, así que busque la línea del final del encabezado y justamente antes de ella voy a añadir mi script.

¿Cual es el script que voy a agregar?

A continuación una imagen para que sepan como quedó en mi caso.



Luego del cambio, hice clic en guardar plantilla y listo, ya aparece.

Gracias por leerme.

Fuentes adicionales:
http://www.iniciablog.com/2014/01/ley-de-cookies-en-blogger.html Febrero, 2016
http://www.mybloggertricks.com/2015/07/Custom-Cookies-notification-for-European-Union-countries.html Febrero, 2016

Copyleft Rait3 - 2016

domingo, 31 de enero de 2016

Denegar a Root acceso por SSH.


Había pasado algo de tiempo sin escribir, es que eso de salir de tu país para intentar hacerte vida en otro lado no es tan fácil como suena; pero bueno, a lo que nos atañe.

Como en el presente artículo vamos a hablar de SSH, primero vamos a definirlo; me ha gustado mucho la definición del MIT (Massachusetts Institute of Technology) así que la cito a continuación

"SSH™ (o Secure SHell) es un protocolo que facilita las comunicaciones seguras entre dos sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host remotamente. A diferencia de otros protocolos de comunicación remota tales como FTP o Telnet, SSH encripta la sesión de conexión, haciendo imposible que alguien pueda obtener contraseñas no encriptadas.

SSH está diseñado para reemplazar los métodos más viejos y menos seguros para registrarse remotamente en otro sistema a través de la shell de comando, tales como telnet o rsh. Un programa relacionado, el scp, reemplaza otros programas diseñados para copiar archivos entre hosts como rcp. Ya que estas aplicaciones antiguas no encriptan contraseñas entre el cliente y el servidor, evite usarlas mientras le sea posible. El uso de métodos seguros para registrarse remotamente a otros sistemas reduce los riesgos de seguridad tanto para el sistema cliente como para el sistema remoto." http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-ssh.html 31 Enero 2016.

Ok, ahora vamos con lo que se indica en el título (Denegar a Root acceso por SSH).

Por cuestiones de estudios estaba intentando hacer unas verificaciones de seguridad en mi ordenador, el cual tiene Debian Stretch, y me percaté que mi SSH permitía que root se conectara al sistema, esto implica un gran bug de seguridad ya que si por cosas del destino, alguien quisiera hacer haking a mi equipo, el ssh se las pone más fácil; por lo tanto procedí a hacer las verificaciones y correcciones correspondientes.

Sabemos que existe un archivo de configuración del demonio de ssh, en ese archivo es que debemos hacer los cambios correspondientes, procederemos entonces a abrir una cónsola como #root

$su
#

Con nuestro editor favorito vamos a abrir el archivo de configuración del demonio, el cual se encuentra en la ruta /etc/ssh/sshd_config

#nano /etc/ssh/sshd_config

En la sección de autenticación encontraremos la información que buscamos cambiar.
En mi caso, estaba as:

# Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes

Veamos qué significa

PermitRootLogin = prohibir-contraseña prohíbe todos los métodos de autenticación interactivas, permitiendo sólo publickey, Host-based y autenticación GSSAPI.

Sin embargo, yo no deseo, por ninguna razón, que root ingrese por SSH, así que procedí a cambiar el valor de PermitRoot Login a "NO", un no rotundo y definitivo.

# Authentication:
LoginGraceTime 120
#PermitRootLogin prohibit-password
PermitRootLogin no
StrictModes yes

Además, deseo limitar, muy específicamente, los usuarios que pueden ingresar a mi equipo por SSH; esto lo hago añadiendo la siguiente línea:

AllowUsers UsuarioX, UsuarioY

Cambiamos UsuarioX y UsuarioY por los nombres de los usuarios a los que deseamos darle acceso por ssh.

Guardamos y cerramos nuestro archivo (Ctrl + O y Ctrl + X respectivamente si estan usando nano).

Reiniciamos nuestro servidor SSH

/etc/init.d/ssh restart

Y misión cumplida, ahora a seguir estudiando...

Copyleft Rait3 - 2016

lunes, 27 de abril de 2015

Autenticación con Pendrive en GNU/Linux Debian




Actualmente me estaba preguntando como lograr un poco más de seguridad en mi sistema de autenticación de GNU/Linux, pero a la vez dar un poco de versatilidad al asunto; llegado al caso, me planteé que un Pendrive debería almacenar los datos de mi usuario, y así, al insertar el pendrive en mi equipo, el sistema detecte que soy yo y me permita ingresar a mi cuenta; al principio me reía imaginándome lo loco que estaba (xd y sigo estando, gracias a Dios jajajaja), sin embargo, cuando me puse a investigar, me percaté de que en realidad ya existía un paquete nativo de GNU/Linux que me permitiera hacerlo; ahora bien, vamos a ver como hacerlo.

Lo primero ha sido buscar un poco sobre "pam-usb".
$sudo aptitude search pam-usb
Esto me permite conocer que existe un paquete llamado "libpam-usb", lo que me lleva directamente a leer la descripción del paquete.
$sudo aptitude show libpam-usb
PAM es un módulo para autenticación usando dispositivos USB; trabaja con cualquier módulo de autenticación como su, así como también cualquier manejador como GDM o KDM.
Aunque en la descripción del paquete se nos indica que podemos obtener mayor información en la URL www.pamusb.org/, vale acotar que he intentado ingresar varias veces y el Sitio Web parece no estar en funcionamiento.

Procedemos a instalar el paquete
$sudo aptitude install libpam-usb
Configuración

Luego de instalar el paquete, tenemos el poder, solo debemos saber usarlo, ya que si no lo configuramos, solo seremos un tonto con poder, y en mi experiencia personal, eso es más peligroso jajaja.
Primero, colocamos el pendrive en el equipo, es importante recalcar que teniendo este pendrive, tendriamos acceso ilimitado a la permisología del usuario que le configuremos, así que no les recomiendo dar la permisología del usuario root, (esto no sería muy sano).
Luego de haber insertado el pendrive en el equipo, usaremos el comando que nos permite añadir el dispositivo USB a la tabla de pamusb.
$sudo pamusb-conf --add-device Rait3-USB
Vale acotar que el primer pendrive con el que intenté, no lo detectó el módulo, la máquina lo montaba y el pendrive funcionaba correctamente, sin embargo el módulo no lo detectaba, (no todo es perfecto, ¿no?); la pregunta del siglo, ¿qué hice?, simple, cambié de pendrive y el siguiente si me proporcionó una salida como la siguiente.
$sudo pamusb-conf --add-device Rait3-USB
Please select the device you wish to add.
* Using "Kingston (136C0932618F)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: 37AD-8A2F)" (only option)
Name: Rait3-USB
Vendor: Kingston
Model: DataTraveler 2.0
Serial: 50E549XXXXXXXXXXXX815354
UUID: 37XX-XX2F
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Vale acotar que este comando debe utilizarse para cada pendrive que se desee utilizar.

Ahora procederemos a configurar el usuario que hará uso de ese dispositivo en su método de autenticación.
$ sudo pamusb-conf --add-user Rait3
Which device would you like to use for authentication ?
* Using "myusb" (only option)
User        : Rait3
Device        : Rait3-USB
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Ahora ya está configurado para que el usuario Rait3 inicie sesión en este equipo, sin embargo, procederé a verificar que eso funcione, para ello hacemos uso del siguiente comando.
$sudo pamusb-check Rait3
*Authentication request for user "Rait3" (pamusb-check)
*Device "Rait3-USB" is connected (good).
*Performing one time pad verification...
*Regenerating new pads...
* Access granted.
Listo, ya está configurado y por ahora, el equipo permite el inicio de sesión por dos métodos, (1) con la clave, (2) con el pendrive.

Se procede a editar el archivo /etc/pam.d/common-auth
$nano /etc/pam.d/common-auth
Se debe verificar que la línea auth posea sufficient o required, dependiendo de lo que se desee; toma en cuenta que required hace un doble chequeo, obligando así a tener el pendrive Y la contraseña, mientras que sufficient indica que es "suficiente" tener uno de los dos para poder loguearse.
auth sufficient pam_usb.so
Copyleft Rait3 - 2015

jueves, 26 de marzo de 2015

Servidores Virtuales


 


Por razones estrictamente laborales me he visto obligado a estudiar un poco sobre virtualización, diversos software para virtualizar y la instalación de un sistema que permita virtualizar equipos para servidores; como resultado de la investigación, me he planteado la redacción del presente artículo, con el objetivo de ayudar a los que como yo, necesiten virtualizar equipos para distribuir servicios.

Para comenzar, vamos a definir Virtualización:

Hablamos de algo virtual cuando nos referimos a una cosa que es simulada, por ejemplo, la realidad virtual, es la simulación de una situación; podríamos decir que es la creación de una versión virtual (en lugar de real) de algo; para el caso específico en que trabajamos actualmente, ese algo es un sistema operativo.

Por lo tanto, cuando creamos un equipo y dentro del mismo virtualizamos (por ejemplo), dos sistemas operativos, tendríamos 3 sistemas diferentes compartiendo exactamente los mismos recursos; por ejemplo podrías tener GNU/Linux Debian, MS Windows y GNU/Linux Ubuntu corriendo simultáneamente en el mismo computador físico.

Microsoft, en su página oficial de españa, nos indica que "La virtualización del hardware implica utilizar software para crear maquinas virtuales (VM) que emulan un host físico. Esto crea un entorno de sistema operativo independiente que es, lógicamente, aislado del servidor host. Al ofrecer varias máquinas virtuales a la vez, este enfoque permite que varios sistemas operativos corran simultáneamente en una única máquina física." http://www.microsoft.com/spain/virtualizacion/products/server/default.mspx Marzo, 2015.

Ventajas y desventajas de la virtualización
Tener varios sistemas operativos en un mismo hardware nos permite, sin ocupar tanto espacio físico, poseer diversos servicios que se suministren desde un sistema operativo propio, así, si el sistema operativo se daña, no necesitas preparar todo el hardware para reinstalar el sistema, simplemente borrar la máquina virtual y crearla de nuevo.

El respaldo de máquinas virtuales (VM) en un estado específico es una gran ventaja, ya que al momento de restaurar, simplemente se restaura el archivo o conjunto de archivos de la VM y ya el equipo operaría como lo hacía en la fecha de ese respaldo.

Supongamos que poseemos un equipo i7 con 8 Gb de memoria RAM, y necesitamos tener un servidor Web y un servidor de datos, sin embargo, nuestro requerimiento nos obliga a que el servidor de datos sea GNU/Linux y el Web en MS porque lo desarrollaron para trabajar únicamente con ISS (o alguna escusa por el estilo; no se amarguen amantes y defensores del software libre, es sólo un ejemplo; yo también soy fan del free software y de GPL).

Si apagas el equipo donde tienes las máquinas virtuales, o se daña el mismo, obviamente todas las VM dejarán de funcionar, una gran desventaja a tomar en cuenta.

Hypervisor
Un hipervisor o monitor de máquina virtual (VMM por Virtual Machine Monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes VM.

Tipos de Virtualización
Existen tres tipos específicos de virtualización, los cuales mencionaré a continuación:

  • Virtualización Completa
En la virtualización completa, "...los sistemas operativos (OS) usan drivers genéricos y estos OS permanecen inalterados. Se traduciría en que el hipervisor hace todo el trabajo sin alterar nada. Hoy en dia el rendimiento es bastante alto alto (aún haciendo el trabajo el hypervisor) porque al usar los mismos drivers genéricos que el host el kernel que usan es muy pequeño “Microkernel” y ademas aprovechan cualidades del hardware que cada vez mas esta preparado para la virtualización." 
http://blogs.itpro.es/problemas/paravirtualizacion/ Marzo, 2015

  • Virtualización Asistida por Hardware
No es muy fàcil de explicar sin complicar los conceptos y entrar a hablar sobre el funcionamiento de los sistemas operativos; por ahora sólo diré que el hardware permite pasar de un modo a otro para que el sistema operativo sea virtualizado.

  • Paravirtualización
Los sistemas virtualizados corren directamente sobre el procesador, sin emulación. Mientras que sistemas de virtualización completa como VMware y Virtual PC o Virtual Server de Microsoft utilizan una técnica conocida como binary translation, donde las instrucciones privilegiadas son reemplazadas con fragmentos de código que simulan las mismas; los sistemas que soportan paravirtualización (PV), parten de la base de que el sistema operativo huesped conozca que está siendo ejecutado en un entorno virtual, y por lo tanto modifique su comportamiento. Es importante acotar que un sistema operativo virtualizado no ejecuta el mismo código ni opera igual que si corriera en hardware real.

A diferencia de la PV, La técnica de virtualización completa es muy compleja y provoca grandes perdidas de rendimiento, sobre todo en aplicaciones con un uso intensivo de dispositivos. 

Ahora bien, sabiendo esto, podemos ver porqué decidí buscar un sistema de virtualización que aplicara la técnica de PV.

Software Analizados
Los software analizados para la virtualización fueron los siguientes
  1. Virtualbox
  2. VMware
  3. KVM
  4. XEN
  • Virtualbox
 Software de virtualización producido por Oracle, realmente es de fácil uso, y posee una versión distribuida bajo licencia GPL, gratuita. utiliza la técnica de virtualización completa.
  • VMWare
VMware es un sistema de virtualización por software que hace uso de la técnica virtualización completa, es muy bueno para entornos de estudio y pruebas, al punto que para los sistemas de estudio, tiendo a usar este sistema, sin embargo no usaría su versión gratuita para una virtualización de servidores puesto que no se explota al hardware en su máxima capacidad.
  • KVM
KVM (Kernel-based Virtual Machine) es una solución de software libre para virtualización completa y asistida por hardware, consiste en un módulo de kernel que provee la infraestructura de virtualización y un módulo específico de procesamiento (kvm-intel.ko o kvm-amd.ko. dependiendo del tipo de procesador sobre el cual corra). El componente de Kernel de KVM se encuentra incluido por definición en 2.6.20 y superiores.
  • XEN
Xen soporta ejecución de sistemas operativos invitados haciendo uso de las técnicas de Paravirtualización (PV) y virtualización Asistida por Hardware (HVM).

Tabla Comparativa

Aspecto a Comparar
XEN
KVM
Virtualbox
VMware
Full Virtualización
SI
SI
SI
SI
Paravirtualización
SI
SI
NO
NO
Licencia
GPL
GPL
GPL/Propietaria
Propietaria
Arquitecturas soportadas
i686, x86-64, IA64, PPC
i686, x86-64, IA64, PPC, S390
i686, x86-64
i686, x86-64
Rendimiento
Paravirtualización: Rápido
Virtualización Completa: Rápido
Paravirtualización: Rápido
Virtualización Completa: Rápido
Virtualización Completa: Rápida
Virtualización Completa: Rápida
Hotplug de Memoria y CPU
SI
SI
NO
SI
Necesita VT y AMD-V
Para Virtualización Completa
Requisito para cualquier usar cualquier técnica



Sabiendo esto se ha decidido hacer uso de XEN puesto que se ha encontrado mayor soporte y documentación para el mismo, además debo indicar que en un par de sitios leí que el rendimiento era 1 o 2 % mejor en XEN que en KVM, sin embargo, como no he podido comprobar esa información, no me basé en ella para mi decisión.

Instalación de XEN

    1.-Verificación de equipo

Como bien saben, yo soy fanático de Debian, por lo tanto, montaré mi equipo para máquinas virtuales (VM) en GNU/Linux Debian Stable (que para este momento es Debian Wheezy); ya teniendo una instalación limpia (totalmente nueva) de nuestro sistema operativo, procedo con la verificación y preparación del equipo para luego instalar y configurar XEN.

Lo primero que debemos hacer es comprobar que nuestro equipo soporte paravirtualización, para ello haremos uso del comando egrep.
"egrep es el componente más potente de la familia de órdenes grep. Al igual que fgrep, se puede utilizar para buscar múltiples objetivos. Lo mismo que grep, permite usar expresiones regulares para especificar los objetivos, pero proporciona un conjunto más completo y potente de expresiones regulares que grep. egrep acepta todas las expresiones regulares básicas reconocidas por grep, así como varias extensiones" http://nereida.deioc.ull.es/~pcgull/ihiu01/cdrom/unix/unix1/contenido/node77.html Marzo, 2014
    #egrep '(vmx|svm)' --color=always /proc/cpuinfo

La opción –color obliga al sistema a remarcar en color las opciones indicadas entre comillas.
Debe aparecer remarcado "VMX" si el equipo es INTEL o "SVM" si el equipo es AMD.

    2.- Instalando XEN

Procederemos a instalar XEN
    #aptitude install xen-linux-system-XXX xen-utils-4.0 bridge-utils

Xen trae su propio Kernel, y de ahora en adelante, necesitamos que el equipo al arrancar, bootee por él; para ello debemos cambiarle la prioridad al archivo de inicio del grub, esto se logra haciendo
    #mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux

Ahora actualizamos el la configuración del grub con el comando
    #update-grub2

     3.- Configurando parámetros de red a las virtuales

Debemos editar el archivo principal de configuración del xen, para esto editaremos el archivo /etc/xen/xen-config.sxp
    #nano /etc/xen/xen-config.sxp

Y debemos descomentar las líneas que posean lo siguiente
    (network-script network-bridge)
    (vif-script vif-bridge)
    (dom0-min-mem 1024) 

Explico un poco todas:
(network-script network-bridge): Es un script de Xen para habilitar el modo bridge (puente) en las Maquinas Virtuales , de esta manera, el equipo HOST de MV recibe una IP y sus GUEST reciben otras, sin embargo todas las máquinas se conectarán sin inconvenientes a la red.

(vif-script vif-bridge): Este script se utiliza para controlar el modo bridge.

(dom0-min-mem 1024): Ponemos un mínimo de memoria al dom0 que es el XEN en realidad, esto con la finalidad de asegurarnos de que la RAM no baje nunca de ese limite y poder certificar que en ningún momento tenga asignada menos memoria de la necesaria para poder funcionar correctamente.

    4.-Configurando los parámetros que se le darán a las VM al crearlas

Primero debemos instalar el paquete xen-tools, para ello hacemos uso del comando
    #aptitude install xen-tools

El archivo /etc/xen-tools/xen-tools.conf contiene los parámetros iniciales de configuración de las MV, debemos editarlo
    #nano /etc/xen-tools/xen-tools.conf

dir = /xen/vm
install-method = debootstrap
 # Tamaño del /
size   = 10Gb
# Memoria RAM
memory = 256Mb
# Tamaño del Swap
swap   = 1024Mb
# Tipo de sistema de archivos para /
fs     = ext4
#La distribución a utilizar
dist   = wheezy
# Configuración de red de las virtuales
gateway    = 192.168.1.1
netmask    = 255.255.255.0

# Contraseña al sistema.
Passwd = 123456

# Previene que las VM utilicen algún repositorio genérico obligándolos a utilizar el repositorio del Dom0.
mirror = `xt-guess-suite-and-mirror --mirror`

# Ext3 posee algunos valores definidos tales como, noatime. Si deseas cambiarlos, devuelvelos a “defaults”.
ext3_options     = defaults

# Permitir al comando xen-create-image el uso de pygrub, de esta manera el Grub de las VM es utilizado por ellas, así no se hace necesario almacenar los Kernels fuera de las VM. En resumen, esto es para permitir que nuestras VM arranquen solas.
pygrub=1

Explicación de lo que se acaba de hacer

dir: hace referencia al directorio donde se guardarán las imágenes de las maquinas virtuales .
install-method: método de instalación del sistema operativo al crear la maquina virtual. Existen 4 tipos diferentes
  1. copy: Instala copiando recursivamente un directorio .
  2. debootstrap: instala un sistema basado en Debian dentro de un subdirectorio de otro sistema ya instalado
  3. rpmstrap: Exactamente lo mismo que debootstrap pero con sistemas RPM .
  4. tar: Instala descomprimiendo un fichero .
size: Tamaño asignada la imagen que se generará para la maquina virtual. Esto generara un “disk.img” de ese tamaño.
memory: Memoria asignada a la maquina virtual.
swap: Swap que se asigna a la maquina virtual. Esto generara un “swap.img” de ese tamaño.
fs: Sistema de ficheros de la maquina virtual.
dist: Distribución que se instalará en la maquina virtual.
gateway: Puerta de enlace de la tarjeta de red de la maquina virtual .
netmask: Mascara de red de la tarjeta de red de la maquina virtual .
passwd: Contraseña por defecto del usuario root de la maquina virtual .
mirror: Repositorios por defecto del sistema operativo de la maquina virtual.
ext3_options: Opciones de la extensión de archivos ext3 que se pueden dar al montar el sistema de archivos .

Con esto ya tenemos todo configurado, es hora de crear las maquinas virtuales.

    5.-Creamos una MV

Pedimos a nuestro xen que cree la imagen de nuestra primera virtual .
    #xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1

Este comando es demora bastante puesto que descarga los paquetes, los descomprime y luego los instala, por esta razón yo prefiero ejecutar el comando conectándome por ssh al equipo; así podría desde mi PC remota mandar a ejecutarse el comando, y a la vez, desde el propio xen podría abrir el archivo .log que me muestra exactamente lo que está haciendo el comando.

Entonces, desde otro equipo hago 
         $ssh root@MI-IP

Así me conecto por SSH al equipo

Ahora ejecuto
   #xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1 
Y desde el xen abro el archivo /var/log/xen-tools/NombreVM.log
        #tail -f /var/log/xen-tools/NombreVM.log
Una vez el comando haya creado la imagen y regresado entonces a nuestro prompt normal continuaremos con el paso 6.

    6.-Levantamos la MV
Ejecutamos el comando para que suba las .img que se acaban de crear.
    #xm create servidorWeb.cfg

Con esto ya se ejecuta nuestra máquina virtual en Debian Wheezy.

    7.- Comando útiles
Ahora bien, indico los comandos que se utilizan para gestionar las VM

Comando Función
xm shutdow servidorWeb Solicita a la VM que se apague
xm pause servidorWeb Pausar la VM para hacer respaldos y acciones especiales.
xm destroy servidorWeb Destruir una VM esto la forza a que el equipo se reinicie.
xm reboot servidorWeb Reiniciar una VM.
xm list Saber qué VM se están ejecutando en el equipo.
xm consoleNombreVM Conectarse a la VM desde el propio XEN. Nótese que a mi parecer es preferible instalar SSH en la VM y conectarse remotamente a ella; así no se congelan en la sala de servidores.
xm rename NombreActualVM NuevoNombreVM Cambiar el nombre de una VM
xm top Monitorear todas las VM en tiempo real
xm uptime Saber el tiempo que las VM llevan operativas
xm vcpu-list Visualizar cada una de las VM y la información sobre sus CPU
xm vcpu-set NombreVM 2 Cambiar el número de procesadores de una VM, en este ejemplo específico se está cambiando a 2
xm mem-max NombreVM 1024 Cambiar el valor de la memoria RAM máxima de una VM, en este ejemplo se está cambiando a 1024MB.

    8.-Pasos para remover una VM

Si en realidad quieres eliminar tu VM y que no se pueda utilizar nuevamente, el proceso a ejecutar es el siguiente:

Si la VM está corriendo, mándala a detener utilizando
    #xm destroy NombreVM
Borra las imagenes creadas
    #rm /xen/vm
Elimina el archivo de configuración de la VM ubicado en /etc/xen
    #rm /etc/xen/NombreVM.cfg

     9.-Cambiar el número de loops de XEN
Como root debemos ejecutar el siguiente comando
    #modprobe loop max_loop=64

Para más información al respecto, recomiendo la lectura de las siguientes URLs:

Virtualización VS Paravirtualización http://blogs.itpro.es/problemas/paravirtualizacion/ 

PD: Todas estas páginas fueron revisadas durante el mes de Marzo de 2015.
Copyleft 2015 - RAITE