jump to navigation

Configurar ssh con múltiples usuarios y autenticación con clave pública en OpenWRT 05/01/2011

Posted by drencrom in OpenWRT, ssh.
add a comment

El primera paso para lograr esto es crear al menos un nuevo usuario en el router. Como el sistema no está pensado para tener más de un usuario el busybox no está compilado con el comando useradd por lo que hay que hacer todo el trabajo manualmente. Primero hay que
agregar una línea en el archivo /etc/groups de esta forma:

grupo:x:1000:

para crear un grupo llamado grupo con gid 1000.

Luego hay que agregar una línea en el archivo /etc/passwd:

usuario:<copiar hash del root>:1000:1000:Nombre Completo:/home/usuario:/bin/ash

donde el segundo parámetro es el hash de la contraseña (OpenWRT no usa shadow) por lo que se puede copiar el del root para que el usuario quede con la misma contraseña que éste. Para cambiarla luego alcanza con ejecutar

# passwd usuario

El uid del usuario se setea como 1000 y se lo configura como perteneciente al grupo 1000 que ya creamos. El home dir del usuario en este caso es /home/usuario por lo que hay que crear este directorio y asignarle los permisos de este nuevo usuario así:

# chown usuario.grupo /home/usuario

Con esto ya debería ser posible acceder por ssh al router con este nuevo usuario y la contraseña elegida.

El siguiente paso es configurar las claves públicas de los usuarios que podrán acceder. Para el caso del root estas claves deben ir al archivo /etc/dropbear/authorized_keys mientras que para cada usuario deben ir en el directorio ~/.ssh/authorized_keys. En el caso de nuestro usuario de ejemplo sería /home/usuario/.ssh/authorized_keys (hay que crear el directorio .ssh)

Por último, si queremos deshabilitar el logueo sin clave pública por seguridad se debe ejecutar los siguientes comandos en el router:

# uci set dropbear.cfg1.PasswordAuth=off
# uci commit dropbear

y luego reiniciar el servicio SSH o el router completo para estar seguros de que la configuración se conserva.

Es importante verificar que el acceso como root con clave pública funciona bien antes de hacer esto dado que si no es posbile que nos quedemos sin poder acceder al router con el usuario root.

Autenticación con usuarios locales desde Apache 31/08/2010

Posted by drencrom in Linux.
add a comment

El problema con esto es que el método más documentado es usando mod_auth_pam pero para que esto funcione el servidor apache tiene que tener acceso al archivo /etc/shadow. La idea de este archivo es que solo sea accedido por root (por defecto tiene permiso 400) y solamente existe para eso (si no hay shadow los hashes de las passwords estan en el archivo /etc/passwd y pueden ser leídos por cualquier usuario)

Lo sugerido para esto es hacer un grupo solo con el apache y darle permisos a este grupo para leer el archivo pero no es una solución muy buena.

La mejor solución es usar el módulo mod_auth_shadow que funciona sin hacer esto gracias a que usa un archivo con setuid root (/usr/sbin/validate). Para configurarlo solamente alcanza con instalar el módulo (por ejemplo en centos):

yum install mod_auth_shadow

Y configurar algo así en apache:

AuthShadow on
AuthName "Acceso con clave"
AuthType Basic
Require valid-user

Por último si se está usando SELinux hay una opción específica que se debe habilitar para que esto funcione y se hace de la siguiente manera:

setsebool -P allow_httpd_mod_auth_pam on

La opción -P hace que quede activado de forma permanente.

Generar salida en formato CSV desde MySQL 31/08/2010

Posted by drencrom in MySQL.
1 comment so far

Para lograr esto se deberá ejecutar el select de la siguiente manera:

SELECT x,y,z INTO OUTFILE '/tmp/salida.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM tabla;

Hay que tener en cuenta que hay que ejecutar esto como root dado que los usuarios comunes no pueden escribir en el disco

Compilar kernel vanilla en ubuntu 21/03/2010

Posted by drencrom in Linux.
add a comment

La idea es compilar un kernel vanilla de linux con la configuración que se quiera creando un paquete .deb que permita instalarlo configurando todo lo necesario para que funcione en forma automática (initrd, grub, etc)
Los pasos son los siguientes:

Primero se deben bajar las fuentes del kernel y descomprimirlas en /usr/src

Luego hay que instalar las herramientas necesarias en el sistema mediante apt-get install build-essential kernel-package

Entonces hay que moverse con cd al directorio de las fuentes descomprimido en el paso 1 y ejecutar make-kpkg clean que prepara las fuentes para compilar. Antes de esto se puede modificar el archivo .config mediante make menuconfig o copiando el config de algun kernel instalado

Luego hay que ejecutar make-kpkg --append-to-version=-<etiqueta> kernel_image --initrd binary donde la etiqueta es un nombre que se le agrega a la versión del kernel para distinguir esta compilación en particular

Al terminar esto, en el directorio superior al actual (debería ser /usr/src) van a quedar los paquetes .deb del kernel compilado. Los importantes el que comienza con linux-image que tiene al kernel en sí y linux-headers que tiene los encabezados que permiten compilar módulos

Status de RAID en servidores IBM 25/11/2009

Posted by drencrom in Linux.
add a comment

Hay una utilidad para ver desde Linux el stado de un raid LSI por hardware típico de los servidores IBM.
Para esto hay que instalar el paquete mpt-status. Una vez instalado hay que cargar el módulo mptctl de esta forma

modprobe mptctl

y luego ejecutar

mpt-status -p

para saber el ID del RAID instalado. La respuesta debería ser algo así como:

Checking for SCSI ID:0
Checking for SCSI ID:1
Checking for SCSI ID:2
Checking for SCSI ID:3
Checking for SCSI ID:4
Checking for SCSI ID:5
Checking for SCSI ID:6
Checking for SCSI ID:7
Checking for SCSI ID:8
Checking for SCSI ID:9
Checking for SCSI ID:10
Found SCSI id=10, use ''mpt-status -i 10" to get more information.

Lo siguiente es ejecutar

mpt-status -i 10

para ver el estado del RAID.

Como crear un archivo .patch 23/11/2009

Posted by drencrom in Linux.
add a comment

Para crear el patch la idea es pararse en un directorio que contenga una carpeta con el código original (llamémosle old) y otra con el código nuevo (new). Entonces el comando a ejecutar sería:

diff -rupN old new > archivo.patch

donde:

  • r significa que busque recursivamente en los directorios
  • u es que use el formato unificado
  • p y N hacen que considere a los archivos que faltan en un directorio o el otro como vacíos

Para aplicar el patch hay que pararse en la carpeta con el código original y ejecutar

patch -p1 < archivo.patch

donde p1 hace que ignore el primer componente del path en el archivo y aplique los cambios directamente dentro de este directorio.

Escape codes en SSH 09/06/2008

Posted by drencrom in ssh.
add a comment

El caracter de escape por defecto en SSH, salvo que se defina otra cosa en /etc/ssh/ssh_config es ~

Digitando ~? podemos ver la lista de opciones de escape disponibles.

Las más interesantes son ~. que permite cerrar la sesión por la fuerza cuando la misma no responde ningún comando ni siquiera el ^C.

La otra es ~C que permite abrir una consola de comando propia del SSH. Desde aquí se puede habilitar y deshabilitar forwarding de puertos entre otras cosas (con help en la consola se pueden ver las opciones disponibles)

Es importante tener en cuenta que estos códigos de escape solo valen luego de un fin de línea. O sea que poner un ~ en el medio de un comando no se va a considerar un escape.

Otra cosa importante es que ~~ pasa el caracter de escape a la consola remota, por lo que es si se tienen conexiones ssh en cascada es posible usar posible usar ~~. para cerrar la segunda sesión sin cerrar la primera.

Ocultar y mostrar bloques con vimdiff 08/06/2008

Posted by drencrom in vim.
add a comment

Cuando se muestran las diferencias entre dos archivos vimdiff oculta automáticamente los bloques de texto que coinciden.

Para mostrar uno de los bloques ocultos hay que posicionarse sobre la línea que marca el bloque y presionar zo
Para ocultarlo se debe estar posicionado en cualquier parte del bloque y presionar zc
No hay que poner : antes de estos comandos.

Recargar la tabla de particiones sin reiniciar el sistema 05/04/2008

Posted by drencrom in Linux.
add a comment

Puede ser un poco raro este problema pero puede ser muy molesto cuando se trata de servidores. La solución es muy fácil, solamente hay que ejecutar el comando partprobe que es parte del paquete parted

fstab con UUID 05/04/2008

Posted by drencrom in Linux.
add a comment

Muchas distribuciones nuevas usan el UUID de las particiones en lugar del nombre tradicional de las misma spara definirlas en el archivo /etc/fstab

Para obtener el UUID de un partición hay que ejecutar:
vol_id <nombre tradicional de la partición>

Luego de esto se hace igual que siempre solo que en lugar del nombre de la partición se pone UUID=<uuid> en el fstab.

Supuestamente la gracia de esto es que si se mueven los discos de lugar el sistema va a encontrar las particiones en el lugar correcto aunque cambien de nombre (ej. de /dev/sda1 a /dev/sda2) (más…)

Seguir

Get every new post delivered to your Inbox.