domingo, 3 de junio de 2018

13 - Configurar la red en Ubuntu

En Linux es indispensable saber gestionar las conexiones de red desde la línea de comandos, por eso lo que haremos será desactivar la red desde el entorno gráfico para tomar nosotros el control de las conexiones y que no haya interferencias.


Gestor de red gráfico
El fichero /etc/network/interfaces es el fichero de configuración de las posibles interfaces de red del sistema. Como es habitual, existen dos formas de configurar una interfaz de red:

  • Con IP dinámica a través del protocolo DHCP
  • Con IP estática definiendo manualmente todos los parámetros de red

Fichero interfaces donde se define la configuración de los distintos interfaces de red
Las dos primeras líneas corresponden al bucle local y están incluidas por defecto. La siguiente pareja de líneas definiría una IP dinámica para el interfaz eth0Si decidimos que sea estática en vez de dinámica tendríamos que sustituir el modificador dhcp por static y además descomentar el ultimo bloque de líneas que configuran manualmente todos los parámetros para una configuración de red válida.

Para que se apliquen los cambios hay que reiniciar el servicio de red con la orden sudo service networking restart pero esta forma de reiniciar la red puede dar problemas en Ubuntu 14.04 debido a un bug por lo que simplemente usaremos las siguientes órdenes que detienen y levantan la interfaz de red seleccionada: sudo ifdown eth0 && sudo ifup eth0

Si defino la interfaz de forma dinámica se muestra información sobre como transcurre el protocolo DHCP y el resultado.

Procedimiento de obtención de Ip por DHCP
Si defino la interfaz de forma estática el resultado no muestra nada indicando que todo ha ido correcto.

Configurando eth0 con una Ip estática 
Deteniendo y Levantando eth0
Es importante conocer otros comando de red imprescindibles en linux por ejemplo el comando ifconfig

  • Tecleado si parámetros permite configurar los interfaces de red en Linux; si hacemos un ifconfig podemos ver los interfaces de red activos, en caso de que no haya ninguno activo se mostrará el bucle local.
  • Con el modificador ifconfig -a se mostrarán además del bucle local todos los interfaces de red que haya estén o no activos.

Existe también otro comando interesante que permite liberar y renegociar una IP asignada por DHCP al estilo ipconfig /renew y release de Windows:

  • Tecleado con el modificador dhclient -r libera la IP de la interfaz
  • Se puede renegociar otra IP con dhclient eth0

Recomendación: Conviene practicar estas configuraciones probando a interferir con el entorno gráfico y reiniciar la veces que haga falta hasta tener claro su comportamiento y memorizar las órdenes.

miércoles, 30 de mayo de 2018

12 - Listas de control de acceso (ACL)

¿Que son las acl?
El sistema de permisos de linux UGO, es un sistema muy rígido y limitado que solo permite interactuar con 3 entidades usuario, grupo y todo el mundo. Sin embargo no se permite por ejemplo dar permisos de forma individual a usuarios o grupos concretos.

Las acl (access control lists) son una ampliación del sistema de permisos UGO/rwx que permite un control más preciso dando al propietario de un objeto la capacidad de conceder o denegar acceso a otros usuarios o grupos específicos que no sean el usuario o grupo propietario.

Cada una de las líneas que componen una acl recibe el nombre de ace (access control entry)

Requisitos Previos

En general, podría ser necesario instalar las utilidades acl de los repositorios, bien porque no estén instaladas por defecto o porque se haya añadido un dispositivo nuevo con posterioridad a la instalación del SO, donde se desean activar las acl. Por ejemplo en U16.04 desktop están ya instaladas por defecto.



El comando tune2fs nos puede informar si el sistema se ha montado para utilizar acl


En cualquier caso, si es necesario activar las acl en algún dispositivo, y se desea hacerlo de forma persistente, habrá que dejar constancia en el fichero fstab y remontar la partición si no se quiere reiniciar. Por ejemplo, en U14.04 server las acl no se instalan por defecto  


Notación

[Tip
o]:[Calificador]:[Lista Permisos]

Tipo
 puede ser: user(u), group(g), other(o) y mask(m)
Calificador puede ser: nombre de grupo o usuario, UID, GID o vacío (asume UID y GID creador)

Lista Permisos puede expresarse en notación simbólica o en notación octal


Líneas 1-3 nombre fichero, propietario y grupo propietario
Línea 4 permisos especiales
Lineas 5, 7 y 10 permisos UGO (no tienen calificador). Entradas implícitas
Líneas 6 y 8 permisos explícitos acl

Línea 9 máscara que obtiene permisos efectivos. Aplica a permisos explícitos
Líneas 11-15 acl por defecto del directorio (solo para directorios)


Mostrar  acl

El comando getfacl muestra la acl de un fichero/directorio. En caso que no tenga asignada acl de forma explícita, toma los permisos efectivos UGO. 


Mostrando información acl de directorio y de fichero


Establecer acl a fichero

El comando setfacl permite establecer de forma explícita acl's ,a ficheros/directorios. Es importante tener en cuenta que no es lo mismo establecer una acl sobre un fichero que sobre un directorio


Estableciendo permisos explícitos para alum01 sobre fichero
-R:  Cambia permisos a archivos/directorios de forma descendente a partir de un directorio dado. 
-d:  Asigna los permisos por defecto (solo directorios).
-b:  Borra todos los permisos adicionales, conservando únicamente los básicos de UGO.
-k:  Borra los permisos por defecto.
-m: Modifica los permisos agregando o cambiando por nuevos valores.


Importante: La opción -m debe de estar junto a [Tipo]:[Calificador]:ListaPermisos


Establecer acl a directorio

Cómo en el caso anterior se puede asignar permisos explícitos a un directorio de la misma manera.


Estableciendo permisos explícitos para alum01 sobre directorio
Pero existe un inconveniente que vamos a explicar sobre el ejemplo anterior. Otorgar permisos rw a alum01 sobre sistemas no implica que alum01 tenga permisos rw sobre lo que se cree dentro de sistemas, excepto que lo cree alum01 claro.

Establecer default acl a directorio

Habitualmente cuando utilizamos acl's para conceder permisos a un usuario específico sobre un directorio queremos que esos permisos se extiendan de manera predeterminada también a todo el contenido que se cree en el directorio. Este tipo de acl's que se transmiten automáticamente desde arriba hacia abajo se denominan acl por defecto o default acl.

Estableciendo permisos explícitos y heredables para alum01 sobre directorio
Al establecer default acl en los permisos de la carpeta, los permisos se extienden a cualquier cosa que se cree en su interior



Como se puede observar la lista incluye los permisos UGO, los permisos explícitos y otra vez las entradas de permisos por defecto que indican herencia.

La máscara de permisos explícitos

La entrada mask es una entrada especial que representa el máximo de permisos que se pueden asignar al objeto a través de las ace's explícitas de usuario y grupo. Aparece automáticamente al momento de añadir una entrada explícita.

Se puede modificar con el comando setfacl y se utiliza para enmascarar los permisos explícitos de usuarios y grupos y obtener los permisos explícitos efectivos. Vamos a verlo con uno de los ejemplos anteriores

Añadir leyenda
En el ejemplo anterior mask=rw- significa que al aplicarla sobre los permisos explícitos de usu1 (rw-) daría como resultado los permisos efectivos; como en principio son iguales 110 & 110 = 110, usu1 puede obtener lectura y escritura como máximo pero no ejecución.

Modifiquemos la máscara para ver los nuevos permisos efectivos de usu1. Por ejemplo si colocamos la nueva máscara con r-x, los permisos efectivos serían 101 & 110 = 100 (r--)


martes, 15 de mayo de 2018

11 - Permisos especiales

t (sticky bit)

Cuando se lo asignamos a un directorio, conseguimos que los elementos que haya dentro, ficheros ó directorios, sólo puedan ser renombrados o borrados por su propietario o por el root, aunque el resto de usuarios tenga permisos de escritura sobre dichos elementos.

Se suele aplicar a directorios de acceso público que tienen todos los permisos asignados, como por ejemplo directorios temporales como /tmp ó /var/tmp

Creación de un directorio con sticky bit

El bit t se activa o desactiva empleando notación simbólica de la siguiente manera:
chmod +t directorio ó chmod -t directorio. Empleando notación octal se haría sumando 1000 a los permisos del directorio, chmod 1777 directorio
Sticky bit notación simbólica
Observación

Antiguamente se usaba para mantener la imagen de un ejecutable en memoria después de finalizar la ejecución del mismo pero con los avances en el hardware ya no se usa para esta función.

s (suid)

Cuando a un binario se le asigna el atributo s a nivel de usuario, los usuarios normales pueden ejecutarlo y obtener los privilegios del usuario propietario del ejecutable (por lo general root).

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de usuario provoca un cambio de dominio durante la ejecución haciendo que el usuario efectivo del binario sea el propietario del fichero y no el usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod u+s binario ó chmod u-s binario. También de forma octal se puede expresar sumando 4000 a los permisos del archivo: chmod 4755 binario


Suid notación simbólica y octal
Ejemplo

Supongamos que el ejecutable micat propiedad del root puede ser usado para leer ficheros por cualquier usuario. Si se le aplica el suid a este ejecutable, cualquier usuario podría leer ficheros del root a través de dicho binario sin tener permisos sobre esos ficheros. Veámoslo

Se copia un binario propiedad del root y se crea un fichero en /tmp al que se le quitan los permisos. 

Se comprueba, como lógicamente, el usuario asir tiene denegado el acceso al fichero.

Ahora se activa el bit s a nivel de usuario sobre el binario y se comprueba que está activado

Con el suid activado, asir ahora si tiene acceso al fichero (a través del binario únicamente)

s (sgid)

Cuando a un binario se le asigna el atributo s a nivel de grupo, los usuarios que pertenezcan a ese grupo pueden ejecutar ese archivo y obtener los privilegios del grupo propietario del ejecutable.

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de grupo provoca un cambio de dominio durante la ejecución haciendo que el grupo efectivo del binario sea el grupo propietario del fichero y no el grupo del usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod g+s binario ó chmod g-s binario. También de forma octal se puede expresar sumando 2000 a los permisos del archivo: chmod 2755 binario


Sgid notación simbólica y octal

sgid sobre Directorios

En el caso particular de aplicar el bit s a nivel de grupo sobre un directorio, los efectos son que a la hora de crear ficheros en ese directorio, el grupo propietario con el que salen por defecto dichos ficheros no será el grupo propietario del usuario que los crea, como debería ocurrir en situación normal, sino que será el grupo propietario del directorio que los contiene. O sea que se produce de nuevo un cambio de dominio en el grupo propietario, esta vez permanente claro.