Archivo

Archivo para septiembre, 2019

Exception setuid y Buffer Overflow en Mldonkey

viernes, 20 de septiembre de 2019 2 comentarios

Mldonkey es un software con bastantes años a sus espaldas que permite compartir archivos entre múltiples tipos de redes: torrent, edonkey, kadmelia, DC++, etc. Una de sus principales virtudes es que, además de ser multiplataforma, se puede ejecutar sin interfaz gráfica, con lo que el consumo de recursos es bastante moderado.

Si en alguna ocasión decidimos mover su carpeta de instalación (que contiene toda la configuración de puertos, limitaciones de ancho de banda, etc.), es probable que nos encontremos con el siguiente error en su log («/var/log/mldonkey/mldonkey-server.log»):

2008/03/08 19:41:24 [dMain] mldonkey is now running as user mldonkey
2008/03/08 19:41:24 [dMain] Exception setuid failed: Operation not permitted trying to set user_uid [107]

Esto es debido a que el «id» del usuario que ejecuta ahora el servicio de mldonkey ha cambiado. Basta con averiguar el nuevo id de nuestro usuario «mldonkey» con el comando «id -u mldonkey» y actualizar el fichero «downloads.ini» (alojado en «/var/lib/mldonkey/») cambiando el atributo «run_as_userid» y «run_as_user» en caso de haber cambiado también de nombre de usuario.

Por otro lado, si tenemos una conexión a Internet de alta velocidad es probable que nos encontremos con el siguiente error en el log:

[TCP_BS]: BUFFER OVERFLOW 488680+16397> 500000 MESSAGE: [(0)(0)(64)(9)(7)(0)(0)(0)(64)(0)(36)(128)(0)(2)(186)(3)(230)(247)(95)(152)…]

Tendremos por tanto que ampliar la directiva «client_buffer_size» del fichero «download.ini» de 500000 a 5000000

Categories: GNU/Linux Tags:

Configuración de TorGuard

viernes, 20 de septiembre de 2019 Sin comentarios

TorGuard es un servicio de VPN que mantiene la norma de no mantener un registro (log) de la actividad de sus usuarios como forma clara de mantener su privacidad y de ser amigable con el P2P. Dispone de un gran número de servidores repartidos por todo el mundo y mantiene una velocidad bastante buena en comparación con la competencia. La anualidad del servicio sale por unos $59.99 pero gracias al programa de afiliados puedes conseguir descuentos de hasta un 50%. Por ejemplo, yo mismo he generado un cupón ( TORCHRIS ) para la gente de mi entorno.

Si disponemos una máquina sin interfaz gráfica y deseamos que en su arranque inicie OpenVPN para que todo lo posterior vaya a través del túnel sólo tenemos que seguir una pautas sencillas.

sudo apt install openvpn unzip

cd /etc/openvpn

sudo wget https://torguard.net/downloads/OpenVPN-TCP-Linux.zip

sudo unzip OpenVPN-TCP-Linux.zip

sudo cp /etc/openvpn/OpenVPN-TCP/* /etc/openvpn/

rename -v ‘s/\.ovpn/\.conf/’ *.ovpn

Ahora mismo tendríamos un montón de fichero «*.conf» que representan cada una de las zonas en las que tenemos disponible servidores que den servicio. De esta forma podríamos lanzar el comando «openvpn server.conf» y se nos preguntaría el nombre y usuario para la conexión. Como no queremos que pregunte usuario y contraseña, crearemos un fichero que lo contenga con el comando «sudo nano /etc/openvpn/userPass.txt» y que rellenaremos con nuestros datos tal que así:

miusuario@concorreo.com

miContraseña9%Compleja

Copiaremos el fichero de configuración del servidor que nos interesa para hacerle una pequeña modificación:

sudo cp /etc/openvpn/TorGuard.Norway.conf /etc/openvpn/client.conf

Editaremos una línea de dicho fichero «sudo nano /etc/openvpn/client.conf»:

auth-user-pass /etc/openvpn/userPass.txt

Ahora le indicaremos a OpenVPN cuál es el fichero de configuración que tiene que cargar por defecto editando el fichero «sudo nano /etc/default/openvpn»

#AUTOSTART=»all»
#AUTOSTART=»none»
AUTOSTART=»client»

Refrescaremos la configuración y habilitaremos el servicio al inicio de OpenVPN:

sudo systemctl daemon-reload

sudo systemctl enable openvpn

Para comprobar que realmente estamos pasando por el servidor VPN basta con ejecutar el comando «curl ifconfig.me» que nos devolverá nuestra IP pública.

 

Categories: Debian Tags: ,

OpenVPN en Proxmox

viernes, 20 de septiembre de 2019 2 comentarios

Instalar un cliente VPN en un contenedor de Proxmox (LXC) no debería ser un gran problema, simplemente realizar un «apt install openvpn», configurar la conexión con el servidor VPN y ya está. Pero no, existen problemas con la interfaz de red TUN/TAP a la que intenta tener acceso OpenVPN debido a que no existe:

ERROR: Cannot open TUN/TAP dev /dev/net/tun

Para solucionarlo hay que ir al fichero de configuración del contenedor («/etc/pve/lxc/XXX.conf») y añadir las siguientes líneas:

lxc.cgroup.devices.allow: c 10:200 rwm
lxc.hook.autodev: sh -c «modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun»

Esto nos permitirá poder hacer uso de OpenVPN desde que la máquina arranca, ya que generar la estructura en un script de «init.d» o «crontab», a pesar de que funciona si iniciamos a mano OpenVPN, no lo hará de forma no asistida.

A pesar de todo lo anterior, veremos que perdemos cierta conectividad con la máquina y el log del sistema («/var/log/syslog») se nos llenará de mensajes del siguiente tipo:

Dec 21 07:12:11 gateway kernel: martian source 98.187.15.124 from 98.187.15.97, on dev br1

Dec 21 07:12:11 gateway kernel: ll header: ff:ff:ff:ff:ff:ff:00:14:f1:e8:69:db:08:06

Quizás por una mala configuración de interfaces de red por mi parte, pero habiendo sólo una con su IP fija no creo que debiese ser problemático. Al final opté por crear una máquina virtual en vez de un contenedor con una Debian 10 y todo ha ido prácticamente a la primera (salvo lo de montar una unidad NFS al arranque, que necesita de una IP asignada de manera estática, pero eso ya es otro cuento).

Como nota final, cabe tener en cuenta que, para ahorrar consumo de CPU (hasta un 20% de ahorro con un núcleo), existe la necesidad de habilitar las instrucciones extendidas AES del procesador (si las tuviese). Para ello debemos configurar la máquina virtual con un tipo de CPU host y máquina Q35. Para comprobar que la CPU tiene dichas instrucciones sólo hay que lanzar el comando «cpuid | grep -i aes | sort | uniq» que nos devolverá algo como esto:

AES instruction = true
VAES instructions = false

Y comprobar que se carga el módulo correspondiente con el comando «sort -u /proc/crypto | grep module» que debería darnos algo tal que así:

module : aesni_intel
module : aes_x86_64
module : crc32c_generic
module : crc32c_intel
module : crc32_pclmul
module : crct10dif_pclmul
module : cryptd
module : ghash_clmulni_intel
module : kernel

Categories: Proxmox Tags: , , ,