Saltar al contenido

Tecnología

Tecnología en General

Linux archivo /etc/passwd

  • admin 

El contenido del fichero /etc/passwd determina quien puede acceder al sistema de manera legitima y que se puede hacer una vez dentro del sistema. Este fichero es la primera linea de defensa del sistema contra accesos no deseados. Debe de mantenerse escrupulosamente y libre de errores y fallos de seguridad. En el tenemos registrados las cuentas de usuarios, asi como las claves de accesos y privilegios.

Una linea ejemplo en este fichero:

 usuario1:FXWUuZ.vwXttg:500:501:usuario pepito:/home/usuario1:/bin/bash

Los diferentes campos(7) estan separados por dos puntos (:) y el significado de los mismos es el siguiente:

 

usuario1:
Nombre de la cuenta (Login)
FXWUuZ.vwXttg:
Clave de acceso encriptada (password)
500:
UID de esta cuenta
501:
GID del grupo principal al que pertenece la cuenta
usuario pepito:
Nombre del usuario
/home/usuario1:
Directorio de trabajo de usuario1
/bin/bash:
Interprete de comando (shell) de usuario pepito

Una serie de reglas a tener en cuenta sobre el contenido de este fichero:

  • El UID de cuenta 0, pertenece al administrador (root), por debajo de UID 500 esta reservado para el sistema y por encima de UID 500 para los usuarios del sistema (Nota: la frontera del 500 puede variar dependiendo del sistema).El GID del grupo principal esta definido en el archivo /etc/group y este sera el grupo por defecto cuando un usuario crea un fichero.No hace falta decir que solo el administrador del sistema tiene que tener ID’s 0 en estos dos campos. Lo contrario significaria estar dando permisos de administracion (root) a la cuenta en cuestion.

    Lo unico que identifica a una cuenta root del resto es una identificacion UID igual a 0. Podemos tener por ejemplo una cuenta llamada «pepito» pero con UID igual a 0, esta cuenta tendria permisos de administrador (root) y muchos programas que hacen referencia al nombre de la cuenta (ej: who, w, etc) no nos darian informacion sobre que la cuenta «pepito» tiene permisos de root.

    Esto es lo primero que un hacker suele hacer para instalar una puerta trasera en un sistema. Para averiguar cuentas con nombre diferente de root, pero permisos de root existen programas, pero a falta de uno podemos utilizar el siguiente comando:

    awk -F: ‘{if ($3==0) print $1}’ /etc/passwd

    Lo mismo (con un pequeno cambio) se puede utilizar para ver cuentas con GID igual a 0:

    awk -F: ‘{if ($4==0) print $1}’ /etc/passwd

     

  • Es muy importante verificar asiduamente que toda cuenta (login) tiene asignada una clave valida. Existen programas para comprobar que no existen problemas de seguridad en /etc/passwd, pero a falta de uno se puede utilizar el siguiente comando para averiguar si existen cuentas sin claves:awk -F: ‘{if ($2==»») print $1}’ /etc/passwdNunca dejar una cuenta con el campo de clave vacio, esto significa que no es necesario una clave para entrar en el sistema. Las cuentas de pseudo-usuarios (ej: daemon, lp, etc) y cuentas de usuarios cerradas temporalmente, tienen que tener un asterisco (*) en el campo de la clave.

    Otro punto a tener en cuenta es la eleccion de una buena clave. No se deberian utilizar claves que sean palabras de diccionario, nombres, datos personales, matriculas, etc, existen programas que son capaces de descifrar este tipo de claves. Utilizar al menos 7 caracteres (8 recomendable) e interpolar numeros y letras, mayusculas y minusculas. Existen programas que sustituyen el clasico «passwd» para crear/cambiar claves, que comprueban que la clave es suficientemente buena.

    La explicacion de porque no se deberian utilizar palabras de diccionario, nombres, etc como claves de acceso, es la siguiente:

    Cuando una clave es generada, esta, es codificada con la funcion «crypt», esta funcion se puede definir como una funcion «hash» de una sola direccion, esto es, un algoritmo que es facil de computar en una direccion pero muy dificil de calcular en direccion opuesta. La funcion crypt utiliza un valor aleatorio llamado «salt» el cual esta formado por una cadena de dos caracteres [a-z A-Z 0-9 ./]. Este valor aleatorio permite codificar una misma clave de 4096 maneras distintas (Los dos primeros caracteres de una clave codificada, son los valores de «salt», el resto hasta un total de 13 caracteres ASCII es la clave codificada segun el valor de «salt»).

    Una vez que sabemos un poco de teoria de como las claves son codificadas, nos podemos imaginar como se podria descifrar un clave de cuenta que es un palabra de diccionario, nombre, matricula, etc. Existen programas que codifican sistematicamente diccionarios de palabras de las 4096 maneras posibles (segun el valor «salt») y comparan cada codificacion con los valores encriptados en /etc/passwd, si algun valor coincide, significaria que una clave ha sido descifrada. Este es uno de los metodos utilizados por hackers para descifrar claves y la razon de porque no se deben utilizar claves que sean palabras de diccionarios, nombres, etc.

     

  • Nunca usar scripts/programas como interprete de comandos en cuentas sin clave. Un ejemplo que lei una vez en un grupo de noticias, hablaba sobre como apagar el ordenador sin necesidad de ser root. Una de las soluciones que daban era el tener la siguiente linea en el fichero /etc/passwd:shutdown::0:0:shutdown:/sbin:/sbin/shutdownPodeis ver que el campo de clave esta vacio, con esta linea en tu /etc/passwd cualquier usuario, local o no local, puede apagar tu ordenador haciendo un simple telnet a la maquina en cuestion y escribiendo shutdown como login. No hace falta explicar las consecuencias que esto puede tener para tu sistema. 😉

     

  • Los ficheros /etc/passwd y /etc/group deben tener permisos de lectura para todos para que muchos programas puedan funcionar y permisos de escritura solo para root.
    -rw-r--r--  1 root root    11594 Nov 9 12:53   /etc/passwd
    -rw-r--r--  1 root root     1024 Nov 9 12:53   /etc/group

    Con estos permisos, cualquiera que tenga acceso al sistema puede leer el contenido de estos ficheros e intentar descifrar la clave encriptada de las cuentas. En pequenos sistemas, donde todos los usuarios se conocen y existe confianza entre ellos, esto no es un gran problema, pero en sistemas con un gran numero de usuarios, no es recomendable tener el sistema configurado de esta manera.

    Para evitar esto se puede instalar «Shadow passwords». Con shadow passwords el fichero /etc/passwd puede ser leido por cualquier usuario con acceso, pero la informacion con las claves del sistema queda guardada en un fichero que solo puede ser leido por el administrador (root). Mas informacion sobre Shadow Password en el Howto correspondiente Shadow password HOWTO (ingles)

     

VNC Server para Linux : Instala un servidor VNC en Linux para acceder remotamente via web.

Vamos a configurar nuestro Ubuntu para poder acceder remotamente al escritorio mediante VNC a través de cualquier navegador.

Instalamos los paquetes necesarios:

sudo aptitude install x11vnc

sudo aptitude install vnc-java

Una vez instalados, ejecutamos en consola lo siguiente (SIN superusuario).

x11vnc -storepasswd

Introducimos la clave que queramos.

Ahora abrimos los puertos 5800 y 5900 en nuestro router o firewall hacia nuestra IP (interna).

Ejecutamos el siguiente comando para levantar el servidor:

x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800

Si queréis que se inicie al inicio del sistema debéis ir a:

Sistema/Preferencias/Aplicaciones al inicio

Le dais a añadir y en COMANDO ponéis:

x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800

Ahora para acceder al ordenador basta con poner en el navegador:

http://IP:5800

También podréis acceder con un Host DynDNS

Se puede cambiar el puerto de escucha.

Si tenéis el equipo configurado para arrancarlo remotamente (WOL) deberéis acceder antes por SSH al equipo (Servidor SSH en Ubuntu : Manual para configurar un servidor SSH en Ubuntu y entrar a tu equipo de forma remota con seguridad), loguearse con la cuenta y ejecutar el comando:

x11vnc -forever -usepw -httpdir /usr/share/vnc-java/ -httpport 5800

Para levantar el servidor VNC.

Redes Wifi: BSS versus IBSS (802.11 o Wi-Fi)

  • admin 

Existen varias clases de hardware que se pueden utilizar para implementar una red inalámbrica WiFi:

  • Los adaptadores inalámbricos o controladores de la interfaz de red (en inglés wireless adaptaters o network interface controller, abreviado NIC) son tarjetas de red que cumplen con el estándar 802.11 que les permiten a un equipo conectarse a una red inalámbrica. Los adaptadores inalámbricos están disponibles en diversos formatos, como tarjetas PCI, tarjetas PCMCIA, adaptadores USB y tarjetas Compact Flash. Una estación es cualquier dispositivo que tenga este tipo de tarjeta.
  • Los puntos de acceso (abreviado PA y a veces denominados zonas locales de cobertura) pueden permitirles a las estaciones equipadas con WiFi cercanas acceder a una red conectada a la que el punto de acceso se conecta directamente.

El estándar 802.11 define dos modos operativos:

  • El modo de infraestructura en el que los clientes de tecnología inalámbrica se conectan a un punto de acceso. Éste es por lo general el modo predeterminado para las tarjetas 802.11b.
  • El modo ad-hoc en el que los clientes se conectan entre sí sin ningún punto de acceso.


Modo de infraestructura

En el modo de infraestructura, cada estación informática (abreviado EST) se conecta a un punto de acceso a través de un enlace inalámbrico. La configuración formada por el punto de acceso y las estaciones ubicadas dentro del área de cobertura se llama conjunto de servicio básico o BSS. Estos forman una célula. Cada BSS se identifica a través de un BSSID (identificador de BSS) que es un identificador de 6 bytes (48 bits). En el modo infraestructura el BSSID corresponde al punto de acceso de la dirección MAC.

Modo de infraestructura WiFi (802.11b)

Es posible vincular varios puntos de acceso juntos (o con más exactitud, varios BSS) con una conexión llamada sistema de distribución (o SD) para formar un conjunto de servicio extendido o ESS. El sistema de distribución también puede ser una red conectada, un cable entre dos puntos de acceso o incluso una red inalámbrica.

Creación de un ESS al vincular dos puntos de acceso con un sistema de distribución.

Un ESS se identifica a través de un ESSID (identificador del conjunto de servicio extendido), que es un identificador de 32 caracteres en formato ASCII que actúa como su nombre en la red. El ESSID, a menudo abreviado SSID, muestra el nombre de la red y de alguna manera representa una medida deseguridad de primer nivel ya que una estación debe saber el SSID para conectarse a la red extendida.

Cuando un usuario itinerante va desde un BSS a otro mientras se mueve dentro del ESS, el adaptador de la red inalámbrica de su equipo puede cambiarse de punto de acceso, según la calidad de la señal que reciba desde distintos puntos de acceso. Los puntos de acceso se comunican entre sí a través de un sistema de distribución con el fin de intercambiar información sobre las estaciones y, si es necesario, para transmitir datos desde estaciones móviles. Esta característica que permite a las estaciones moverse «de forma transparente» de un punto de acceso al otro se denomina itinerancia.

Comunicación con un punto de acceso

Cuando una estación se une a una célula, envía una solicitud de sondeo a cada canal. Esta solicitud contiene el ESSID que la célula está configurada para usar y también el volumen de tráfico que su adaptador inalámbrico puede admitir. Si no se establece ningún ESSID, la estación escucha a la red para encontrar un SSID.

Cada punto de acceso transmite una señal en intervalos regulares (diez veces por segundo aproximadamente). Esta señal, que se llama señalización, provee información de su BSSID, sus características y su ESSID, si corresponde. El ESSID se transmite automáticamente en forma predeterminada, pero se recomienda que si es posible se deshabilite esta opción.

Cuando se recibe una solicitud de sondeo, el punto de acceso verifica el ESSID y la solicitud del volumen de tráfico encontrado en la señalización. Si el ESSID dado concuerda con el del punto de acceso, éste envía una respuesta con datos de sincronización e información sobre su carga de tráfico. Así, la estación que recibe la respuesta puede verificar la calidad de la señal que envía el punto de acceso para determinar cuán lejos está. En términos generales, mientras más cerca un punto de acceso esté, más grande será su capacidad de transferencia de datos.

Por lo tanto, una estación dentro del rango de muchos puntos de acceso (que tengan el mismo SSID) puede elegir el punto que ofrezca la mejor proporción entre capacidad de carga de tráfico y carga de tráfico actual.

Clone and move virtual machines in VirtualBox

It describes cloning and moving virtual machines in VirtualBox.

I’m a big fan of VirtualBox. The tool enables me to extend a machine beyond its normal capabilities, test operating systems without getting invasive with my host, and kick the tires on various software titles without installing them on my production machine. But sometimes I get a virtual machine up and running and want to copy it (to move it to another machine or to have a second instance to test); when that time comes, I don’t want to completely re-install the operating system and get it to the state I need. In this situation, I clone the virtual machine.When you clone a drive, you make an exact copy of the virtual machine that can be used on either the same host or moved to another VirtualBox host. The process of cloning and moving a virtual machine is now easy in VirtualBox. In fact, there are no more commands for cloning, as the process is built into the GUI. I’ll walk through this process and then move the resulting clone to another machine for use.

What you need

  • VirtualBox installed (the host platform doesn’t matter)
  • A running virtual machine
  • The ability to move the clone from one machine to another (shared drive, external drive, disk, etc.)

Cloning a virtual machine

Step 1: Close the virtual machine

You cannot pause the machine that is going to be cloned and then clone it — the machine must be turned off.

Step 2: Start the cloning process

Select the virtual machine you want to clone in the left pane of the VirtualBox main window. Click the Snapshots tab (Figure A) and then click the small sheep icon.

Figure A

A Ubuntu 12.04 virtual machine with no snapshots taken.

The wizard that opens is a simple two-step process. The first step requires you to give the clone a name; you must give this clone a different name than the source virtual machine. By default, VirtualBox will append “clone” at the end of the name of the source virtual machine. You can keep this, and it should work fine. The second phase of the wizard asks the type of clone you want to create (Figure B). You will want to create a full clone, since our goal is to move this virtual machine to a new host.

Figure B

Read carefully the difference between full and linked clones.

Step 3: Locate and move the clone

You will be looking for a .vdi file. The location of this file will depend upon the host platform. On my Linux host, the file will be found in ~/VirtualBox VMs. Within that directory, you will find sub-directories of all your virtual machines. Within the virtual machine directory in question, you will find the .vdi file of the cloned virtual machines — that is, the file that must be moved to the new host. Copy that file to an external or shared drive and then copy it onto the new host (the location doesn’t matter).

Step 4: Create a new virtual machine

The process of creating the new virtual machine will be the same as if you were creating a standard virtual machine until you get to the Virtual Hard Disk creation screen (Figure C). You will select Use Existing Hard Disk, click the folder icon, navigate to the newly copied .vdi file, select the file in question, and then click Next.

Figure C

I’m almost finished adding my clone to a new host.

Once the new virtual machine is created, that virtual machine should fire up as expected and regardless of platform (I have tested this going from Linux to Linux, Linux to Windows, and Windows to Linux hosts).

Summary

The ability to clone and move virtual machines in VirtualBox as easily as shown above makes this a great tool for anyone who needs to expand their world with virtual machines. Give this a try and see how far you extend the reach of your hosts and guests with VirtualBox.