Linux: crear una contraseña aleatoria simple

Hemos visto un par de formas de generar claves aleatorias en Linux. Vamos a ver otra que no es especialmente compleja. No es lo más seguro para generar una serie de claves aleatorias ni da un resultado especialmente recordable, pero para un apuro te permite salir del paso en la consola cualquier distribución y sin instalar software:

date|md5sum

Tan simple como esto: tomamos la fecha en tiempo UNIX y le aplicamos la función de resumen md5.

Utilizar sudo sin contraseña

Arracamos 2018 con más Linux ¿Se puede configurar el sistema para no tener que poner la contraseña cuando invoquemos un comando precedido de sudo? Sí, se puede. ¿Se debe? No, eso debilita la seguridad y no es nada recomendable. ¿Entonces no se puede? Sí, se puede pero no se debe.

La cosa es editar el fichero /etc/sudoers utilizando el siguiente comando:

sudo visudo

Una vez lo estemos editando buscamos la línea que pone root ALL=(ALL) ALL y debajo añadimos la siguiente, cambiando nuestro_usuario por el nombre de usuario que corresponda.

nuestro_usuario ALL=(ALL) NOPASSWD: ALL

También podemos aplicarlo a grupos, para ello debemos poner el símbolo % seguido del nombre del grupo:

%nuestro_grupo ALL=(ALL) NOPASSWD: ALL

Y otra opción es permitirlo sólo a un comando, o serie de comandos. En ese caso cambiamos el ALL que va después de NOPASSWD por el comando en cuestión. En el ejemplo veremos como hacerlo para /bin/kill:

nuestro_usuario ALL=(ALL) NOPASSWD: /bin/kill

Y una vez guardados los cambios el sistema nos permitirá usar sudo sin contraseña. Y vuelvo a repetir: NO SE DEBE HACER. Pero si queréis hacerlo, ahí tenéis el cómo.

Generar contraseñas seguras en Linux con APG

Ya vimos en el pasado cómo generar contraseñas en linux con mkpasswd, hoy veremos otro método. APG, abreviatura de Automatic Password Generator, viene instalado en Ubuntu y sus derivados. Es un programa pensado para generar contraseñas «memorizables«. Si lo ejecutas a secas te pedirá una «raíz«, una serie de datos con los que trabajar, y en base a eso creará una contraseña «memorizable«, y con «memorizable» quiero decir que junto a la contraseña te mostrará una transcripción fonética para que la recuerdes mejor.

APG Ejemplo
Ejemplo de APG

También puedes generar contraseñas totalmente aleatorias usando el comando apg a -1, que ofrece resultados de entre 8 y 10 caracteres.

Ejemplo APG 2
Ejemplo de APG con a -1

X11 forwarding sobre ssh

Llevo tanto tiempo lidiando con servidores Windows que se me empiezan a anquilosar las habilidades linuxeras más allá de lo que viene a ser el día a día. Creo que necesito preparar el LPIC aunque sólo sea para mantenerme en forma. El caso, que hoy tenía que ejecutar remotamente una aplicación con entorno gráfico de un servidor Linux y tuve que ir a ojear los viejos apuntes de sistemas operativos que guardo en una carpeta en la nube con manuales de todo tipo. Seguro que hay mil entradas por ahí pero yo os lo cuento igual:

Paso 1: Habilitamos el X11 forwarding en el servidor. ¿Cómo? Editando el fichero /etc/ssh/ssh_config y buscando allí la línea que pone X11Forwarding  para ponerle el valor en YES. Y tras esto reiniciamos el demonio de SSH.

Paso 2: nos conectamos mediante ssh pasando el parámetro -X:

ssh -X usuario@nombreEquipo

Y luego ya ejecutamos el programa en cuestión.

Si el cableado o la conexión es malo puede que te interese usar la opción que comprime los datos que te enviará el servidor. Carga más trabajo en la memoria del servidor y del cliente, pero reduce el tamaño del tráfico de red:

ssh -X -C usuario@nombreEquipo

 

Seguir partidos de la NBA desde un terminal de Linux

Mis amigos saben que me encanta el baloncesto, Linux y las cosas altamente freaks. Y esta mañana, cuando me levanté, me encontré con que uno me había compartido en el muro de Facebook esta entradade OMGUbuntu: Ver partidos de la NBA desde el terminal con NBA-Go.

¿Cómo va esto?

Bueno, lo primero es tener npm instalado instalado en vuestro equipo. Está en los repositorios de Ubuntu:

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

Y una vez tengamos npm instalado vamos a instalar NBA-Go:

sudo npm install -g nba-go

El programa principalmente ofrece dos comandos: game y player (abreviados g y p). Dentro de la opción game hay dos opciones posibles: ver qué partidos hay disponibles y ver uno en concreto.

A la hora de ver los posibles tenemos las opciones date, yesterday, today y tomorrow. La primera para una fecha concreta, la segunda para los partidos de ayer, la tercera para los de hoy y la cuarta para los de mañana. Vemos ejemplos:

//fecha formato año/mes/día
$ nba-go game -d 2017/11/02
$ nba-go game --date 2017/11/02
//ayer
$ nba-go game -y
$ nba-go game --yesterday
//hoy
$ nba-go game -t
$ nba-go game --today
//mañana
$ nba-go game -T
$ nba-go game --tomorrow

Una vez listado podéis navegar con el partido, ver la información previa al juego o seguir el desarrollo del mismo con las estadísticas en directo. También podéis ver el boxscore del partido ya finalizado con toda la estadística.

Aquí os dejo un gif de la página oficial que ilustra esto:

Seleccionar partido

Partido en directo

Con el comando player tenemos tres opciones: información general, estadísticas de la temporada regular o de los playoff. Voy a usar el mismo ejemplo que en la página oficial para que cuadre con el gif que voy a usar de la misma.

//info de Curry
$ nba-go player Curry -i
$ nba-go player Curry --info
//temporada regular
$ nba-go player Curry -r
$ nba-go player Curry --regular
//eliminatorias
$ nba-go player Curry -p
$ nba-go player Curry --playoffs
//todo junto
$ nba-go player Curry -i -r -p

Información de jugadores

Os dejo por aquí el enlace al proyecto en GitHub por si queréis ver el código o si queréis clonarlo.

Redirección de datos en Bash

La redirección de datos es un elemento básico de Bash ya que nos permite controlar hacia dónde se volcarán los datos de salida de un comando o script, o de dónde obtenemos los datos de entrada.

Tenemos tres descriptores:

  • stdin: Entrada estándar.
  • stdout: Salida estándar. También se abrevia con el número 1.
  • stderr: Error estándar. También se abrevia con el número 2.

Esto nos dará varias opciones. La primera, redirigir la salida estándar a un fichero, para lo que usamos el operador >:

ls -l > fichero.txt

En el ejemplo de arriba ejecutamos el comando ls -l pero le decimos que nos guarde el resultado en un fichero. Ahora vamos a redirigir el error estándar a un fichero, usando el operador 2>:

grep pri * 2> error.txt

En este caso ejecutamos el comando grep pri * y lo que sacamos al fichero son los errores. Luego podemos combinar la salida y sacar la salida el estándar por el error estándar o viceversa:

#Sacamos el error estándar por la salida estándar
grep pri * 2>&1
#Sacamos la salida estándar por el error estándar
grep pri * 1>&2

Finalmente vamos a ver cómo sacar la salida y el error estándar juntos a un fichero:

grep pri * &> todo.txt

Esto es muy útil si queremos ejecutar un comando o un script en silencio, por ejemplo uno que se ejecute en una tarea programada con cron, ya que no veremos nada en pantalla pero tendremos nuestro propio log con los datos de lo ejecutado.

¿Cómo hacer que sudo te insulte cuando te equivocas con el password?

Vamos con una entrada de sistemas completamente inútil. Sí, porque como humanos nos divierten las cosas inútiles pero chocantes. También puede valer como troleo de oficina, si gustáis: Hacer que sudo insulte al usuario cuando se equivoque introduciendo su password. Esto en principio funciona en los sistemas basados en Ubuntu, posteriores a Ubuntu 12.04 y que tengan sudo 1.8.3 instalado.

La cuestión es que tenéis que editar el fichero /etc/sudoers y buscar la línea que pone:

Defaults                env_reset

Y cambiáis esa línea por:

Defaults env_reset,insults

Tras eso, si queréis comprobar su funcionamiento, invocáis una instrucción con sudo y ponéis mal la contraseña. Recibiréis respuestas tan ingeniosas como: It can only be attributed to human error, Ying Tong Iddle I Po, Take a stress pill and think things over, He has fallen in the water, Have a gorilla…,The more you drive — the dumber you get, … and it used to be so popular… o BOB says: You seem to have forgotten your passwd, enter another!

Como ya dije, inútil pero divertido.

Instalar los iconos Papirus en Linux

La colección de iconos Papirus incluye más de mil elegantes y minimalistas iconos para los programas más populares de Linux y es una de las colecciones preferidas por los usuarios. ¿Cómo podemos agregarla a nuestro linux? Vamos con las instrucciones para Ubuntu y para Debian.

iconos papirus

En Ubuntu:

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme

En Debian:

sudo tee /etc/apt/sources.list.d/papirus-ppa.list << EOF
deb http://ppa.launchpad.net/papirus/papirus/ubuntu xenial main
EOF

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E58A9D36647CAE7F
sudo apt-get update
sudo apt-get install papirus-icon-theme

Otra opción para Ubuntu puede ser recurrir a descargar el .deb e instalar con el agregador de paquetes.

Creando contraseñas en Linux con mkpasswd

El programa mkpasswd, que es parte del paquete whois, nos permite generar contraseñas complejas y seguras a través de diversos algoritmos criptográficos.

Si no lo tienes instalado puedes agregar el paquete whois tal que así:

sudo apt-get update
sudo apt-get install whois

Una vez tengamos whois instalado ya podemos hacer uso de mkpasswd. Veamos que opciones tiene:

  • -m: Nos permite elegir el método con el que encriptaremos: entre des, md5,sha-256 y sha-512.
  • -5: Es una forma abreviada para seleccionar el método md5, sería equivalente a usar -m md5.
  • -S: Una cadena que usar como salt para el password.
  • -R: Definimos el número de rondas que se usarán, si son aplicables.
  • -P: Lee la contraseña del descriptor de fichero que le pasemos en lugar de hacerlo de /dev/tty
  • -s: Método acortado equivalente a -P 0

Por ejemplo:

#usamos el algoritmo sha-256
#pasamos como sal la cadena salamos1
mkpasswd -m sha-256 -S salamos1

#lo mismo pero con md5
mkpasswd -m md5 -S salamos1

Una captura viendo distintas opciones, distintos algoritmos y comprobando también cómo el salt no permite ciertos carácteres:
mkpasswd

Reparar Sambacry (CVE-2017-7494) en Ubuntu

Tras todo el tema de Wannacry atacando sistemas Windows hace un par de semanas ahora aflora otra vulnerabilidad que afecta al protocolo SMB en Samba, afectando a las versiones 3.5 y posteriores, lanzada en marzo de 2010. El fallo ha sido reportado y descrito por Samba en su sitio oficial como CVE-2017-7494.

Ya se ha reparado el problema, así que si no tienes actualizado Samba es el momento de hacerlo. Las versiones para Ubuntu en las que ya se ha aplicado el parche son las siguientes:

  • 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8

Para actualizar Samba y ver qué versión tienes instalada en tu Ubuntu puedes usar los siguientes comandos:

#instalar
$ sudo apt-get update
$ sudo apt-get install samba

#y para comprobar la versión
$ sudo apt-cache show samba

Si por lo que sea no puedes actualizar Samba comprueba que tengas SELinux habilitado, en caso afirmativo ya deberías estar protegido contra la ejecución de código remoto en tu equipo. También puedes poner la opción noexec en las unidades compartidas por Samba para evitar la ejecución de binarios en las mismas.

En la sección [global] del fichero smb.conf también puedes añadir la siguiente línea y luego reinciar el servicio:

nt pipe support = no

Ojo con esto último, puede dar problemas con los permisos para acceder a carpetas a los usuarios de Windows. Por ejemplo, les forzaría a poner la dirección completa del directorio compartido, no bastando sólo con la del directorio raíz.