El SysAdmin del 3er Mundo

todo lo que expliqué mientras nadie prestaba atención

segwit con p2sh en electrum

| Comments

Resulta que los trezor, a pesar de tener segwit, no mandan bitcoins a direcciones que empiezan con “bc1”, solo a las p2sh clásicas (las que empiezan por 3).

Pero mientras la democrática cadena de bloques se pone de acuerdo (y los tarados actualizan sus trezors) hay una pila de satochis por pasar. Para aquellos que trabajan con sumas pequeñas de BTC, segwit es realmente de gran ayuda. Pero resulta que electrum; desde ya, en su implementación de segwit, usa direcciones bc1 (desde la version 3).

Si tienes que recibir una transacción segwit proveniente de un trezor o un ledger, tienes tres opciones. Usar una cartera web, o, usar un cliente de bitcoin y descargarte toda la cadena de bloques (naaaaa, hoy en día no puedes hacer eso en cuba), o simplemente, meterle una cañona a electrum.

Mycelium es una buena variante, pero es propietario y de código cerrado. Electrum (la mejor cartera en mi opinión) es libre como las papas y si bien no es la mejor solución, al menos resuelve; bastará hacerle una brujería.

La idea es:

  • 1) crear una cartera con segwit (de las que usan bc1)
  • 2) eliminarla
  • 3) restaurar esa misma cartera
  • 4) usar una semilla bip39
  • 5) cambiar la derivation de 44 a 49

Las instrucciones para crear una cartera son las clásicas: Nueva cartera standard, luego segwit.

Luego, pedimos una cartera del tipo standard, con segwit (no standard-standard).

Una vez que la cartera halla arrancado. Elimínala!: Archivo/Eliminar!

Luego procedemos a Restaurarla.

Corremos nuevamente el asistente, esta vez con “I already have a seed” (no está traducido al español).

Luego metes las palabras claves y presiona el botón Opciones.

-eh miren! El que escribó el artículo ha puesto su semilla, seguro tiene un montón de btc ahí!!

Nunca falta el anormal que restaura dicha cartera y se topa con que está vacía como su cabeza.

Mientras, tú y yo seguimos en lo que estábamos. En las opciones, activas la casilla bip39.

A continuación, nos preguntará que derivation quieres usar, poniendo la que genera el bc1. Ahí sustituiremos el 44 por un 49.

REPITO, cambiamos el 44 por un 49

Y listo! Ahí tienes una cartera que los trezor y los ledgers la entienden bien.

NOTA IMPORTANTE! Lo que acabas de ver, no está recomendado que se haga. Si vas a transferir un dineral, hazlo con una cartera normal y paga una comisión decente.

Muy pronto, veremos si con segwit seguimos teniendo Veritas in Numeris. Yo pienso que cuanto más rápido la gente comprenda que segwit no es una cadena aparte, solo una manera diferida de hacer las transacciones y si el sistema de penalizaciones funciona, todo estará bien.

Claro, no estamos exceptos de las nuevas amenazas que están por descubrirse. Además, no exponemos a que muchos nodos se dediquen a organizarse en una especie de “mafia de la blockchain” y empiecen a hacer cosas feas; pero eso, es una amenaza potencial, puede suceder con o sin segwit.

Espero tomarme un café en el Studient (una buena cafetería que está junto al calixto garcía) y pagarlo con el teléfono, usando bitcoin conectado a la wifi/4G de Nauta.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

segwit y la confusión

| Comments

No voy a explicar que es Segwit y como funciona, para eso está la wikipedia.

Tampoco voy a entrar en el filosófico debate de si bitcoin es una burbuja. Allá el que siga confiando más en billetes de papel y fiat que en computadoras y criptografía.

La implementación final de segwit, le ha dado a muchos un portazo en la cara y andan cagados del miedo contando bloques con/sin segwit.

Pero era algo que caía por gravedad tarde o temprano; ya que le cadena de bloques no daba más. Puedes hacer un simple experimento, transfiere una suma pequeña con una comisión baja y ponte cómodo que va pa largo.

Los criticones de segwit consideran que pagar un café con bitcoin es matar moscas a cañonazos. Que sigan usando papeles locales para comprar café, eso no cambiará en muuuuucho tiempo.

Los cubanos ya estamos acostumbrados a tener dos monedas; así que yo en lo personal me lo estoy tomando de maravilla. La cartera clásica para las transacciones “grandes” y la segwit pa ir moviendo quilos. Qué cubano no tiene CUC y CUP en su billetera? Pues esto es igual. Yo pienso que durante al menos un par de años más, los temerarios seguirán contando bloques con/sin segwit.

A todas estas, el hijo de puta de Roger Ver aprovechó la confusión para seguir sembrando cizaña y hacer del fork, su propio bitcoin. Le ha hecho creer a medio mundo con segwit es una cadena aparte de la blockchain principal, como btch.

Mientras tanto, la implementación de segwit sigue caminando, pero ahora resulta que algunos trezor (más de uno ya me he topado), usan direcciones 3 en vez de bc1. O sea que no reconocen las bc1 como dirección. En el próximo post, explicaré como configurar electrum para generar una cartera 3* con segwit; porque en lo que se ponen de acuerdo; las transacciones siguen pie y cuando son montos bajos, segwit es muy útil.

También he tenido un ojo sobre una app de android llamada Samourai, similar a Mycelium. Emite direcciones 3 y 1 con solo tocar un botón. Pero de momento está en su versión Alpha. Eso sí, parece venir muy buena, por que las 4 mierdas que tienen le funcionan muy bien.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

instalando pandorafms

| Comments

Me gustaba mucho nagios. Me creía el rey del mundo cuando aprendí a hacer plugins. Pero cuando vi esta herramienta, cuya su simpleza me llevó a pensar que nagios es un juguete comparado con; el software de monitoreo que utiliza google para sus servidores. Me refrito a PandoraFMS. Tiene además, wiki, blog, comunidad y demás; así que no estamos solos como en nagios que su filosofía es “paga pa que te configure”.

Ah por cierto, el software es español, así que hay muuuucha documentación en la lengua madre.

Los plugins que tardé meses en escribir, afinar y acoplar a nagios, me hubiera tomado días hacerlo en pandora. La interfaz le da 4 galletas a nagios. Sobre todo, porque manage y config se hacen desde la interfaz (para los cobardes de consola).

Las soluciones de pacotilla como izinga y zabbix; no juegan en estas grandes ligas. Ni siquiera las compararé. Para no hablar de cacti, mrtg, y demás porquerías que hasta han pasado de moda.

Lo mismo monitorea snmp y via interfaz web se escriben consultas tcp personalizadas. Además, está el esquema de plugins que son sencillísimo. Escribir un plugin requiere saber shellscript o cualquier mierda que procese argumentos. En eso nagios también tiene su punto.

Primero: Debe tener claro que pandora se compone por:

Pandora Server Una monstruosidad de aplicaciones que corren de manera simultanea como un núcleo. El sistema que monitorea todo.

Web console La interfaz web que tiene tremenda pinta y además, nos permite manipular pandora (server).

Agents Piezas de software que nos permite monitorear. Ya se locales o remotos.

Primero la LAMP clásica. Para los radicales de la moda, usaremos apache porque pandorafms fue diseñado para apache.

Típico despliegue mysql

“instalación rápida de mysql”
1
2
3
4
 yum -y install mariadb-server
 systemctl start mariadb
 systemctl enable mariadb
 mysql_secure_installation

Creamos el “.repo” y configuramos el repo oficial de artica.es para centos7.

“/etc/yum.repos.d/pandorafms.repo”
1
2
3
4
5
 [pandorafms]
 name=PandoraFMS official repo
 baseurl=http://firefly.artica.es/centos7
 gpgcheck=0
 enabled=1

La guinda del pastel.

1
  yum -y install pandorafms_console

Una vez instalado pandora, apache se ha seleccionado como httpd. Hay que habilitarlo.

1
2
 systemctl start httpd
 systemctl enable httpd

Si usas firewalld (no te lo recomiendo, pesa un mundo y usa dbus). Abre el puerto 80.

1
2
 firewall-cmd --zone=public --add-port=80/tcp --permanent
 firewall-cmd --reload

Pandora tiene que escribir en ciertos directorios usando el servidor web. Así que con el delicado permiso de Selinux.

1
2
3
4
5
 yum install -y policycoreutils-python
 semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/pandora_console/include'
 semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/pandora_console/attachment'
 restorecon '/var/www/html/pandora_console/include'
 restorecon '/var/www/html/pandora_console/attachment'

Para los no familiarizados con selinux, pueden ir a /etc/selinux/config y donde dice enforcing ponle disabled, luego reinicia.

Una vez instalado todo, nos dirigimos a la consola web que apache por defecto la pone en un alias /pandora_console o sea. http://ip.de.tu.server/pandora_console

Te saldrá un asistente para retrasados mentales.

ATENTO!!!! Una pantalla que olvidé salvar te dirá que ha creado un usuario privilegiado para pandora con un password que genera de manera aleatoria. COPIALO. Para configurar el pandora server lo vas a necesitar.

Bueno llegado a este punto ya tenemos la consola web pero no tenemos el pollo del arroz con pollo. Al corazón de pandorafms, suele llamársele también tentacle (tentáculo). Ahora es cuando de verdad vamos a instalar el sistema de monitoreo.

1
 yum install pandorafms_server

Llégate al fichero /etc/pandora/pandora_server.conf cerca de la linea 43. Ten encontrarás algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 dbengine mysql

 # Database credentials. A VERY important configuration.
 # This must be the same credentials used by your Pandora FMS Console
 # but could be different if your console is not running in the same
 # host than the server. Check your console setup in /include/config.php

 # dbname: Database name (pandora by default)

 dbname pandora

 # dbuser:  Database user name (pandora by default)

 dbuser root

 # dbpass: Database password

 dbpass secretisimo

 # dbhost: Database hostname or IP address

 dbhost 127.0.0.1

No lleva mucha explicación. Las credenciales de la base de datos tal como la configuraste al principio.

Ahora bien. Arrancar los servicios por primera vez es importante, luego ellos arrancarán solo. Pero como el paquete es oriundo de centos6, aún conserva la retrocompatibilidad de arrancada de servicios.

“arrancando servicios”
1
2
 /etc/init.d/pandora_server restart
 /etc/init.d/tentacle_serverd restart

Esta información es un extracto de la documentación oficial.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

daloradius y sus amigos

| Comments

En un tutorial anterior, examinábamos como funcionaba radius. Mencionábamos que Radius, podría funcional usando MySQL (y otros sql) como backendcore. Finalmente un cliente necesitó una solución de capa completa y he aquí; la prometida expansión del mencionado artículo.

"Así luce daloradius"

Claramente, no basta con que radius sea la mar de versátil, requerimos además; una herramienta lo suficientemente digna de manipular 500 o 1’000 usuarios y esa herramienta es daloradius.

Daloradius es una interfaz web, no solo linda, si no, lo suficientemente funcionar como para sacarle el jugo a freeradius. Permite además, hacer operaciones predefinidas muy buenas para cosas como hotspot, etc… Lo más especial en mi opinión es el sistema de contabilidad. Muy bueno para cuotas.

En fin, instalamos el software necesario.

“instalar las cosas”
1
2
3
 [root@radius ~]# yum update
 [root@radius ~]# yum install -y epel-release
 [root@radius ~]# yum install -y mariadb-server mariadb freeradius freeradius-mysql freeradius-utils

Primero y principioso, hay que configurar el servidor de MySQL, o sea, inicializarlo.

“instalar las cosas”
1
 mysql_secure_installation

Una vez que tenemos el servidor sql listo, procedemos a crear la base de datos.

1
mysql -uroot -p
“creando base de datos”
1
2
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "secreto";

Lamentablemente freeradius no tiene un instalador. Así que hay que llenar la base de datos manualmente.

1
mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

Habilitamos el módulo de SQL para freeradius

1
ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled

Ahora vamos a editar una serie de parámetros de radius. Para ello nos dirigimos al directorio /etc/raddb/ ya que allí hay unos cuantos ficheros que modificaremos.

En el fichero radiusd.conf vamos a hacer unos cuantos cambios así que atentos.

Para empezar, localiza la sesión que carga los módulos, debe quedar así.

1
2
3
modules {
   $INCLUDE mods-enabled/
}

Como habrá notado, la estructura de los directorio de configuración de radius, se de un aire a la de apache en debian. La configuración como tal, se parece más a nginx.

Como vimos, radius es muy modular. Puede usar numerosos backendcores, entre ellos sql. En el fichero sites-available/default modificaremos ciertos parámetros para que TODO funcione contra SQL.

Localizaremos las sesiones, authorize, accounting, session, post-auth, Post-Auth-Type REJECT.

Más o menos el fichero luciría así:

“scope del default”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
authorize {
   ...
   sql
   ...
}

accounting {
   ...
   sql
   ...
}

session {
   ...
   sql
   ...
}

post-auth {
   ...
   sql
   ...
}

Post-Auth-Type REJECT {
   ...
   sql
   ...
}

Ya dijimos que usaremos sql, así que tenemos que configurar la conexión a dicha base de datos. El fichero mods-available/sql contiene dicha configuración. A mi me quedó así:

“sql”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
sql {
  
   driver = "rlm_sql_mysql"
  dialect = "mysql"
  server = "localhost"
  port = 3306
  login = "root"
  password = "secreto"

  radius_db = "radius"
  acct_table1 = "radacct"
  acct_table2 = "radacct"
  postauth_table = "radpostauth"
  authcheck_table = "radcheck"
  groupcheck_table = "radgroupcheck"
  authreply_table = "radreply"
  groupreply_table = "radgroupreply"
  usergroup_table = "radusergroup"
  delete_stale_sessions = yes

  pool {
      start = 5
      min = 4
      max = ${thread[pool].max_servers}
      spare = 3
      uses = 0
      lifetime = 0
      idle_timeout = 60
  }

  read_clients = yes
  client_table = "nas"
  $INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}

Finalmente probamos la configuración de radius.

1
 radiusd -X

Ahora la guinda del pastel, el daloradius. Primero instalamos una dependencias requeridas.

1
2
yum install epel-release
yum install php-mysql php php-pear php-gd php-pear-DB

Los clásico, descargar e instalar daloradius.

1
2
3
4
5
 wget http://sourceforge.net/projects/daloradius/files/latest/download?source=files
 tar zxvf download?source=files
 mv daloradius-0.9-9/* /var/www/html/
 chown -R nginx:nginx /var/www/html/
 chmod -R o+rxw /vat/www/html/

En el presente tutorial, asumimos que ya tienes una LEMP instalada…

Otro que no tiene configuración es daloradius, así que debes setear los parámetros manualmente. El fichero de configuración se llama library/daloradius.conf.php. De los parámetros, los que más nos interesan son.

“library/daloradius.conf.php”
1
2
3
4
5
6
7
8
 $configValues['DALORADIUS_VERSION'] = '0.9-9';
 $configValues['FREERADIUS_VERSION'] = '3';
 $configValues['CONFIG_DB_ENGINE'] = 'mysql';
 $configValues['CONFIG_DB_HOST'] = 'localhost';
 $configValues['CONFIG_DB_USER'] = 'radius';
 $configValues['CONFIG_DB_PASS'] = 'secreto';
 $configValues['CONFIG_DB_NAME'] = 'radius';
 ...

Al igual que con freeradius, tenemos que inicializar la base de datos manualmente, ya que como mencioné, daloradius no tiene instalador. Ojo, que la línea es larga.

1
mysql -u root -p radius < /var/www/html/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

El usuario del loguearte la primera vez es administrator y la contraseña radius.

Bueno, ahora puede empezar a crear usuarios…

Puedes configurar el squid para que se autentique mediante radius, la linea del autenticador queda más o menos así:

1
 /usr/lib64/squid/basic_radius_auth -h 127.0.0.1 -w testing123

En este presunto caso, el squid y el radius, están instalados en el mismo servidor. Pero si quieres que otro host se conecte, debes declararlo en el fichero /etc/raddb/clients.conf. De otra forma, todo el que pida autenticación; será deliberadamente denegada. Coloca la configuración encima de la del localhost.

“/etc/raddb/clients.conf”
1
2
3
4
5
6
7
client mi_servidor {
  ipaddr = 192.168.1.10/24
  secret = misecerto
}

client localhost {
   ...

Sucesivamente, puedes tener declarado cuantos host quieras y cada uno tiene parámetros individuales, por ejemplo, al host mi_servidor, se le cambió el secret.

Así sucesivamente puede configurar los AP, le declaramos la autenticación WPA2. Para que tenga una idea, esto sería una configuración de hostapd.

“/etc/hostapd/hostapd.conf”
1
2
3
4
5
6
7
8
9
10
11
12
13
ssid=MiAP
interface=wlp2s0
driver=nl80211
ieee8021x=1
hw_mode=g
channel=9
wpa=2
wpa_key_mgmt=WPA-EAP
rsn_pairwise=CCMP
auth_algs=1
auth_server_addr=127.0.0.1
auth_server_port=1812
auth_server_shared_secret=testing123

Por ejemplo, así quedaría un DDWRT, usando autenticación WPA2 contra radius.

"un ddwrt acoplado a un radius"

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

odoo en centos7

| Comments

Odoo, el sucesor de openerp; un software muy versátil, con funcionalidades para manejar cualquier negocio (ERP). En mi caso; lo uso para manejar facturación y la contabilidad de mi negocio. Aunque tardé casi 3 meses en divorciarme de gnucash.

Recién me vi obligado a reinstalarlo pero resulta que los .deb están mirando pa debian8, por tanto, decidí instalarlo en centos7.

Como mi laptop no virtualiza, tengo centos7 en un contenedor de LXC. Esto me resulta más confiable que docker, ya que he tenido muy malas experiencias linkando el container de postgres con el de odoo.

Vamos a necesitar unas cuantas cosas del repo EPEL y un servidor de postgresql operacional.

1
2
3
 yum install -y epel-release
 yum update
 yum install -y postgresql-server

Inicializamos el servidor de postgresql

1
2
3
 postgresql-setup initdb
 systemctl start postgresql
 systemctl enable postgresql

Creamos un repositorio para odoo, a mi me quedó así

“/etc/yum.repos.d/odoo.repo”
1
2
3
4
5
6
 [odoo-nightly]
 name=Odoo Nightly repository
 baseurl=http://nightly.odoo.com/9.0/nightly/rpm/
 enabled=1
 gpgcheck=1
 gpgkey=https://nightly.odoo.com/odoo.key

Ahora vamos a la parte más compleja de la película. Resulta que odoo requiere wkhtmltopdf para funcionar y debe machear la versión de odoo con la versión de wkhtml. Para la 9.0, usaremos wkhtmltopdf 0.12. Según advierten en la guía de instalación de odoo, el paquete de wkhtmltopdf que provee centos, no soporta header y footer, así que te dicen que lo descargues del sitio web oficial. Ahí aparece solo un .tar.gz pero siempre hay un rpm escondido abajo de una piedra:

1
2
yum install -y fontconfig libpng libX11 libXext libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi
rpm -Uvh https://downloads.wkhtmltopdf.org/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm

Finalmente, instalamos odoo.

1
2
3
 yum install -y odoo
 systemctl enable odoo
 systemctl start odoo

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ

yum estrecho

| Comments

Si en algo me destaco, es en mi habilidad por trabajar con espacios estrechos (poca RAM, poco espacio en disco, etc…)

Cuando tenemos un servidor con CentOS, aveces no queremos más de las mil cosas que una completa instalación involucra. Por ejemplo, las páginas de man en una pila de idiomas, el contenido de /usr/share/doc/, etc… Si bien actualmente uso un script para eliminar todo eso, lo cierto es que sería mucho más fácil si nunca se desplegaran esos archivos.

Gracias a yum-config-manager no hay que estar cargando con el fichero de configuración, simplemente se puede hacer un script que setee dichas configuraciones.

Esta es la secuencia de comando que le tiro en un yum virgen:

1
2
3
4
 yum-config-manager --save --setopt assumeyes=true
 yum-config-manager --save --setopt tsflags=nodocs
 yum-config-manager --save --setopt override_install_langs=en
 yum-config-manager --save --setopt clean_requirements_on_remove

Al correr yum-config-manager puedes ver todas las opciones que este brinda. Lo demás sería buscar la documentación.

Si este artículo te resultó interesante, considere donar 0.003 BTC: 1LgL9cfT2StNk9gdedMJZseMnKJCEgQJdQ