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