domingo, 15 de noviembre de 2015

Instalar Webmin y Usermin en Bananian (Debian)

Instalación

Para la administración de mi Banana Pi, me pareció interesante utilizar Webmin, una aplicación CGI que permite administrar computadores a través de una interfaz web.
Lo primero es agregar el repositorio de Webmin a las fuentes de de APT, ya que este paquete no se encuentra en los repositorios de Debian.
Para ello creamos el siguiente archivocon de texto:
/etc/apt/sources.list.d/webmin.list
Y le agregamos las siguientes líneas
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Agregamos la clave pública con la cual están firmados los paquetes DEB de Webmin
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Actualizamos la información de repositorios de APT y los paquetes instalados
sudo aptitude update && sudo aptitude full-upgrade -y
Instalamos Webmin y Usermin
sudo aptitude install webmin usermin 
Para acceder a Webmin debemos navegar a https://ejemplo.com:10000
Para acceder a Usermin debemos navegar a https://ejemplo.com:20000

Configuración de Webmin en Subdirectorio con HTTPS

Basándonos en las indicaciones para Webmin con Apache (no aptas para proxy con SSL).
Para poder acceder a estas aplicaciones a través de https://ejemplo.com/webmin/
Habilitamos el módulo proxy de Apache HTTPD con
sudo a2enmod proxysudo service apache2 restart
Modificar el archivo /etc/webmin/config, agregando las siguientes líneas
webprefix=/webmin
webprefixnoredir=1
referer=ejemplo.com
Modificar el archivo /etc/webmin/miniserv.conf, agregando la siguiente línea
cookiepath=/webmin
Reiniciar Webmin ejecutando
/etc/webmin/restart 
Y agregamos a dentro de VirtualHost en /etc/apache2/sites-available/default-ssl.conf
### Webmin ###
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration
# (or desired virtual host, if using Apache virtual hosts)

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
#ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Proxy>

ProxyPass /webmin https://localhost:10000
ProxyPassReverse /webmin https://localhost:10000

<Location webmin="">
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Location>
Esta configuración tiene carácter experimental. Un cambio deseable es que Webmin utilice un certificado SSL en el cual Apache HTTPD confíe, a fin de cambiar "SSLProxyVerify none"

domingo, 8 de noviembre de 2015

Encontrar la dirección IP de un equipo en la red local (nmap)

Lo primero que tuve que hacer cuando comencé a utilizar mi Banana Pi, fue averiguar cuál dirección IP le había asignado el enrutador por DHCP, para poder conectarme por SSH y hacer las respectivas configuraciones.
Aprovechando que tengo Nmap instalado en mi computador de escritorio, hice uso de los siguientes comandos (desde Windows).
Para obtener los datos generales de la red local:
ipconfig
El cual da como respuesta un listado de la información de todas las interfaces de red del equipo. En la interfaz apropiada (inalámbrica o cableada, por ejemplo), nos interesan los siguientes datos:
   IPv4 Address. . . . . . . . . . . : 192.168.0.80
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
Con la dirección IP y la máscara de subred, ejecutamos (con permiso de Administrador)
nmap -sP 192.168.0.80/24
El listado resultante nos indicará cuáles direcciones IP están activas en la red local, así como el nombre del equipo.

sábado, 7 de noviembre de 2015

Windows: Cómo saber quien está conectado a un servidor remoto

A veces es necesario conectarse a un servidor Windows remoto, pero por limitaciones en el número de licencias, se debe revisar primero quién está conectado.
Una forma de hacerlo, es intentar conectarse y que el Servidor indique si hace falta expulsar a alguien para poder conectarse. Pero esa forma me parece poco elegante y algo intrusiva.
Buscando en internet conseguí el comando query, que permite listar los usuarios conectados a un servidor, ejecutando la siguiente sentencia en CMD:
query user /server:example.com

miércoles, 4 de noviembre de 2015

Cómo ejecutar sentencias PHP desde la consola

Estaba revisando el código de algunas páginas en PHP y quise validar, rápidamente, el valor de algunas expresiones utilizadas. 
Para no tener que montar un depurador, o configurar un ide, o empezar a escribir mini páginas PHP de prueba, decidí averiguar como ejecutar PHP desde la consola.
Resultó ser bastante sencillo
php5 -r 'echo php_uname("n") . "\n";'

lunes, 2 de noviembre de 2015

Configurar HTTPS en Banananian (Debian)

Ya configurado Apache HTTPD en mi Banana Pi, el siguiente paso paranoico lógico es configurar HTTPS para que el tráfico quede cifrado. De esta forma se protege la confidencialidad de cualquier información importante (como contraseñas) que tengan que viajar por la red.
Encontré un tutorial para Debian, bastante completo, en Digital Ocean.
En resumen, para asegurarnos de que estén instalados y actualizados tanto Apache HTTPD como OpenSSL, activar HTTPS y generar el certificado SSL:
sudo aptitude update
sudo aptitude full-upgrade
sudo aptitude install apache2 openssl
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
sudo mkdir /etc/apache2/ssl

sudo openssl req -x509 -nodes -days 365 -newkey \
rsa:2048 -keyout /etc/apache2/ssl/apache.key -out \
/etc/apache2/ssl/apache.crt
sudo chmod 600 /etc/apache2/ssl/*
Luego es necesario editar el archivo de configuración del sitio web SSL con
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Allí debemos modificarlo para que quede de la siguiente manera:
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName www.example.com:443
        DocumentRoot /var/www/html
        . . .
        SSLEngine on
        . . .
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Reiniciamos el servicio Apache HTTPD
sudo service apache2 reload
En este punto el servicio Apache HTTPD está respondiendo peticiones por HTTP y por HTTPS. Para que todo el tráfico HTTP sea redirigido a HTTPS, editamos la configuración del sitio por defecto con
sudo nano /etc/apache2/sites-enabled/000-default.conf
Y modificamos el archivo de forma que quede así
<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost >
Finalmente, reiniciamos el servicio Apache HTTPD
sudo service apache2 reload

domingo, 1 de noviembre de 2015

Si la consola no autocompleta (2)

Hace un (largo) tiempo, tuve que modificar la configuración de bash en mi laptop (con Ubuntu) porque no podía autocompletar con la tecla de tabulación comandos como aptitude o apt-get. Me encontré con el mismo problema en mi Banana Pi, con Bananian, pero el problema no estaba en el archivo .bashrc, ya que éste ya tenía activa la opción para autocompletar.
Luego de algunas búsquedas en Internet, di con el tema: faltaba instalar el paquete bash-completion
sudo aptitude install bash-completion
Luego de recargar bash, comenzó a funcionar el autocompletado para aptitude y apt-get
bash 

sábado, 31 de octubre de 2015

Instalando Apache HTTPD en Bananian (Debian)

Lo primero que tengo que hacer para poder utilizar mi Banana Pi como un servidor de Intranet en mi casa es instalar el servidor web.
Empezamos con la instalación de Apache2 y los paquetes que recomienda.
sudo aptitude install apache2 -r
Luego viene la configuración de los módulos, en particular userdir, que permite que los usuarios del servidor puedan publicar sitios en html en la dirección servidor/~nombredeusuario, con tan solo guardarlos en el directorio public_html de su carpeta personal.
sudo a2enmod userdir.load
Luego unas medidas de seguridad sencillas: Desactivamos que indique su versión y el sistema operatico en las cabeceras HTTP y en el pie de página de algunas páginas por defecto. Es necesario editar el archivo /etc/apache2/conf-enabled/security.conf y fijar los siguientes valores
ServerTokens ProductOnlyServerSignature Off 
Finalmente, reiniciamos el servicio Apache2
sudo service apache2 restart
Ahora tenemos un servidor web en el Banana Pi.

Para deshacernos del siguiente mensaje:
apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.162. Set the 'ServerName' directive globally to suppress this message
Creamos el siguiente archivo
sudo nano /etc/apache2/conf-available/ServerName.conf 
Cuyo contenido debe ser
ServerName nombredelservidor
Activamos este archivo de configuración con
sudo a2enconf ServerName.conf
Y reiniciamos el servicio Apache2 nuevamente
sudo service apache2 restart

viernes, 30 de octubre de 2015

Primeros pasos con Bananian (Debian)

Luego de instalar Bananian Linux en la tarjeta Micro SD, como indiqué en el artículo anterior, llegó la hora de arrancar el sistema y ejecutar los pasos iniciales.
  1. Configuración inicial del sistema. Nombre del equipo, localización e idioma, zona horaria, etc.
  2. bananapi-config
  3. Actualizar el sistema. Descargar la información de los repositorios y actualizar las aplicaciones ya instaladas.
  4. aptitude update && aptitude full-upgrade -y
  5. Credenciales. Cambiar la contraseña del superusuario, crear mi usuario, y hacerlo administrador
  6. passwd
    adduser usuarionuevo
    aptitude install sudo
    adduser usuarionuevo sudo
Ahora tengo un sistema actualizado, puedo dejar de lado el superusuario y utilizar un usuario a mi medida.

jueves, 29 de octubre de 2015

Requsitos para utilizar una Banana Pi

Un poco tarde, pero estoy llegando a la tendencia de los pequeños computadores integrados, donde destacan los Raspberry Pi. Al analizar mis opciones, decidí irme por un clon, conocido como Banana Pi, que para mí, tenía un balance precio-desempeño más atractivo.
Lo primero fue comprar el Banana Pi, una tarjeta Micro-SD y un cargador Micro USB. En particular me decidí por una tarjeta Micro-SD clase 10 y de 32 GB que me permitiera tener cierta comodidad con el espacio en disco. En cuanto al cargador, me decanté por uno apto para tabletas (5V y 2A), en lugar de uno apto para celulares (5V y 1A).
Luego descargué Bananian Linux, una distribución ligera pensada para estos dispositivos, basada en Debian y lo grabé en la tarjeta Micro SD utilizando Win 32 Disk Imager.
Luego escribiré sobre la configuración inicial de Bananian.

Calcular resumen criptográfico MD5, SHA1 y SHA256 en Windows

Recientemente tuve la necesidad de comprobar la integridad de una descarga en Windows. Usualmente, cuando son descargas grandes, utilizo Firefox con el complemento DownThemAll, el cual permite agregar el valor del resumen criptográfico para validar el archivo. Pero como ya el archivo estaba descargado, decidí buscar una solución para este caso.

Luego de buscar en Internet, conseguí una herramienta de Microsoft que cumple esta función. Se trata de File Checksum Integrity Verifier (FCIV).

  1. Descargué el archivo ZIP desde la página y lo descomprimí.
  2. Creé una carpeta FCIV en Archivos de Programa (Como administrador en la consola de comandos):
  3. mkdir %PROGRAMFILES%\FCIV
  4. Luego, moví el contenido del archivo ZIP a la carpeta recién creada
  5. Finalmente, añadí el directorio creado a la variable de ambiente PATH
  6. setx PATH "%PATH%;%PROGRAMFILES%\FCIV"
Para utilizar la herramienta, sólo hay que ejecutar en la consola
fciv archivo
Para conocer las opciones
fciv /? 

jueves, 10 de septiembre de 2015

Desinstalar actualizaciones de Windows por consola de comandos

Estaba leyendo sobre varias actualizaciones indeseables de Windows, y decidí validar que no estuviesen instaladas en mi sistema, para lo cual fui a la sección de Actualizaciones de Windows en el Panel de Control.

Sin embargo, me resultó engorroso consultar puntualmente si las actualizaciones de mi interés estaban instaladas o no.

Buscando en Internet, conseguí que el comando para listar todas las actualizaciones instaladas es:
wmic qfe list
Podemos filtrarlo utilizando
wmic qfe list | findstr KB1234567
Podemos redireccionar la salida del comando a un archivo de texto, y ahí consultar más cómodamente con
wmic qfe list > C:\kblist.txt
cat C:\kblist.txt | findstr KB1234567
Para desinstalar una actualización, basta con ejecutar
wusa /uninstall /kb:1234567 /quiet /norestart 

viernes, 4 de septiembre de 2015

Instalación sencilla de Sysinternals

Viniendo de Linux, me resultó particularmente frustrante que al intentar ejecutar el comando "whois" en la consola de comandos de Windows, me indicase que no existía ese ejecutable en mi equipo.

Una rápida búsqueda en Google me lleva a la página de Microsoft de Sysinternals, y allí veo que tengo la opción de descargar "whois" individualmente, o la suite completa. Para no pasar otra vez por una molestia similar, decidí descargar la suite.

Pensé que el archivo ZIP iba a tener algunas indicaciones, o por lo menos recomendaciones, para instalarlos, pero no fue el caso. Es un archivo ZIP que contiene un montón de ejecutables, un archivo LEEME, acuerdos de usuario final, y algunos archivos de ayuda para las aplicaciones.

Otra búsqueda en Google, me lleva a varios instaladores desarrollados por terceros -lo cual no me inspira mucha confianza- y algunos guiones de comandos en algunos foros para crear accesos directos en el menú inicio -lo cual no me interesa.

Finalmente, decidí abrir CMD como administrador, ejecutar el comando
mkdir "C:\Program Files\Sysinternals"
Copiar el contenido descomprimido del archivo zip dentro de esa carpeta, y luego agregarla a PATH, para que sea ejecutable desde la consola sin tener que indicar la ruta completa del ejecutable. Para eso ejecuté:
setx PATH "%PATH%;C:\Program Files\Sysinternals"
Listo. Ahora puedo ingresar whois ejemplo.com desde la consola. La primera vez que se ejecuta pide aceptar un acuerdo de usuario final.

viernes, 7 de agosto de 2015

Error con la JRE al editar Macros en Libreoffice Basic

Estaba intentando automatizar un patrón particular de búsqueda y reemplazo en unos documentos, buen Windows, y se me ocurrió que una forma de realizarlo sería utilizando Macros de Libreoffice.
Primero tuve que habilitar la ejecución de Macros, para lo cual Libreoffice me solicitó que especificase un ambiente de ejecución de Java (JRE). Sin embargo, Libreoffice me indicó que el JRE seleccionado estaba defectuoso o no era compatible.
Luego de buscar en Internet, encontré que este error se presenta si Libreoffice està compilado para 32 bits y la JRE especificada es de 64 bits. La versión de Libreoffice para Windows está compilada para 32 bits.
El problema se solucionó al instalar una versión de la JRE de 32 bits y configurar Libreoffice para que la utilizase.

lunes, 16 de febrero de 2015

Modificar los menúes en Gnome Classic

Como antiguo usuario de Gnome2, prefiero utilizar Gnome Classic (antiguamente llamado Fallback) que Gnome3 o Unity. De la misma forma, es la opción de escritorio que dejo a mis padres, quienes ya aprendieron a utilizar Linux con Gnome2, y Gnome Classic les permite utilizarla sin tener que recibir un nuevo entrenamiento.
En estos días se presentó un problema en el panel inferior con la barra de tareas, la cual dejó de mostrar las aplicaciones abiertas para poder alternar entre una y otra, teniendo que recurrir a la combinaciòn de taclas Alt + Tab para cambiar entre ventanas.
En Gnome2, esto se abría resuelto haciendo clic secundario en el panel, y agregando algún elemento (widget) o icono. Luego de un par de búsquedas en Google, pude averiguar que en Gnome Classic sencillamente hay que pisar la tecla Alt y luego hacer el clic secundario en el panel. Después de esto el procedimiento es muy similar, incluso idéntico, al de Gnome 2.