Administración de redes GNU-Linux

Caso práctico

María trabajando en un equipo.

María visita a Juan.

-Juan, vamos a mejorar la red de la empresa y para eso necesito que utilices un servidor para que actúe como router y le proporcione a le empresa los servicios más importantes. Encaminamiento y DHCP, y luego le instalaremos más servicios.

-Muy bien María, he visto por Internet que Linux funciona muy bien con redes. De hecho su máxima potencia se utiliza para actuar como servidor. Ahora mismo me pongo a configurar el servidor.

1.- Configuración de red y router en Linux.

La unidad comienza con la configuración de 2 máquinas Linux en red; se configurarán en la misma red interna que las dos máquinas de Windows de la unidad 9.

En la primera máquina Linux se pondrán dos tarjetas de red, una en NAT con la máquina anfitrión por la que sale a Internet, y la otra en red interna con las otras 3 máquinas. Esta máquina Linux realizará las funciones de router, de forma que las otras 3 máquinas también saldrán a Internet.
En el resto de la unidad, se estudian los distintos servicios de forma que en esta máquina router se instalarán distintos servicios: samba, nfs, ssh,…

1.1.- Configuración de 2 máquinas Linux en Red.

Este apartado es el primer ejercicio de la tarea de la unidad.

Paso 1. Clonar la máquina Linux utilizada en anteriores unidades

  1. Clonar con VirtualBox la máquina Linux utilizada en unidades anteriores. Realizar una clonación completa y reiniciando la dirección MAC.
  2. En la máquina clonada, poner como nombre de máquina clienteLinux. Para ello, utilizar nano o direccionamiento:
    root@SistemasUbuntu:~# echo clienteLinux > /etc/hostname
  3. Editar el archivo /etc/hosts y cambiar el nombre de la máquina (donde aparece SistemasUbuntu, cambiarlo por clienteLinux)
    Observación: el archivo /etc/hosts sirve para configurar un DNS básico en la red local.

Paso 2. Configuración de red en máquina Linux servidor.

La máquina original Linux va a tener 2 tarjetas de red para configurar un router:

  • La primera tarjeta de red, sigue como hasta ahora, en NAT con la máquina anfitrión, saliendo a Internet a través de ella.
  • La segunda tarjeta de red, la pondremos en red interna para comunicarse con la otra máquina Linux.

1. Añadir segunda tarjeta de red a la máquina

En VirtualBox en configuración de Red, habilitar adaptador 2 (pestaña adaptador 2) y ponerlo en red interna, tal como aparece en la imagen.
Con esta operación, esta máquina ya se encuentra en la misma red física que las 2 máquinas Windows, (están en el mismo switch), pues el nombre de la red interna no lo hemos cambiado. Cuando configuremos la IP se configurará de forma que estén en la misma red lógica.

Ilustración que muestra como añadir una segunda tarjeta de red
Miguel Ángel García Lara (CC BY-NC-SA)

2. Nombres de las tarjetas de red en Linux. Comando ifconfig

Al ejecutar ifconfig se ven los nombres asignados por Ubuntu a las tarjetas de red y sus direcciones IP asignadas. En la captura que hay a continuación se visualiza:

  • Tarjeta enp0s3 (tarjeta de red en NAT con maquina anfitrión) con la dirección IP 10.0.2.15
  • Tarjeta enp0s8 (tarjeta de red en red interna, que comunicará con todas las máquinas restantes) sin dirección IP de momento.
Ilustración que muestra el comando ifconfig en la máquina servidor
Miguel Ángel García Lara (CC BY-NC-SA)

Observación: el comando ifconfig puede no estar instalado
La primera vez que se ejecuta ifconfig, en Ubuntu 18.04 dice que no está instalado y que hay que instalar net-tools:

miguel@sistemasUbuntu:~$ ifconfig
No se ha encontrado la orden «ifconfig», pero se puede instalar con:
sudo
apt install net-tools
miguel@sistemasUbuntu:~$ sudo apt install net-tools
….

Configurando
net-tools (1.60+git20161116.90da8a0-1ubuntu1)
miguel@sistemasUbuntu:~$

Es posible, que incluso de algún error al instalar net-tools, porque no se haya actualizado nada en nuestro Ubuntu. En ese caso será necesario actualizar los paquetes instalados previamente. Ejecutar los 2 comandos siguientes:

  • Actualizar lista paquetes:   #apt update
  • Actualizar paquetes instalados:  #apt upgrade

3. Configurar IP de la segunda tarjeta de red

La configuración de las tarjetas de red en Ubuntu se encuentra en el directorio /etc/network.

El fichero para configurar las direcciones IP se llama interfaces. A continuación, se añade la configuración IP de la tarjeta de red enp0s8 en red interna.

root@SistemasUbuntu:~# nano /etc/network/interfaces
#
interfaces(5) file used by ifup(8) and ifdown(8)
auto
lo
iface
lo inet loopback
Añadir las líneas siguientes
en el archivo:
#ip estática en enp0s8
auto enp0s8
iface enp0s8 inet static
address 192.168.100.103
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255

Reiniciar la red y comprobar que funciona enps08

Para que tenga efecto el cambio, se reinicia el servicio de red.
root@SistemasUbuntu:~# service networking restart
root@SistemasUbuntu:~# ifconfig #vemos que enp0s8 tiene la nueva dirección IP asignada
root@SistemasUbuntu:~# ping 192.168.100.103
#
debe responder afirmativamente comprobando que hay conectividad de red en el propio equipo.
root@SistemasUbuntu:~# ping 8.8.8.8
#responde pues, tenemos conexión a Internet y esta dirección IP existe. Esta d
irección IP corresponde al servidor DNS de Google.

Paso 3. Configuración en máquina clienteLinux

Esta máquina solo tiene una tarjeta de red. Configurar en VirtualBox la tarjeta en red interna.
Al ejecutar ifconfig se observa que solo hay una interfaz de red con el nombre enps03. Se configura la dirección IP en el archivo interfaces:

root@clienteLinux:~# nano /etc/netwok/interfaces
....
#Se añaden las líneas siguientes al final del archivo:
#ip estática en enp0s3
auto enp0s3
iface enp0s3 inet static
address 192.168.100.104
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
gateway 192.168.100.103

Recordar que la puerta de enlace o gateway es la dirección IP por la que nos comunicamos con otras redes. En la primera máquina Linux no había que añadir puerta de enlace, pues sale a Internet directamente. Pero esta segunda máquina Linux, saldrá a Internet a través de la primera, configurando como puerta de enlace (gateway) su dirección IP.

Para que tenga efecto el cambio, se reinicia el servicio de red:
root@clienteLinux:~# service networking restart

Además, la primera máquina Linux tiene otra tarjeta de red, con IP 10.0.2.15 que sale a Internet. En el siguiente apartado, se configura para que esta máquina sea un router; de forma que todas estas máquinas puedan salir a Internet a través de la máquina SistemasUbuntu.

Comprobaciones de que la nueva conexión funciona:
root@clienteLinux:~# ifconfig #vemos que enp0s3 funciona con nueva ip
root@clienteLinux:~# ping 192.168.100.104
#nuestra propia
ip responde al ping.
root@clienteLinux:~# ping 192.168.100.103 #responde la otra máquina linux
root@clienteLinux:~# ping 8.8.8.8 #no responde, pues aunque se haya configurado la puerta de enlace, la primera máquina aún no está configurada como router, por lo que no comunica las 2 redes.

Observación
Ahora hay 4 máquinas en la misma red:
Las 2 máquinas Windows con IP 192.168.100.101 y 192.168.100.102
Las 2 máquinas Linux con IP 192.168.100.103 y 192.168.100.104
Todas con la máscara 255.255.255.0

Configuración de red en Ubuntu 18.04

En la versión Ubuntu 18.04, la empresa Canonical ha introducido un servicio de red networkd cuyo objetivo es gestionar la red con scripts (versión Ubuntu 18.04 Server) o gráficamente (network-manager, en versión Ubuntu 18.04 Desktop).
En este libro, se ha utilizado la configuración tradicional basada en archivo /etc/networki/interfaces para la configuración de las distintas tarjetas y el archivo /etc/resolv.conf para los servidores DNS.

Resumen de parámetros de la red

  • Archivo con nombre del equipo: /etc/hostname
  • Archivo de configuración de las conexiones: /etc/network/interfaces
  • Archivo donde se configura DNS: /etc/resolv.conf
  • Archivo para establecer DNS local: /etc/hosts

1.2.- Enrutamiento en Linux.

En este apartado se va a habilitar el enrutamiento en la máquina SistemasUbuntu. Se activará regla iptables para permitir el tráfico, de forma que el resto de las máquinas salgan a Internet a través del router SistemasUbuntu.

Este contenido es el ejercicio 2 de la tarea.

Paso 1. Habilitar router en máquina SistemasUbuntu.

En primer lugar se activa el servicio de enrutamiento de Linux. Para ello se activa ip_forward de la forma siguiente:
root@SistemasUbuntu:~# cat /proc/sys/net/ipv4/ip_forward
0

root@SistemasUbuntu:~# echo 1 > /proc/sys/net/ipv4/ip_forward
#
Con el comando echo, hemos sustituido un 0 por 1 dentro del archivo. De esta forma, decimos a la máquina que va a enrutar.

En segundo lugar se activa una regla iptable, servicio de cortafuegos de Linux, que diga que deja pasar todo el tráfico.
root@SistemasUbuntu:~# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -d 0/0 -j MASQUERADE
# Con esta regla, no hay restricción de tráfico. Si quisiéramos restricciones de tráfico, tendríamos que habilitar más reglas iptables.

Paso 2. Comprobar enrutamiento en máquina clienteLinux

Para comprobar que la máquina SistemasUbuntu ya está enrutando, se ejecuta ping en la máquina clienteLinux hacia el exterior:
root@clienteLinux:~# ping 8.8.8.8 #Responde, ya hay comunicación con Internet
root@clienteLinux:~# ping www.elpais.es #No responde, pues no se ha configurado la dirección IP del servidor DNS.
#No hay ningún equipo en nuestra red que traduzca
www.elpais.es a la IP concreta.

Configurar DNS en máquinas Linux

Cuando se utilizan direcciones IP estáticas, además de la máscara de red, se debe configurar la puerta de enlace y los servidores DNS a utilizar. En este caso, se ha decidido configurar como DNS los propios servidores DNS de Google con direcciones IP 8.8.8.8 (DNS primario) e IP 8.8.4.4 (DNS secundario). Siempre se configuran 2 servidores DNS por si el primero falla en la conexión.

Para realizarlo, ejecutar:
root@clienteLinux:~# mv /etc/resolv.conf /etc/resolv.conf.old
#Guardamos
el archivo resolv.conf original con otro nombre, por si en un futuro queremos tener el archivo original. A continuación se insertan los 2 DNS en el archivo.
root@clienteLinux:~# echo nameserver 8.8.8.8 > /etc/resolv.conf
root@clienteLinux:~# echo nameserver 8.8.4.4 >> /etc/resolv.conf
root@clienteLinux:~# cat /etc/resolv.conf
nameserver 8.8.8.8

nameserver 8.8.4.4

root@clienteLinux:~# ping www.elpais.es #ya responde afirmativamente, pues el servidor DNS sabe que IP tiene el servidor www.elpais.es

Paso 3. Realizar un script con inicio automático, para que el enrutamiento se inicie siempre.

Si reiniciamos la máquina SistemasUbuntu, ya no enrutará. Es decir, la máquina clienteLinux ya no responde afirmativamente a ping 8.8.8.8.

¿Cómo solucionarlo?
Crear un script con los comandos del paso 1. Este script se ejecutará siempre que se inicie el equipo de forma automática.
En Ubuntu el archivo /etc/rc.local se ejecuta siempre que se inicia GNU-Linux.
En Ubuntu 18.04 este archivo no existe, pero lo creamos e introducimos los comandos vistos:

root@SistemasUbuntu:~# nano /etc/rc.local
#
Se escriben las 4 líneas siguientes:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -d 0/0 -j MASQUERADE
exit 0    #Siempre debe ser la última línea del script rc.local
root@SistemasUbuntu:~# chmod +x /etc/rc.local
#Se cambia permisos al archivo para que sea ejecutable.

root@SistemasUbuntu:~# reboot
#
Al reiniciar el equipo, se ejecuta rc.local, de forma que esta máquina ya enruta en todo momento. Comprobar que clienteLinux responde bien a ping www.elpais.es

Paso 4. Salida a Internet de máquinas Windows cliente1 y cliente2

Para que las máquinas Windows de la unidad 9 salgan a Internet, solo falta configurar en ellas la puerta de enlace y el servidor DNS que en su momento los dejamos en blanco según captura.
Configurar como puerta de enlace la máquina SistemasUbuntu: 192.168.100.103
Configurar como DNS los servidores de Google, 8.8.8.8 y 8.8.4.4.

Ilustración que muestra como se configura puerta de enlace y DNS
Miguel Ángel García Lara (CC BY-NC-SA)

Tener en cuenta que según la memoria RAM de la máquina anfitrión es posible que solo se puedan tener 2 o 3 máquinas virtuales encendidas. Reconfigurar si es necesaria la memoria de cada máquina en VirtualBox. Si las máquinas son de 64 bits, dejar 1600 MB en cada una. Si son de 32 bits, sólo 1024 MB.
En esta unidad, para realizar las prácticas siempre tendrá que estar encendida la máquina SistemasUbuntu, y alguna más como mínimo.

1.3.- Servicios y comandos TCP/IP en GNU-Linux.

Servicios en GNU-Linux

Los servicios en Linux se configuran con un archivo de texto, normalmente con extensión "conf". Así, una vez instalado el servicio web Apache se configura en el archivo /etc/apache2/apache2.conf

Los servicios en Linux se pueden parar e iniciar con el comando service. Hay 4 opciones: stop, start, restart, status.

Como ejemplo, para el servicio networking (servicio de red) se puede ejecutar:
# service networking start   #iniciar servicio de red
# service networking stop   #parar servicio de red
# service networking restart  #reiniciar servicio de red
# service networking status  #informa si el servicio se está ejecutando o está parado. Cuando se está ejecutando, aparece la palabra running (en color verde).

Comandos TCP/IP en Linux

Los comandos TCP/IP como dicen su nombre, no son exclusivos de Windows o Linux, sino del protocolo TCP.  De ahí que los comandos realizan la misma acción y sólo cambia el nombre alguno ligeramente. La relación en Linux son:

  • ifconfig /all (equivale a ipconfig en Windows)
  • ping
  • hostname
  • arp
  • traceroute (equivale a tracert en Windows)
  • netstat
  • nslookup
  • route

2.- Servicio SAMBA.

El servicio SAMBA sirve para compartir recursos entre máquinas Windows y Linux, para ello se utiliza el protocolo SMB, que es el que se encarga de compartir recursos en Windows. Si solo se comparten recursos entre máquinas Linux, el servicio nativo para ese fin es el servicio NFS que se verá en libro siguiente de esta misma unidad.
 
Características del servicio Samba
  • Se utilizan los puertos 137, 138, 139 y 443. Puertos 137 y 138 con protocolo UDP y 139 y 443 con protocolo TCP.
  • Los servicios en Linux, se configuran en un archivo. En el caso de Samba el archivo de configuración es /etc/samba/smb.conf
  • Cuando se tenga el recurso compartido, desde un cliente Linux, podremos acceder al recurso con el comando mount y sistema de ficheros cifs; desde un cliente Windows, a través del explorador en Red o con la ruta UNC.
El servicio Samba se instala y configura en el ejercicio 3 de la tarea.

Paso 1. Instalación del servidor Samba. En máquina router.

Instalar SAMBA, con los 2 paquetes siguientes (se va a instalar la versión 4.3 que se encuentra en repositorios de Ubuntu 18.04):
root@SistemasUbuntu:~# apt-get install samba samba-common-bin

Comprobar si está activo SAMBA. Para ello, hay que saber que SAMBA está compuesto de 2 demonios: smbd y nmbd. Comprobamos con service que están corriendo. Se verá running en verde:
root@SistemasUbuntu:~# service smbd status


● nmbd.service - LSB: start Samba NetBIOS nameserver (nmbd)
Loaded: loaded (/etc/init.d/nmbd; bad; vendor preset: enabled)
Active: active (running) since dom 2018-04-22 23:30:15 CEST; 2s ago
……..…… (para salir pulsar q)
root@SistemasUbuntu:~# service nmbd status

Paso 2. Configuración del archivo /etc/samba/smb.conf

Editar el archivo smb.conf y donde aparece workgroup, rellenar el nombre del grupo de trabajo de tus máquinas windows de la unidad 9. (Si apareciera la línea comentada habría que descomentarla)
workgroup = NOMBRE_GRUPO_TRABAJO

Para este ejemplo, se van a compartir 2 recursos. Una carpeta pública para todos los usuarios, con permisos de solo lectura y otra privada para algunos usuarios, con permisos de lectura y escritura. Para ello, añadir al final de archivo smb.conf:

[publico]
path = /samba/lectura
browseable = yes
guest ok = yes
read only = yes

[escritura]
path = /samba/escritura
browseable = yes
guest ok = no
writeable = yes
valid users = @samba

Significado de las distintas etiquetas:

  • La etiqueta browseable = yes, sirve para que los usuarios conectados, puedan ver en el explorador el recurso, sino es un recurso secreto.
  • En el recurso lectura se ha permitido el acceso a invitados (guest ok = yes), sin embargo, en el recurso escritura no (guest ok = no)
  • En escritura, se ha permitido el acceso a los usuarios que pertenezcan al grupo samba de nuestro Linux (valid users = @samba). También se podría poner usuarios concretos, sin utilizar @. Por ejemplo para permitir acceso a juan y a los usuarios del grupo samba se especifica:
    valid users = juan, @samba

Paso 3. Creación de usuario, grupos, carpetas y permisos en la máquina servidor.

Vamos a crear el grupo samba, e introducir en dicho grupo a los usuarios juan y juana. (juan es un usuario nuevo, y juana un usuario de los creados en la práctica de la unidad 9)

root@SistemasUbuntu:~# adduser juan
root@SistemasUbuntu:~# addgroup samba
root@SistemasUbuntu:~# adduser juan samba
root@SistemasUbuntu:~# adduser juana samba
#Creamos la carpeta samba y subcarpetas lectura y escritura. Cambiamos la pr
opiedad de la carpeta al grupo samba, y sus permisos, de forma que puedan guardar cambios todos los usuarios del grupo.
root@SistemasUbuntu:~# mkdir /samba
root@SistemasUbuntu:~# mkdir /samba/lectura
root@SistemasUbuntu:~# mkdir /samba/escritura
root@SistemasUbuntu:~# chgrp samba -R /samba
root@SistemasUbuntu:~# chmod 770 -R /samba

Todos estos comandos son comandos de administración de Linux explicados en las unidades 5 y 6. Ahora, se utilizan comandos específicos de Samba, para añadir a los usuarios juan y juana como usuarios del servicio samba. Para ello:
root@SistemasUbuntu:~# smbpasswd -a juan
root@SistemasUbuntu:~# smbpasswd -a juana

Una vez realizados cambios en los archivos de configuración de cualquier servicio, hay que reiniciarlo para que surtan efecto los cambios. En el caso de Samba, reiniciamos los 2 demonios:
root@SistemasUbuntu:~# service smbd restart
root@SistemasUbuntu:~# service nmbd restart

2.1.- Conexión desde máquinas cliente.

Conexión desde máquinas clientes Windows

Iniciar máquina cliente1 de la unidad 9. Recuerda, que hemos configurado en archivo de samba, el nombre del grupo de trabajo. Conectar a la máquina a traves del explorador con Red o con la ruta UNC \\SistemasUbuntu. Se abrirá la ventana con los recursos compartidos lectura y escritura.
Al pulsar doble clic para realizar la conexión se solicita usuario, conectar con juan.
Si sale el mensaje de que no se tiene acceso, ejecutar los 2 comandos que se ven en la captura.

A continuación se accede a ambas carpetas, con los permisos correctos.

Ilustracion que muestra el acceso cliente Samba en Windows
Miguel Ángel García Lara (CC BY-NC-SA)

Conexión desde máquinas clientes Linux

Para realizar la conexión desde la máquina “clienteLinux” seguir los pasos siguientes:

Instalar software para el cliente:

root@clienteLinux:~# apt install samba-common-bin
root@clienteLinux:~# apt install cifs-utils

Realizar conexión gráfica

Desde el explorador de archivos Nautilus, si pulsamos en RED, ya se ve la máquina SistemasUbuntu. En la captura se realiza una conexión al recurso escritura con el usuario juan.

Ilustración que muestra como se accede desde un cliente a samba
Miguel Ángel García Lara (CC BY-NC-SA)
Realizar conexión desde terminal. Comando mount:

root@clienteLinux:~# mkdir /mnt/escritura
#Se utiliza el comando mount, con sistema de ficheros cifs y usuario juan.
root@clienteLinux:~# mount -t cifs -o user=juan,pass=clave //192.168.100.103/escritura /mnt/escritura
root@clienteLinux:~# mkdir /mnt/escritura/carpeta2
#Se ha creado carpeta2 en servidor Linux

¿Qué hacer para que el usuario no tenga que utilizar el comando mount cada vez que se conecte?
Se añade en /etc/fstab la línea de montaje automático (en la unidad 6)
root@clienteLinux:~# nano /etc/fstab
#
Añadir al final del archivo la línea siguiente:
//192.168.100.103/escritura /mnt/escritura cifs rw,username=juan 0 0
#
Al iniciar el equipo, antes de comenzar sesión en GNU-Linux se pregunta usuario de acceso a los recursos de Samba.

Autoevaluación

Pregunta

¿Cual es falsa sobre Samba?

Respuestas

Samba permite compartir recursos entre máquinas Windows y Linux

El fichero de configuración es /etc/samba/smb.conf

Utiliza 2 puertos

Para montar un recurso se utiliza la opción cifs en el comando mount

Retroalimentación

3.- Servicio NFS.

Instalación y configuración del servidor NFS

El servicio NFS comparte recursos entre máquinas Linux, sin ser compatible con máquinas Windows. El servicio NFS es más seguro que Samba.
Una vez instalado el servicio, se configurarán las carpetas a compartir en el archivo de configuración /etc/exports.  A continuación se reinicia el servicio.
Para la conexión de los clientes se utiliza el comando mount.
El servicio NFS se instala y configura en el ejercicio 4 de la tarea.

Paso 1. Instalar servidor NFS

root@SistemasUbuntu:~# apt install nfs-kernel-server

Paso 2. Configurar que recursos se comparten en el archivo /etc/exports
root@SistemasUbuntu:~# nano /etc/exports
#Añadir al final del fichero las 2 líneas siguientes:
/nfs/escritura 192.168.100.104(rw)
/nfs/lectura 192.168.100.0/24(ro)
#La primera línea comparte con escritura (read write) exclusivamente al equipo 192.168.100.104.
#La segunda línea comparte solo lectura (read only) a todos los equipos de nuestra red (observa que queda totalmente definida, pues se pone la dirección de red y los bits de la máscara.

Paso 3. Se crean las carpetas y se cambian los propietarios al usuario nobody y grupo nogroup
root@SistemasUbuntu:~# sudo mkdir /nfs
root@SistemasUbuntu:~# sudo mkdir /nfs/lectura
root@SistemasUbuntu:~# sudo mkdir /nfs/escritura
#Para que no haya problema de acceso, la carpeta tiene que pertenecer al usuario nobody y al grupo nogroup (usuario y grupo genéricos de Linux para servicios)
root@SistemasUbuntu:~# sudo chown -R nobody /nfs
root@SistemasUbuntu:~# sudo chgrp -R nogroup /nfs
#Se crea un archivo en la carpeta lectura
root@SistemasUbuntu:~# echo hola > /nfs/lectura/saludo.txt
#Se cambian los permisos, de forma que puedan realizar todos los cambios en la carpeta el usuario y grupos propietarios:
root@SistemasUbuntu:~# chmod -R 770 /nfs
# Se reinicia el servidor, de esa forma se lee el archivo /etc/exports y comprueba la existencia de los directorios compartidos.
root@SistemasUbuntu:~# service nfs-kernel-server restart

3.1.- Cliente NFS.

Instalar cliente NFS en equipo clienteLinux y montar recurso con mount

Instalar cliente NFS
root@clienteLinux:~# apt install nfs-common

Crear las carpeta donde se van a montar los recursos
root@clienteLinux:~# mkdir /mnt/nfs
root@clienteLinux:~# mkdir /mnt/nfs/lectura
root@clienteLinux:~# mkdir /mnt/nfs/escritura

Montar el recurso de lectura. Comprobar que se tiene lectura y no escritura
root@clienteLinux:~# mount -t nfs 192.168.100.103:/nfs/lectura /mnt/nfs/lectura
# Se comprueba que se puede leer el archivo saludo.txt creado en el servidor

root@clienteLinux:~# ls -l /mnt/nfs/lectura
total 4
-rw-r--r-- 1 root root 5 abr 23 11:56 saludo.txt

root@clienteLinux:~# cat /mnt/nfs/lectura/saludo.txt
hola
# Se comprueba que no se puede escribir:
root@clienteLinux:~# echo soyCliente > /mnt/nfs/lectura/cliente.txt
bash: /mnt/nfs/lectura/cliente.txt: Sistema de archivos de solo lectura

Montar el recurso de escritura. Se comprueba que se puede escribir
root@clienteLinux:~# mount -t nfs 192.168.100.103:/nfs/escritura /mnt/nfs/escritura
root@clienteLinux:~# echo soyCliente > /mnt/nfs/escritura/cliente.txt

Archivo /etc/fstab líneas para no montar cada vez que se inicia el PC

Para no tener que utilizar el comando mount en cada sesión, se añaden las líneas correspondienes en el archivo /etc/fstab

root@clienteLinux:~# sudo nano /etc/fstab
#Añadir las 2 líneas siguientes:
192.168.100.103:/nfs/lectura         /mnt/nfs/lectura           nfs       ro,intr,x-gvfs-show     0     0
192.168.100.103:/nfs/escritura      /mnt/nfs/escritura       nfs       rw,intr,x-gvfs-show     0     0

Observaciones sobre las opciones:

  • Se monta con sistema nfs, y las opciones son:
  • ro/rw (read only/ read write según permiso en carpeta de servidor)
  • intr: evita bloqueo en caso de error
  • x-gvfs-show: que se monte gráficamente, además de terminal

Al iniciar el equipo, además de tener acceso en terminal, en el explorador de archivos Nautilus, habrá un acceso directo a las 2 carpetas.

4.- Servicio ssh.

Accesos remotos

El servicio acceso remoto consiste en acceder desde un equipo a otro de la red, y trabajar como si físicamente se estuviera en él. Los servicios más utilizados para acceder de forma remota a un sistema GNU/Linux son:

  • Telnet. Permite acceder al sistema de forma remota por terminal, pero de una manera no segura.
  • Open SSH. Permite acceder al sistema por terminal, pero de forma segura ya que se cifran las comunicaciones. Además, permite transferir archivos.
  • VNC. Mientras que los servicios telnet y SSH permiten conectarse al servidor por medio de un terminal, el servidor VNC permite utilizar el servidor utilizando el escritorio instalado en el sistema: GNOME o KDE.

Parámetros de ssh e instalación

  • El servicio ssh se puede instalar tanto en Windows como en Linux. Igualmente se puede aceder con clientes de ambos sistemas.
  • El servicio ssh utiliza el puerto 22.
  • Los usuarios de conexión, son los propios de la máquina Linux donde está instalado el servidor.
  • El servicio ssh tiene dos ventajas muy importantes con respecto al servicio Telnet:
    -  El servicio ssh es seguro a diferencia de telnet.
    -  El servicio ssh además de acceso remoto permite la transferencia de ficheros con la utilidad scp.
En el ejercicio 5 de la tarea se instala y se realizan conexiones con el servicio ssh.
Para instalar el servidor ssh se ejecuta en la máquina servidor:

root@SistemasUbuntu:~# apt install ssh
#Comprobamos que ya se está ejecutando
root@SistemasUbuntu:~# service ssh status

En el archivo de configuración /etc/ssh/sshd_config se configuran usuarios y/o equipos cliente que se les permite conectar.
En este caso, no le vamos a configurar. Por defecto se permite conectar desde toda la red y todos los usuarios del equipo.

Conexión desde equipos cliente

En el cliente no hay que instalar nada, simplemente conectarse con:
$ ssh user@IP
$ ssh user@Nombre_Equipo

Se está utilizando acceso remoto, de forma que físicamente se va a trabajar en la máquina clienteLinux, pero controlando la máquina servidor SistemasUbuntu. Por lo que tendremos que conectarnos con un usuario de la máquina servidor. Si nos conectamos con un usuario y password configurado en ambas máquinas, bastará para realizar la conexión con: $ ssh IP

Ejemplo de conexión

miguel@clienteLinux:~$ ssh 192.168.100.103
#conectar al servidor como miguel
………………………
miguel@192.168.100.103's password:
……………….
miguel@SistemasUbuntu:~$ exit
#se observa que la propia shell dice que la máquina actual es SistemasUbuntu. Se puede ejecutar cualquier comando como si se estuviera físicamente en SistemasUbuntu.
#Al escribir exit, se sale de la sesión, y se vuelve al equipo cliente.
logout
Connection to 192.168.100.103 closed.
miguel@clienteLinux:~$ ssh juan@192.168.100.103
#Se vuelve a realizar conexión al servidor, ahora como juan. El usuario juan existe en la máquina servidor, pero no en la máquina cliente.
juan@192.168.100.103's password:
…………………
#Se pregunta quien está conectado (who). Devuelve el usuario miguel en la propia máquina SistemasUbuntu y el usuario juan, desde la red, desde la máquina 192.168.100.104
juan@SistemasUbuntu:~$ who
miguel :0 2019-04-16 20:21 (:0)
juan pts/1 2019-04-17 22:52 (192.168.100.104)

juan@SistemasUbuntu:~$ exit    #Salir de ssh
logout
Connection to 192.168.100.103 closed.

Transferir archivos con comando scp.

El servicio ssh, incorpora el comando scp para copiar ficheros de la máquina servidor a la máquina cliente, o viceversa. Dicho de otra forma, el servicio ssh incorpora con el comando scp un servicio ftp que además es seguro y se conoce como sftp.

Observación
El comando scp se utiliza sin necesidad de realizar una conexión previa al servidor.

Sintaxis
scp [-r] [origen] [destino]
dónde, origen o destino lo forman: [usuario@maquina:archivo]
La opción –r es de recursiva para enviar o recibir una carpeta completa.

Ejemplo para enviar:
$ scp practica.odt juan@192.168.100.103:/home/juan/practica.odt
Se envía el archivo practica.odt al servidor ssh 192.168.100.103 

Ejemplo para recibir
$ scp juan@192.168.100.103:/home/juan/practica.odt nombre.odt
Se recibe el archivo practica.odt desde el servidor ssh 192.168.100.103

5.- Servicio Web: Apache.

Instalación y configuración del servicio web Apache

En la unidad 9 se instaló Internet Información Services de Windows con su servidor web y servidor ftp.
En este apartado se va a explicar la configuración del servidor web Apache. Apache se puede instalar tanto en Windows como en Linux. En la tarea no se ha incluido ningún ejercicio relacionado con Apache, no por su poca importancia, sino por haber instalado ya un servicio web en Windows.

Hace 20 años se creó la "Apache Software Foundation". Esta fundación la forman desarrolladores de software donde cada uno realiza sus propios proyectos de código abierto.
Página de Apache: http://www.apache.org/
Página de la fundación de software de Apache: https://es.wikipedia.org/wiki/Apache_Software_Foundation

Para instalar Apache en GNU-Linux: # apt-get install apache2
Una vez instalado, ya está funcionando Apache. Para comprobarlo, ejecutar: #service apache2 status

Ya se puede navegar y ver la página por defecto del servidor web Apache:

  • Desde el equipo servidor, escribir en el navegador: http://localhost
  • Desde otra máquina, escribir en el navegador: http://IP_servidor

Apache devuelve la página por defecto index.html alojada en el directorio /var/www/html

Ilustración que muestra la página por defecto de Apache
Miguel Ángel García Lara (CC BY-NC-SA)

Configuración del servidor Apache

La configuración de apache se almacena en el directorio de configuración /etc/apache2.
A continuación se ven las opciones de configuración más importantes:

  • El archivo /etc/apache2/apache2.conf tiene la configuración global del servidor.
  • El archivo /etc/apache2/ports.conf. Permite establecer los puertos de escucha de Apache, por defecto puerto 80 para http y puerto 443 para https.
    Listen *:80
    Listen *:443
    El * significa que puede realizar la petición cualquier ordenador.
  • En el mismo servidor se pueden tener varios sitios web, para ello, en la carpeta /etc/apache2/sites-available se guarda la configuración de cada uno en un archivo. Por defecto se encuentran los sitios default y default-ssl. Cada sitio (o archivo) tiene la siguiente estructura:
    <VirtualHost *:80>
    ServerAdmin servermaster@localhost
    Servername www.miempresa.com
    DocumentRoot /var/www/html
    DirectoryIndex index.html default.html
    </VirtualHost>

Dónde el significado de estas 4 directivas es el siguiente:

  • ServerAdmin es el correo electrónico del administrador del sitio web.
  • Servername es el nombre FQDN del sitio web. Para el dominio por defecto (archivo default) no se indica ningún nombre, por lo que la línea se deja comentada. Pero para otros dominios (por ejemplo, www.miempresa.com) sí se debe establecer.
  • DocumentRoot. Indica la ubicación donde se encuentra las páginas web del sitio.
  • DirectoryIndex. Indica el nombre de los ficheros que envía por defecto el servidor web. En el ejemplo, significa, que cuando en el navegador se escriba http://IP_servidor se devuelve la página /var/www/html/index.html

Ejemplo de creación de un nuevo sitio web

En un servidor web Apache se pueden alojar distintas páginas web o sitios web. Por defecto el servidor web publica el directorio /var/www/html para todos los dominios pero es posible personalizar de forma independiente cada dominio.

  • Para añadir el dominio www.miempresa.com que se aloje en la carpeta /portales/miempresa hay que crear el fichero /etc/apache2/sites-available/miempresa.com con el siguiente contenido:
    <virtualhost *:80>
    ServerName www.miempresa.com
    DocumentRoot /portales/miempresa
    DirectoryIndex index.html index.htm
    </virtualhost>
  • Activar el sitio
    # a2ensite miempresa.com
  • Reiniciar el servidor web
    # service apache2 restart

Página de inicio del servidor https

Con el auge de los negocios en Internet se ha popularizado el uso de comunicaciones cifradas entre los clientes y el servidor Web, siendo la tecnología de encriptación más utilizada el Security Socket Layer (SSL).

Por defecto viene instalado en Apache, por lo que para utilizar una página segura bajo https en Apache sólo hay que:

  • Activar el módulo ssl
  • Activar el sitio default-ssl
  • Reiniciar el servidor web

Una vez reiniciado el servidor, se accede desde el navegador con la dirección https://IP_Servidor.
Se puede generar certificado de seguridad utilizando el comando open-ssl.

5.1.- Apache con PHP.

Páginas web dinámicas lado servidor con PHP

PHP es un lenguaje de programación utilizado para crear páginas web dinámicas del lado servidor. En las páginas hay scripts de php para distintos fines. Como ejemplo de utilización, suponer que se solicita usuario y contraseña al usuario del navegador web, el código php accede a la base de datos guardada en el servidor, comprobando si el usuario tiene acceso y devolviendo los datos requeridos.

Para instalar php en nuestro servidor web Apache ejecutar:
# apt install php

En Ubuntu 18.04 se instala la versión 7.2 de php. Para comprobar que PHP se ha instalado con éxito se puede crear un fichero php y ubicarlo en el directorio raíz del servidor web.

Ejemplo: Crear script de inicio info.php
  • Editar el fichero /var/www//html/info.php.
    # nano /var/www/html/info.php # Escribir el contenido siguiente
    <?php
    echo "La información de mi servidor:<p />";
    phpinfo();
    ?> #Guardar archivo
  • Ahora, en el navegador web se escribe en la barra de direcciones http://localhost/info.php. Esta página devuelve la información del servidor utilizado (instrucción phpinfo).

Observar que ahora hemos tecleado el nombre del archivo, pues por defecto devolvería index.html (al ser el indicado en la directiva DirectoryIndex)

Ilustración que muestra PHP funcionando
Miguel Ángel García Lara (CC BY-NC-SA)

XAMPP

XAMPP es un paquete que aglutina varios servicios y programas: el servidor web Apache, el gestor de bases de datos MySQL y los intérpretes de lenguaje de scripts PHP y Perl. De esa forma, los programadores de páginas dinámicas utilizan este software, como una opción simple para tener todos los servicios instalados en un único proceso y con una configuración sencilla.

XAMPP se puede instalar tanto en GNU-Linux como en Windows.
Una vez instalado, hay un panel de control para iniciar o detener cada servicio (ver imagen)

Ilustración que muestra el panel de control de Apache
Materiales FP a Distancia del MEC (Dominio público)

Una vez instalado e iniciado Apache, ya se puede visualizar en el navegador la página de inicio de XAMPP escribiendo en el navegador htttp://localhost.
Esta página de inicio está guardada en el directorio de publicación del servidor web Apache por defecto, que en el caso de Windows es C:\xampp\htdocs. Ya se puede guardar en esa carpeta cualquier página web estática (html) o página dinámica (php)

6.- Servicio FTP: vsftpd

Configuración

El servicio ftp utiliza los puertos 20 y 21.
El servicio ftp más utilizado en Linux se llama vsftpd (Very Secure FTP) es un servidor FTP muy pequeño y seguro.

Para instalarlo: # apt install vsftpd
Una vez instalado y comprobado que está funcionando, ya se puede conectar el navegador. Las conexiones se harán con los mismos clientes ftp que los vistos en la unidad 9: terminal, filezilla, navegadores web.

El archivo de configuración se llama /etc/vsftpd.conf
En este archivo se configura los usuarios permitidos, si se permite usuario anónimo o no, como la carpeta de descarga del servidor.
Por defecto, no se permite el acceso al usuario anónimo. Los usuarios permitidos son los propios del sistema, y su directorio de conexión es su $HOME. Es decir, si se conecta el usuario luis al servidor ftp, el directorio donde se conecta es /home/luis.
Además se configura si los usuarios se quedan enjaulados en su directorio, este concepto es importante. Supongamos que el directorio de conexión ftp de un usuario es /home/luis es importante asegurarse que no va a poder salir al directorio padre con el comando cd .. 
De hecho, por defecto los usuarios no están enjaulados. Ver captura.

Ilustración que muestra la conexión a un servidor ftp en linux
Miguel Ángel García Lara (CC BY-NC-SA)

Anexo.- Licencias de recursos.

Licencias de recursos utilizados en la Unidad de Trabajo.
Recurso (1) Datos del recurso (1) Recurso (2) Datos del recurso (2)
Icono de un ordenador.

Autoría: rgtaylor_csc.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/17668/net-computer-by-rgtaylor_csc

Resultado del comando ifconfig donde se muestran las interfaces de red del sistema GNU/Linux.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del terminal ejecutando ifconfig, propiedad de Ubuntu.

Herramienta Configuración de red de X-Windows.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta de configuración de red de Xwindows, propiedad de Ubuntu.

Pantalla donde se indica la seguridad de la red inalámbrica a la que vamos a acceder.

Autoría: Ubuntu.

Licencia: Uso Educativo no comercial.

Procedencia: Captura de pantalla de la herramienta de configuración de red inalámbrica de Xwindows, propiedad de Ubuntu.

Mensaje que indica que se ha establecido la conexión inalámbrica correctamente.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del escritorio de Ubuntu, propiedad de Ubuntu.

Icono de un fichero de configuración.

Autoría: Andrew Fitzsimon / Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/25528/text-page-icon-by-anonymous-25528

Resultado de ejecutar el comando ping para comprobar la comunicación con el servidor  www.google.es.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del terminal mostrando el comando ping, propiedad de Ubuntu.

Captura de pantalla de las herramientas de red de x-Windows.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta de red de Xwindows, propiedad de Ubuntu.

Icono de un cortafuegos.

Autoría: HASH(0x89c79d4) / Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/24075/firewall-by-anonymous-24075

Icono de un cortafuegos.

Autoría: Andrew Fitzsimon / Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/25428/network-by-anonymous-25428

Página oficial del servidor de nombres Bind (http://www.isc.org/).

Autoría: isc.org.

Licencia: GPL.

Procedencia: Captura de pantalla de www.isc.org.

Página oficial del servidor SAMBA (http://www.samba.org/).

Autoría: www.samba.org.

Licencia: GPL.

Procedencia: Captura de pantalla www.samba.org.

Icono de Usuarios del sistema.

Autoría: warszawianka.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/35347/tango-system-users-by-warszawianka

Icono Compartiendo una carpeta.

Autoría: lyte.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/163717/file-server-by-lyte

Impresora HP1320 instalada.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta Imprimiendo propiedad de Ubuntu.

Opciones de configuración del servidor de impresión.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta Imprimiendo propiedad de Ubuntu.

Administración de samba utilizando swat.

Autoría: swat.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta swat propiedad de SAMBA.

Administración de samba utilizando webmin.

Autoría: webmin.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta webmin, propiedad de www.webmin.org.

Configuración del servidor samba.

Autoría: Ubuntu.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la herramienta Configuración del servidor de Samba propiedad de Ubuntu.

Icono de una carpeta.

Autoría: Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/109591/another-folder-icon-01-by-anonymous

Esquema en el que se detallan los diferentes elementos del servicio NFS.

Autoría: Blog del sensei.

Licencia: GPL.

Procedencia: Montaje sobre: http://josejuanlt.ipower.com/blogsensei/?p=763

Página oficial openSSH (www.openssh.org).

Autoría: OpenSSH.

Licencia: GNU/GPL.

Procedencia: www.openssh.org.

Icono de un fichero de configuración.

Autoría: Andrew Fitzsimon / Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/25528/text-page-icon-by-anonymous-25528

Conexión remota por SSH con PuTTY.

Autoría: Putty.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la aplicación Putty, propiedad de Putty.

Página oficial tightVNC (http://www.tightvnc.com/).

Autoría: toghtVNC Software.

Licencia: GNU/GPL.

Procedencia: http://www.tightvnc.com/

Acceso al servidor por VNC con Vinagre.

Autoría: Vinagre.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la aplicación Vingre, propiedad de Vinagre.

Aplicación Windows tightVNC para conectarse a un servidor VNC.

Autoría: tightVNC.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la aplicación tightVNC, propiedad de tightVNC.

Acceso al servidor VNC con  tightVNC viewer.

Autoría: Ubuntu y tightVNC.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla de la aplicación tightVNC, propiedad de tightVNC.

Página web de prueba de Apache.

Autoría: Firefox y Apache.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del navegador Firefox, propiedad de firefox.

Icono de un fichero de configuración.

Autoría: Andrew Fitzsimon / Anonymous.

Licencia: GPL.

Procedencia: http://openclipart.org/detail/25528/text-page-icon-by-anonymous-25528

Resultado de la ejecución de la página phpinfo().

Autoría: Firefox y PHP.org.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del navegador Firefox, propiedad de firefox .

Página de inicio del servidor por https.

Autoría: Firefox.

Licencia: GNU/GPL.

Procedencia: Captura de pantalla del navegador Firefox, propiedad de firefox.

Página oficial vsftp (http:// vsftpd.beasts.org/.

Autoría: vsftpd.

Licencia: GNU/GPL.

Procedencia: vsftpd.beasts.org/.