Está en la página 1de 65

Linux

Foundation Certified Engineer (LFCE) - Guía de estudio

Table of Contents
Introducción 0
Indice 1
Network administration. Configurar servicios de red para su inicio automático. 2
Network administration. Implementar filtrado de paquetes. 3
Network filesystems & file services. Introducción. 4
Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 5
Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 6
Network filesystems & file services. Proveer / configurar discos compartidos de red
mediante NFS. 7
Network filesystems & file services. Transferir ficheros de forma segura por la red. 8
Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 9
HTTP Services. Instalar y configurar un servidor web Apache 10
HTTP Services. Configurar un cliente para usar automáticamente un servidor proxy.
HTTP Services. Restringir acceso a una página web con Apache. 12 11
Network security. Configurar acceso remoto usando pares de claves público/privada
basado en SSH. 13
Network security. Configurar el firewall con iptables / firewalld. 14
Email services. Instalar y configurar un servidor SMTP. 15

2
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Linux Foundation Certified Engineer


(LFCE) - Guía de estudio.
Guía de estudio para la certificación Linux Foundation Certified Engineer (LFCE).

Algunos supuestos.
Implicaciones de la versión de Centos
En el momento de escribir esta documentación solo es posible examinarse para la versión 7
de Centos. Dicha versión de Centos tiene muchos cambios importantes que afectan a lo
que tenemos que saber en el examen. Hay que tener cuidado además ya que muchos
documentos que podemos encontrarnos por Internet a propósito del examen hacen
referencia a versiones 6 de Centos y algunas cosas cambian. Algunos de los cambios son:

Sistemd sustituye a init. Esto implica cambios muy importantes, basicamente nos
afectará a la gestión de los servicios (comando systemctl ) aunque casi todos
podremos seguir gestionandolos con service ya que existen alias para que sigan
funcionando.

Firewalld sustituye a iptables. Realmente cambia el servicio y los comandos ya que


iptables sigue estando "debajo". En el momento de escribir este documento algunas
competencias para el examen menciaban expresamente iptables . En un correo de
consulta a LF contestaron que se pueden usar cualquiera de los dos firewall: iptables o
firewalld. Optamos en esta documentacion, ya que estamos aprendiendo, por firewalld
pero eres libre de usar iptables en el examen, solo tienes que desintalar uno e instalar
otro. Es algo muy sencillo y hay mucha documentación en Internet al respecto.

Selinux
Dado que en ninguna parte en las competencias de la certificación se menciona SELinux
damos por hecho que no se usa y por tanto no es necesario controlarlo. Imaginamos que en
los sistemas que usemos para el examen estará desactivado.

Algunos consejos

Introducción 3
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Algunos consejos a seguir que son útiles siempre en general pero mucho más en el
examen.

1.- Copia previamente cualquier fichero que tengas que modificar. Siempre, siempre,
siempre copia el ficherro antes de modificarlo. Si te molestan en la ubicación general o ni
tienes claro que puedan ser interpretada las copias create un directorio p.e. $HOME/Copias
y los vas copiando en este.

2.- Uso del editor VI / VIM. Debes controlar el mínimo el uso de VIM. No es necesario que
seas un crack pero muevete rápido por ficheros.

3.- Uso de la ayuda del sistema man y ficheros adicionales de ayuda. Desintoxicate de
googl. Durante el examen solo podrás usar la ayuda del sistema así que habituate a
manejarte adecudadmente por ella y navega por la ayuda de las utilidades / comandos más
importantes para familiarizarte como te dan la ayudas contienen o no ejemplos. No es
necesario estudiar algo que eres consciente vas a localizar rapidamente en la ayuda.

Introducción 4
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Linux Foundation Certified Engineer


(LFCE).
The core domains and related competencies covered by the LFCE Exam are:

Network administration
80% Configure network services to start automatically at boot
Implement packet filtering
Monitor network performance
Produce and deliver reports on system use, outages and user requests
Route IP traffic statically and dynamically
Troubleshoot network issues

Network filesystems and file services


80%Configure systems to mount standard, encrypted and network file systems on
demand
80%Create, mount and unmount standard Linux file systems
70%Provide/configure network shares via NFS
90%Transfer files securely via the network
70%Update packages from the network, a repository or the local file system

Network security
Configure Apache log files
90% Configure the firewall with iptables / firewalld
Install and configure SSL with Apache
90% Configuring SSH-based remote access using public/private key pairs

Remote access
R Configure the firewall with iptables / firewalld!

Indice 5
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

HTTP services
99% Configure an http client to automatically use a proxy server
40% Install and configure an Apache web server
Install and configure the Squid proxy server
2% Restrict access to a web page with Apache
Restrict access to the Squid proxy server
Setting up name-based virtual web hosts

Email services
Configure email aliases
Install and configure an IMAP and IMAPS service
Install and configure an smtp service
Restrict access to an smtp server

warqwr

Indice 6
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Configurar servicios de red para su inicio


automático.

Introducción
Comentaremos en esta sección como configurar el inicio automático genérico de servicios
en Redhat / Centos 7. Los paquetes y servicios necesarios para cada aplicación se verán
en cada apartado de instalación y configuración correspondiente (apache, nfs,…).

En Redhat 7 / Centos 7 se ha sustituido SysVinit por Systemd por tanto cambia la forma
de gestionar el inicio de los servicios. Si usamos los antiguos comandos “service” veremos
que la mayoría funcionaran ya que el sistema se encarga de enlazarlos a comandos
Systemd y nos avisa al respecto pero no tenemos garantía de que todos funcionen y cuanto
antes nos acostumbremos a Systemd mejor.

[]# service NetworkManager stop


Redirecting to /bin/systemctl stop NetworkManager.service

No vamos a hacer aquí un tutorial de Systemd ya que no es el caso y ya existen


estupendos tutoriales al respecto (ver referencias al final de este artículo). Nos centraremos
exclusivamente en ver como se gestionan los servicios y como se configuran para su inicio
automático. Para la gestión de servicios se usará el comando systemctl

Configuración de inicio automático para


servicios.
Activar o desactivar el inicio automático es muy sencillo y además el comando nos
proporcionan información adicional de los enlaces simbólicos que crea / elimina.

[]# systemctl enable httpd


ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.serv
[]# systemctl disable httpd
rm '/etc/systemd/system/multi-user.target.wants/httpd.service'

Network administration. Configurar servicios de red para su inicio automático. 7


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

NOTA: Cuando trabajamos con servicios sería más correcto añadir “.service” tras el nombre
de este en la forma systemctl enable httpd.service . El comando systemctl interpreta que si
no especificamos nada (unidad) por defecto será un servicio, por eso funciona
correctamente.

Podemos verificar si un servicio está activado para el inicio o no con is-enabled

[]# systemctl is-enabled httpd


disabled

[]# systemctl enable httpd


ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.serv

[]# systemctl is-enabled httpd


enabled

Otras operaciones básicas con servicios.


El resto de operaciones básicas con servicios usarán las palabras clave habituales stop ,
start , restart , reload . Mediante is-active” también averiguamos si un servicio está

activo.

[]# systemctl start httpd


[]# systemctl stop httpd
[]# systemctl restart httpd
[]# systemctl reload httpd
[]# systemctl is-active httpd

Y por supuesto la verificación de estado que nos da información importante.

Network administration. Configurar servicios de red para su inicio automático. 8


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# systemctl status httpd


httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since dom 2015-08-30 10:02:04 CEST; 2s ago
Process: 11929 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 11935 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─11935 /usr/sbin/httpd -DFOREGROUND
├─11936 /usr/sbin/httpd -DFOREGROUND
├─11937 /usr/sbin/httpd -DFOREGROUND
├─11938 /usr/sbin/httpd -DFOREGROUND
├─11939 /usr/sbin/httpd -DFOREGROUND
└─11940 /usr/sbin/httpd -DFOREGROUND

ago 30 10:02:02 centos7 systemd[1]: Starting The Apache HTTP Server...


ago 30 10:02:03 centos7 httpd[11935]: AH00558: httpd: Could not reliably de...ge
ago 30 10:02:04 centos7 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

También podemos desactivar servicios de forma que no se puedan iniciar de forma manual.
Es una funcionalidad disponible para asegurarse de que no es posible iniciar un servicio de
forma manual, automática o semiautomática sin reactivarlo de nuevo. Se hace mediante
mask / unmask

[]# systemctl mask httpd


ln -s '/dev/null' '/etc/systemd/system/httpd.service'

[]# systemctl start httpd


Failed to issue method call: Unit httpd.service is masked.

[]# systemctl unmask httpd


rm '/etc/systemd/system/httpd.service'

Verificamos como siempre si el puerto está abierto con ss -tnlp | grep puerto

¿Y si el servicio que instalamos es de xinetd?


Systemctl start servicio.socket ???? Ver lo de SOCKET. En LinuxAcademy el video
prueba con un servidor de telnet.

Referencias. RHEL7: How to get started with Systemd. Overview of systemd for RHEL 7

Network administration. Configurar servicios de red para su inicio automático. 9


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network administration. Implementar


filtrado de paquetes.
En la certificación de Redhat RHCE expecifica: Use firewalld and associated mechanisms
such as rich rules, zones and custom rules, to implement packet filtering and configure
network address translation (NAT) (this objective replaces the Use iptables to implement
packet filtering and configure network address translation objective).

Basicamente el filtrado de paquete consiste en gestionar mediante reglas el envio /


recepción de paqetes.

la posibilidad de enviar paquetes entre interfaces de red lo que suele suponer:

Acivar ip_forward (net.ipv4.ip)


Activar en el firewall reglas para permitir tráfico entre interfaces (y NAT?)

http://www.linuxtopia.org/Linux_Firewall_iptables/

Network administration. Implementar filtrado de paquetes. 10


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services.


Introducción.

Competencias.
Esta sección del examen de certificación LFCE se compone de las siguientes secciones /
competencias.

Configure systems to mount standard, encrypted and network file systems on demand
Create, mount and unmount standard Linux file systems
Provide/configure network shares via NFS
Transfer files securely via the network
Update packages from the network, a repository or the local file system

Aclaraciones.
Esta es una de las secciones que mas dudas introduce en cuanto a las competencias
exactas que es necesario conocer además de mezclar un tanto los temas.

En cuanto a Sistemas de ficheros

Sistemas de ficheros estándar: Asumimos como estándard los sistemas de ficheros


extX ( ext4 basicamente) y xfs que se usa ya de hecho por defecto en Centos 7.
Particiones: Para poder trabajar sobre sistemas de ficheros debemos tener claro el
uso de particiones tanto sobre dispositivos de disco directamente como sobre discos
LVM. Aunque realmente debía ser un tema superado hacemos un breve resumen en
esta documentación.
On demand (bajo demanda) Este es uno de los asuntos más espinosos.
Interpretamos que se refiere a bajo demanda del usuario (montar particiones de forma
manual) o bajo demanda de la aplicación (montarlas de forma automática cuando se
necesiten / requieran -> Automount). Pienso que bajo demanda se refiere a usar
automount así que se veremos ambos casos además de repasar el montaje de

dispositos al inicio del sistema (/etc/fstab).

Relativo a trasferir ficheros de forma segura

En este caso parece que hay que decantarse por la utilidades scp y sftp. Parece lo que
tiene más sentido y es lo que interpretan en general para este tema otros sitios sobre esta
certificación. También veremos por encima rsync y como hacer X forwarding .

Network filesystems & file services. Introducción. 11


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Actualización de paquetes

Este punto es también un tanto confuso. Este es uno de esos temas que no sabes como
enfocar exactamente. Como estamos con repositorios descartamos utilidades como rpm
que además son más de LFCA y nos centramos en yum pero sin entrar mucho. Veremos la
configuración de repositorios de yum y como modificar el origen de nuestros repositorios.
Por otro lado veremos como configurar un repositorio "local" en un servidor y como usarlo
desde el propio sistema o/y configurar Apache para que pueda ser accedido mediante http.

Orden de lectura.
El orden de lectura de estos capítulos afecta sobre todo a dos de ellos, el resto da igual
realmente:

1. Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux.
2. Configurar sistemas para montar bajo demanda sistemas de ficheros estándar,
encriptados y de red.

Network filesystems & file services. Introducción. 12


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services.


Configurar sistemas para montar bajo
demanda sistemas de ficheros estándar,
encriptados y de red.

Introducción.
En el capítulo "Network filesystems & file services. Crear, montar y desmontar Sistemas de
ficheros estándar de Linux." ya habiamos repasado como se montan sistemas de ficheros
"estándar" tanto manualmente mediante comandos como de forma automática en el inicio
(no confundir con "bajo demanda"??)

En este tema veremos.

Configuración de sistemas de ficheros encriptados.


Montar sistemas de ficheros encriptados.
Montar sistemas de ficheros de red.
Montar sistemas de ficheros de red para su inicio automático.
Montaje de sistemas de ficheros bajo demanda con automount.

Configuración de sistemas de ficheros


encriptados.
Para encriptar sistemas de ficheros usaremos Cryptsetup que es basicamente un frontend
para usar el módulo de encriptación del Kernel, dm-crypt, eliminando las llamadas directas a
dmsetup. Mediante estas utilidades encriptaremos las particiones de disco usando el
estandar LUKS.
Será necesario encriptar la partición antes de crear el sistema de archivos por lo que si
queremos encriptar una partición con información existente será necesario hacer una copia
primero.

Si no tenemos dichas utilidades instaladas lo hacemos:

yum install cryptsetup

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 13
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Siguiendo con el ejemplo del caṕitulo previo vamos a encriptar una partición estandar xfs.
Nos tenemos que asegurar primero de que no esté ni montada ni disponible en /etc/fstab
inicialmente.
Encriptamos el sistema de archivos em formato LUKS en su forma más sencilla:

[]# cryptsetup -y luksFormat /dev/sdb1


WARNING!
Esto sobreescribirá los datos en /dev/sdb1 de forma irrevocable.
Are you sure? (Type uppercase yes): YES
Introduzca la frase contraseña:
Verifique la frase contraseña:

ATENCIÓN la respuesta YES debe ser así en mayúsculas (Type uppercase yes).

Podriamos cambiar distintas opciones de encriptación relativas a los algoritmos usados (ver
la ayuda del comando). Para ver las opciones que usa por defecto.

[]# cryptsetup --help


..
Parámetros predefinidos de fábrica de clave y de frase contraseña:
Tamaño máximo del fichero de claves: 8192k8, Longitud máxima de frase contraseña interactiva: 512
Tiempo PBKDF2 de iteración de LUKS predefinido: 1000 (ms)

Parámetros predefinidos de fábrica del algoritmo de cifrado de dispositivos:


bucle-AES: aes, Clave 256 bits
sin cifrado: aes-cbc-essiv:sha256, Clave: 256 bits, Contraseña «hashing»: ripemd160
LUKS1: aes-xts-plain64, Clave: 256 bits, «hashing» de la cabecera LUKS: sha1, Generador de número

Abrimos el disco para acceso a este.

Mediante la acción "luksOpen" accedemos al disco (y le damos un nombre). Este será


accesible en /dev/mapper/NOMBRE

[]# cryptsetup luksOpen /dev/sdb1 disco_encriptado


Introduzca la frase contraseña de /dev/sdb1:

[]# ll /dev/mapper/disco_encriptado
/dev/mapper/disco_encriptado -> ../dm-2

Realmente el comando adecuado debería ser:

[]# cryptsetup open --type luks /dev/sdb1 disco_encriptado


Introduzca la frase contraseña de /dev/sdb1:

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 14
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

La opción "luksOpen" se mantiene por compatibilidad. En cualquier caso es más sencillo


recordad para todo "luks+Accion"

Creamos el sistema de archivos. Una vez abierto y accesible el disco podemos crear el
sistema de archivos necesario y montarlo. p.e.

mkfs.xfs /dev/mapper/disco_encriptado
mount /dev/mapper/disco_encriptado /mnt/midisco

Cerrar el disco Para cerrar el disco se usa la acción 'luksClose' aplicado al nombre del
disco pero tenemos que desmontar la partición previamente

[]# umount /dev/mapper/disco_encriptado


[]# cryptsetup luksClose disco_encriptado

Montar sistemas de ficheros encriptados al


inicio del sistema.
Los Sistemas de ficheros encriptados usan como el resto /etc/fstab para su configuración de
inicio pero con una configuración adicional.

1.- Configuramos el mapeo de nombre fijo para nuestro dispositivo. Lo hacemos añadiendo
una línea a /etc/crypttab . Nos aseguramos de poner la opción "noauto" para que no nos
pida la password durante el inicio ya que ante cualquier problema no iniciará el sistema.

disco_encriptado /dev/sdb1 none noauto

2.-Configuramos la línea de inicio en /etc/fstab como cualquier otro disco.

/dev/mapper/disco_encriptado /mnt/midisco xfs noauto,defaults 1 2

En este caso podemos optar por no poner "noauto" para que en el inicio nos pida la clave
de acceso y monte el volumen. Tampoco conviene en general. Es mejor usar automount
como veremos posteriormente para que el disco se monte y nos pida la clave cuando lo
usemos.

Montar sistemas de ficheros de red.

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 15
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

En otros capitulos hemos visto como configurar NFS para servio directorior por red. Ahora
echaremos un ojo rápido a como montarlos. Realmente no se diferencia especialmente de
montar cualquier sistema de ficheros pero si que tendremos que dedicarle algo más de
tiempo a las utilidades de verificación y exploración para evitar problemas.

Debemos tener obviamente el servidor NFS correctamente configurado como se ve en el


capitulo correspondiente de esta sección. Siempre verificamos primero en el propio servidor
que estamos exportando correctamente el/los recursos con showmount o exportfs.

[]# showmount -e localhost


Export list for localhost:
/var/mi_share 192.168.122.0/24

[]# exportfs -v
/var/mi_share 192.168.122.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_roo

Luego desde el cliente podemos verificar ya que vemos los recursos compartidos del
servidor.

[~]# showmount -e 172.31.18.4


Export list for 172.31.18.4:
/var/mi_share *

Usaremos como siempre mount para montar el sistema de ficheros nfs desde el equipo
cliente. La sintaxis es:

mount -t nfs -o options host:/remote/export /local/directory

Montamos nuestra unidad en un directorio local, sin opciones (usará opciones por defecto) y
verificamos con df y con mount además vemos que opciones ha usado para montarlo.

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 16
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# mount -t nfs 172.31.18.4:/var/mi_share /mnt/dir1

[]# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/xvda1 20G 4,9G 16G 25% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 13M 484M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
tmpfs 100M 4,0K 100M 1% /run/user/1001
tmpfs 100M 0 100M 0% /run/user/0
172.31.18.4:/var/mi_share 20G 4,9G 16G 25% /mnt/dir1

[]# mount | grep mi_share


172.31.18.4:/var/mi_share on /mnt/dir1 type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,naml

Algunas opciones de montado de sistemas de ficheros NFS más habituales.

timeo=n Establece el tiempo (en décimas de segundo) que el cliente de NFS esperará
por la respuesta a una petición. El valor predefinido vemos que es 600 (6 segundos).
Lo que pase después depende de si usa la opción hard o soft.

hard Explícitamente marca este volumen como montado físicamente. Es el valor


predeterminado. Esta opción hace que el servidor muestre por la consola un mensaje
cuando expira el tiempo de operación y continúa indefinidamente.

soft Monta lógicamente (como opuesto al montaje físico) el controlador. Esta opción
causa un error de E/S a ser informado al proceso que intenta poner en funcionamiento
un fichero cuando expira el tiempo de operación.

intr Permite una señal para interrumpir una llamada a NFS. Es útil parar abortar
cuando el el servidor no responde.

nfsvers=version Especifica que versión del protocolo NFS usará (2,3 o 4). Es útil por
si el Host soporta varias versiones y nos interesa usar una concreta. Si no se especifica
usa la versión más alta que soporte el kernel y el comando mount .

udp / tcp Especifica que protocolo ser usará para montar el sistema de ficheros (si el
servidor lo soporta).

Montar sistemas de ficheros de red para su


inicio automático.

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 17
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Para que se monten los Sistemas de ficheros NFS en el inicio del sistema se configuraran
en /etc/fstab igual que cualquier otro sistema de ficheros.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx

Montar y desmontar sistemas de ficheros bajo


demanda.
Además de montar sistemas de ficheros de forma automática al inicio (mediante
configuración en fstab) podemos hacer que se monten solo cuando se necesiten, o sea se
montarán cuando se acceda al punto de montaje definido. Es una característica muy
interesante ya que al no estar montados no consumirán recursos. Además se evita
montarlos en inicio que a veces pueden ocasionar problemas de inicio y/o lentitud en caso
de sistemas de ficheros de red.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx

Referencias.

How to Setup Encrypted Filesystems and Swap Space Using ‘Cryptsetup’ Tool in Linux
https://www.linux-geex.com/centos-7-how-to-setup-your-encrypted-filesystem-in-less-
than-15-minutes/
Redhat 7 doc - AutoFS
Cryptsetup
Cryptsetup FAQ
https://geekpeek.net/disk-encryption-on-centos-linux/ *Redhat 7 doc - nfs client

Network filesystems & file services. Configurar sistemas para montar bajo demanda
sistemas de ficheros estándar, encriptados y de red. 18
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services. Crear,


montar y desmontar Sistemas de ficheros
estándar de Linux.

Introducción.
En este tema no haremos mucho hincapié ya que entiendo que es algo superado en LFCS.
Imagino que la finalidad es repasar para controlar luego bien el tema de los Sistemas de
ficheros encriptados. Los temas a controlar serian:

Crear particiones estándar de disco (no LVM en principio) ya que serán necesarias para
crear los Sistemas de ficheros.
Crear sistemas de ficheros estándar (ext3, ext4 y xfs)
Montar y desmontar mediante comandos sistemas de ficheros.
Montar sistemas de ficheros de forma automática mediante fstab.

Crear particiones de disco.


Para crear las particiones de disco tenemos varias opciones clásicas.

El clásico fdisk
El llamado a suceder al anterior por su capacidad de gestionar particiones GPT, gdisk.
La alternativa gparted

El consejo es que uses mejor fdisk. Si por un casual en el examen hablan de discos GPT o
de particiones mayores de 2 Tb (no creo) puedes usar gdisk que si se usa para particionar
un disco nuevo es prácticamente igual en su uso que fdisk. Si usas gdisk probablemente
tengas que instalarla primero.

Uso básico de fdisk


Listamos discos con fdisk -l

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 19
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors


Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x000e9b33

Disposit. Inicio Comienzo Fin Bloques Id Sistema


/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors


Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors


Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Accedemos al disco para editar las particiones con fdisk dispositivo .


Mostramos un particionado clásico con fdisk usando las opciones habituales: p -> imprimir
particiones en pantalla, n -> nueva particion, p -> partición primaria (en el menu de tipo de
particionar), t -> tipo de partición, w -> escribir cambios a disco (muy importante). Dentro de
fidsk podemos usar m para que nos ofrezca la ayuda de los comandos posibles.

[]# fdisk /dev/sdb


Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table


Building a new DOS disklabel with disk identifier 0x42956db5.

Orden (m para obtener ayuda): p <-------- VER PARTICIONES (p)

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors


Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x42956db5

Disposit. Inicio Comienzo Fin Bloques Id Sistema

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 20
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Orden (m para obtener ayuda): n <-------- NUEVA PARTICION (n)

Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p <-------- PARTICION PRIMARIA (p)
Número de partición (1-4, default 1): 1 <-------- PARTICION 1
Primer sector (2048-2097151, valor predeterminado 2048):
Se está utilizando el valor predeterminado 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, valor predeterminado 2097151):
Se está utilizando el valor predeterminado 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Orden (m para obtener ayuda): t <-------- TIPO DE PARTICION


Selected partition 1

Hex code (type L to list all codes): 83 <-------- TIPO 83 = Linux


Changed type of partition 'Linux' to 'Linux'

Orden (m para obtener ayuda): p <-------- VER PARTICIONES (p)

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors


Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x42956db5

Disposit. Inicio Comienzo Fin Bloques Id Sistema


/dev/sdb1 2048 2097151 1047552 83 Linux

Orden (m para obtener ayuda): w <-------- ESCRIBIR PARTICIONES (p)


¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.


Se están sincronizando los discos.

NOTA: En versiones previas de fdisk era habitual usar los parámetros -c (desactivar
compatibilidad DOS) y -u (mostrar tamaño de disco en sectores). Estos dos flags han
cambiado la forma de uso en recientes versiones de fdisk y, sobre todo, además ambas
opciones son ya por defecto. Por defecto las nuevas particiones empezarán en el sector
2048 lo que nos permite un correcto alineamiento con cualquier tipo de disco en cualquier
tipo de almacenamiento.

Uso básico de gdisk


La utilidad gdisk se creo para permitir gestionar además particiones de tipo GPT (cosa que
fdisk no hace). GPT nos permite entre otras cosas:

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 21
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Particiones de más de 2Tb.


128 particiones por disco

Excepto el comienzo al ejecutar la utilidad el resto es muy similar a fdisk por lo que no
vamos a profundizar mucho. Basicamente cambia algo la presentación en cuanto al análisis
y la información mostrada del disco pero las opciones de partición son iguales que con
fdisk.

[]# gdisk /dev/sdb


GPT fdisk (gdisk) version 0.8.6

Partition table scan:


MBR: not present
BSD: not present
APM: not present
GPT: not present

Creating new GPT entries.

Command (? for help):

Si cambian completamente por ejemplo los codigos del tipo de partición (L). En cualquier
caso es sencillo localizar el adecuado y nos ofrece por defecto el código 8300 que equivale
a "Linux filesystem".

Ojo: No usar fdisk en un disco ya particionado con gdisk. Para evitar problemas seguir
usando gdisk.

Crear sistemas de ficheros estándar.


Nos centraremos en Sistemas de ficheros ext3, ext4 y xfs que se introduce en RHEL7 /
Centos7 como estándar.

Actualmente todas las utilidades para crear sistemas de ficheros se suelen encontrar en
/sbin y empiezan por mkfs (make filesystem).

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 22
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# ll /sbin/mk* | awk '{print $5, $9}'


15 /sbin/mkdict
16890 /sbin/mkdumprd
96240 /sbin/mke2fs
11504 /sbin/mkfs
287400 /sbin/mkfs.btrfs
32768 /sbin/mkfs.cramfs
96240 /sbin/mkfs.ext2
96240 /sbin/mkfs.ext3
96240 /sbin/mkfs.ext4
32856 /sbin/mkfs.minix
351440 /sbin/mkfs.xfs
19488 /sbin/mkhomedir_helper
11360 /sbin/mklost+found
66984 /sbin/mkswap

A partir de ahí es sencillo. Es obvio cual tendrás que usar en función del tipo de filesystem a
usar. Sin o está el que necesitas probablemente tendrás que instalar el paquete adecuado
para que instale el binario.
La sintaxis basica es:

mkfs.typo /dev/particion

Por ejemplo:

[]# mkfs.ext4 /dev/sdb1


mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: hecho
Etiqueta del sistema de ficheros=
OS type: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261883 blocks
13094 blocks (5.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=268435456
8 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376

Allocating group tables: hecho


Escribiendo las tablas de nodos-i: hecho
Creating journal (4096 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

NOTA: ¿mkfs, mke2fs, mkfs.extX ? ¿Por que tantos comandos similares?

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 23
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

mkfs es solo un "intermediario" para el resto de binarios "mkfs.XXX". Se puede usar


especifcando el tipo de FS con -t FileSystem y parece que existe sobre todo por temas
de compatibilidad.
mkfs.extX son "intermediarios" para mke2fs que es el comando usado para los
sistemas de ficheros ext.
Creo que lo más práctico es usar siempre los comandos mkfs.xxx.

Otro ejemplo creando un sistemas de ficheros xfs . El parámetro -f (force) existente en


todas las utilidades de particionado es para forzar la eliminación del sistema de ficheros
actual de la partición.

[]# mkfs.xfs -f /dev/sdb1


meta-data=/dev/sdb1 isize=256 agcount=4, agsize=65471 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=261883, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

No hay mucho más sobre la creación de sistemas de ficheros salvo repasar parámetros
habituales de estas utilidades que son un móntón de ellos realmente pero que no es
habitual su uso y sobre todo no deben ser objeto de este tema:

-f fuerza la creación del Sistema de ficheros. Sobreescribe el actual.


-L etiqueta Asigna una etiqueta al FS

Ejemplo de creación de Sistema de ficheros xfs .

[]# mkfs.xfs /dev/sdb1


meta-data=/dev/sdb1 isize=256 agcount=4, agsize=131008 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=524032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

Montar y desmontar sistemas de ficheros


estándar mediante comandos.

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 24
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Para montar desmontar sistemas de ficehros usarmos mount / umount .


La sintaxis general básica será la siguiente:

mount -t Tipo_sistema_ficheros -o Opciones <ORIGEN(Particion)> <DESTINO(directorio_ubicación)>

El Sistema de ficheros a montar especificado con -t no es olbigatorio ya que si no se


específica será capar de determinarlo automáticamente y montarlo.
En cuanto a las opciones más habituales -o suelen ser:

async Permite operaciones E/S asíncronas en el sistema de ficheros.


auto / noauto Permite o no que el sistema de ficheros se monte automaticamente con
mount -a .

exec / noexec Permite o no la ejecución de ficheros binarios en el sistema de ficheros.


loop Monta una imagen como un dispositivo loop (hace un fichero p.e. iso accesible
como un disco)
user / nouser Permite o no a un usuario "ordinario" montar / desmontar el Sistema de
ficheros,
ro / rw Monta el sistema de ficehros en modo lectura (read only) o modo lectura y
escritura (read write)
remount Remonta el sistema de fichero si ya está montado. Se usa mucho para pasar
de ro a rw .
defaults Un alias para las opciones: async,auto,dev,exec,nouser,rw,suid.

Algunas de estas opciones no tienen mucho sentido para el montaje manual de sistemas de
ficheros. Por defecto usará los parámetros de defaults si no especificamos otros.

Ejemplo montar sistema de ficheros XFS creado previamente.

mkdir /mnt/midisco
mount /dev/sdb1 /mnt/midisco

Vemos que no especificamos el tipo de sistema de fichero y lo monta igualmente porque lo


detecta automáticamente.

Vemos el sistemas de ficheros montad:

[]# mount | grep /dev/sdb1


/dev/sdb1 on /mnt/midisco type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[]# df -h | grep /dev/sdb1


/dev/sdb1 2,0G 33M 2,0G 2% /mnt/midisco

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 25
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Mediante lsblk podemos ver con una presentación muy cómoda los discos, particiones y
puntos de montaje.

[]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19,5G 0 part
├─centos-swap 253:0 0 1G 0 lvm [SWAP]
└─centos-root 253:1 0 18,5G 0 lvm /
sdb 8:16 0 2G 0 disk
└─sdb1 8:17 0 2G 0 part /mnt/midisco
sr0 11:0 1 1024M 0 rom

Para ver todos los sistemas de ficheros actualmente montados usamos mount a secas. En
Centos7 / REHL7 nos saldrán un montón de ellos que nos pueden confundir, resumimos:

[root@centos7 ~]# mount


sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=236380k,nr_inodes=59095,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
...
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=49320k,mode=700)

Algunos ejemplos útiles de montaje de dispositivos.

Pendrive USB -> mount -t vfat /dev/sdc1 /media/flashdisk


Imagen (fichero) ISO -> mount -o ro,loop Centos7.iso /media/cdrom

En últimas ditribuciones de linux lo normal ya será que incluso no sea necesario especificar
los parámetros y detecte automaticamente lo que tiene que hacer.

Para desmontar un sistema de ficheros usamos umount .


Podemos desmontar un sistema de ficheros tanto aludiendo al dispositivo como al punto de
montaje. Siguiendo con el ejemplo previo ambas opciones valdrían:

umount /dev/sdb1
umount /mnt/midisco

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 26
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Si nos diera un error por estar ocupado lo primero será salirnos del directorio :-D, lo
segundo si no es eso será echar un ojo a ver que ficheros hay en uso en el punto de
montaje para intentar tener más datos de quien / que lo está usando con fuser -m
directory , p.e.:

fuser -m /mnt/midisco

Montar y desmontar sistemas de ficheros de


forma automática (en el inicio del sistema).
Si queremos montar sistemas de ficheros en el inicio del sistema los añadiremos al fichero
/etc/fstab . Ejemplo de fstab ordenadito:

/dev/mapper/centos-root / xfs defaults 1 1


UUID=777c6682-...44479 /boot xfs defaults 1 2
/dev/mapper/centos-swap swap swap defaults 0 0

El formato es sencillo, en orden:

El dispositivo a montar. Bien por nombre de udev (mapper), LABEL, o por identificador
único UUID (podemos usar blkid para localizar el UUID de los discos). /boot lo
encontramos habitualmene montado por UUID.
El punto de montaje
El sistema de archivos del dispositivo.
Las opciones de montaje (defaults = async,auto,dev,exec,nouser,rw,suid). Lás básicas
las hemos visto previamente.
dump - Usado por la utilidad dump para saber si debe hacer backup de este sistema de
fichersos (0 = no, 1 = si). No se suele usar dumpo actualmente.
pass - Usado por fsck al inicio para saber el orden de revisión de esta partición en
busca de errores al inicio (0 = no se revisa, 1 = prioritario, 2 = menos prioritario)

El formato del fichero /etc/fstab es algo muy delicado dado que un pequeño error de sintaxis
en este no solo puede suponer que no se monte un sistema de ficheros concreto si no que
por error de lectura en el fichero no se monte nada en el inicio. Por eso debemos extremar
la precaución al añadir entradas. Lo mejor es probar cada nueva entrada que añadamos
con mount -a que leerá el fichero /etc/fstab y montará todas las particiones que aún no
estén montadas Si funciona funcionará correctamente al iniciar. én montadas.

Montariamos nuestro sistema de ficheros de ejemplo en la forma:

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 27
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Buscariamos primero el UUID de nuestra partición con la utilidad blkid que nos muestra el
de todos los "discos". Podriamos usar el "dev" pero no es aconsejable ya que este podría
llegar a cambiar. Vemos que el resto de discos tienen una ruta en /dev/mapper
proporcionada por udev ya que son particiones LVM (que no parece asunto de este
examen, si de LFCS).

[]# blkid
/dev/sdb1: UUID="1d1b6227-5024-414b-beea-e42b70071578" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUU
/dev/sda1: UUID="dbbcd8cb-30e1-4d7c-b425-43ffab4e018a" TYPE="xfs"
/dev/sda2: UUID="TyzPPb-WNya-cRao-JdnB-hs6T-VWie-cdmMtj" TYPE="LVM2_member"
/dev/mapper/centos-swap: UUID="e542d710-558b-410c-84ad-58c21f30c31a" TYPE="swap"
/dev/mapper/centos-root: UUID="9b40fb10-17f1-484b-9e58-271081677c5d" TYPE="xfs"

Añadiriamos una línea a /etc/fstab

UUID=1d1b6227-5024-414b-beea-e42b70071578 /mnt/midisco xfs defaults 1 2

Verificamos que no está. Lo montamos con mount -av y volvemos a verificar. Añadimos el
parámetro -v / verbose para tener más datos ya que si no solo nos dará información en
caso de error.

[]# vim /etc/fstab


[]# mount | grep "disco"
[]# mount -av
/ : ignored
/boot : already mounted
swap : ignored
mount:
/mnt/midisco : successfully mounted

[]# mount | grep "disco"


/dev/sdb1 on /mnt/midisco type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

Recursos
Redhat 7 doc - Using de mount command..

Ayuda durante el examen.


Páginas de man para las utilidades básicas: fdisk, gdisk, mkfs.xxx, mount, umount,
...

Páginas de man para los archivos de configuración: fstab

Network filesystems & file services. Crear, montar y desmontar Sistemas de ficheros
estándar de Linux. 28
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services.


Proveer / configurar discos compartidos
de red mediante NFS.

Introducción.
Centos 7 / RHEL 7 usa una combinación de procesos y soporte a nivel de kernel para
proporcionar ficheros compartidos mediante NFS. Todas las versiones NFS dependen de
RPC (Remote Procedure Calls) entre cliente y servidor. En Centos7 esta comunicación la
gestiona el servicio rpcbind. Los servicios usados por NFS son:

nfs-server - Servidor de NFS.


nfs-lock - Inicia los procesos RPC apropiados para permitir a los clientes NFS bloquear
ficheros en el servidor.
rpcbind - Gestiona reserva de puertos para servicios RPC. No se usa con NFSv4.

Instalación
En este capítulo veremos como instalar y configurar un servidor NFS. Entiendo que la
configuración cliente forma parte más de otros temas de esta sección.

yum install nfs-utils

Echamos un ojo siempre primero al estado inicial de los servicios, si están activados para
su inicio automático y si están o no iniciados.

[]# systemctl is-enabled rpcbind nfs-server nfs-lock


disabled
static
static

[]# systemctl is-active rpcbind nfs-server nfs-lock


inactive
inactive
unknown

Activamos e iniciamos rpcbind y el servidor pincipal nfs-server

Network filesystems & file services. Proveer / configurar discos compartidos de red
mediante NFS. 29
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

systemctl enable nfs-server


systemctl start nfs-server

OJO: No activamos ni iniciamos rpcbind ni nfs-lock porque no es necesario ya que lo


debe iniciar nfs-server (-> 'indirect')

ATENCIÓN.

Si no vamos a usar nfs v3 no necesitariamos el demonio rpcbind pero en la configuración


por defecto, si está deshabilitado el servicio rpcbind , obtendremos un error en el inicio del
servicio nfs-server . Ello es debido a que por defecto está habilitado en la configuración del
servidor NFS la versión nfs 3. Podemos ver las versiones habilitadas.

[]# cat /proc/fs/nfsd/versions


-2 +3 +4 +4.1 -4.2

Para deshabilitar nfs v3 lo hacemos en el fichero de configuración /run/sysconfig/nfs-utils


cambiando los parametros que se le pasan al demonio (le añadimos a la línea
RPCNFSDARGS que no inicie NFS versión 3 con "-N 3". Respetamos las opciones que ya
tenga). Quedaría en nuestro caso:

RPCNFSDARGS=" 8 -N 3"

Ahora si podriamos iniciar el servicio nfs-server sin tener iniciado rpcbind y verificar

[]# systemctl start nfs-server


[]# cat /proc/fs/nfsd/versions
-2 -3 +4 +4.1 -4.2

Lo normal sería pensar que el fichero de configuración es el ubicado en "/etc/sysconfig/nfs".


Despues de darle muchas vueltas al tema de desactivar nfs v3 en ese fichero sin éxito
examiné la configuración del fichero que ejecuta el servicio (lo mejor es hacer un systemctl
disable nfs-server ya que nos dice a que fichero enlaza). En este se ve que el fichero de

configuración que lee es /run/sysconfig/nfs-utils.

Verificamos el estado de nuestros servicios

Network filesystems & file services. Proveer / configurar discos compartidos de red
mediante NFS. 30
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# systemctl is-enabled rpcbind nfs-server nfs-lock


indirect
enabled
static
[]# systemctl is-active rpcbind nfs-server nfs-lock
active
active
active

Firewall ????

Debemos habilitar (y verificar) los servicios NFS en el firewall

[]# firewall-cmd --list-services


dhcpv6-client ssh

[]# firewall-cmd --permanent --zone=public --add-service nfs


[]# firewall-cmd --permanent --zone public --add-service mountd
[]# firewall-cmd --permanent --zone public --add-service rpc-bind
success
[]# firewall-cmd --reload
success

[]# firewall-cmd --list-services


dhcpv6-client mountd nfs rpc-bind ssh

Creamos un directorio para compartir p.e.

mkdir /var/mi_share
chmod 777 /var/mi_share/

Configuramos en /etc/exports el servidor NFS para que "exporte" dicho directorio a mi red
192.168.122.162/24:

/var/mi_share 192.168.122.0/24(rw,sync,no_root_squash,no_all_squash)

Donde:

/var/mi_share – Dirrectorio a compartir


192.168.122.0/24 – Red, ip, nombre de equipo,... a la que compartir.
rw – Lectura y escritura (read/write)
sync – Syncronizar el directorio compartido.
no_root_squash – Activar el privilegio de root
no_all_squash - Activar la autoridad de usuario.

Network filesystems & file services. Proveer / configurar discos compartidos de red
mediante NFS. 31
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Reiniciamos el servidor (un reload sería suficiente en la mayoría de cambios de


configuración). Tambien podemos exportar un nuevo directorio con exporfs -r

systemctl restart nfs-server

Verificamos primero en el propio servidor que estamos exportando correctamente el/los


recursos con showmount o exportfs

[]# showmount -e localhost


Export list for localhost:
/var/mi_share 192.168.122.0/24

[]# exportfs -v
/var/mi_share 192.168.122.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_roo

De igual forma debemos ver desde el cliente los shares.

NOTAS
Ver más opciones de montaje.
selinux ???? Funciona si monto en otra ruta ???

Referencias
https://www.howtoforge.com/nfs-server-and-client-on-centos-7
http://www.unixmen.com/setting-nfs-server-client-centos-7/

https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/ch-nfs.html#s2-nfs-
how-daemons http://www.certdepot.net/rhel7-provide-nfs-network-shares-specific-clients/

Network filesystems & file services. Proveer / configurar discos compartidos de red
mediante NFS. 32
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services.

Transferir ficheros de forma segura por la


red.

Introducción.
Actualmente las herramientas más usadas para transferir ficheros de forma segura por la
red (excluyendo montaje de sistemas de ficheros remotos) son scp y sftp. Adicionalmente
podemos usar también para tareas concretas rsync especificándole que use ssh.

Utilidad scp
Scp se puede usar para tranferir ficheros entre servidores sobre una conexión segura y
encriptada. La sintaxis es sencilla:

scp origen destino

Origen o destino será una rutal local o bien otro servidor que tendremos que especificarlo
en el modo clásico de ruta a otro sistema.

usuario@servidor:/ruta/fichero

Algunos ejemplos:

Copiar desde un filesytem local a un servidor remoto:

scp fichero.doc usuario1@srv-apache1.local.net:/home/usuario1/docs/fichero.doc

Copiar desde un servidor remotor sería similar

scp usuario1@srv-apache1.local.net:/home/usuario1/docs/fichero.doc fichero.doc

Algunos parámetos adicionales para el comando scp

Network filesystems & file services. Transferir ficheros de forma segura por la red. 33
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

-r El más útil. Copiar recursivamente. Para transferencia de directorios con todo su


contenido.
-v Si queremos ver el debug de todo lo que va haciendo al realizar una transferencia
-C Realiza compresión de los archivos previamente a la tranferencia. Reduce el uso de
red pero aumenta el uso de los recuros de los servidores para comprimir /
descomprimir.
-I Limita el ancho de banda a usar en la transferencia. Útil si no queremos que la citada
transferencia coma mucho ancho de banda.

Utilidad sftp
La utilidad sftp se puede usar para abrir una sesión segura e interactiva con un servidor
FTP. Si puedes conectarte con un sistema usando ssh puedes conectarte por sftp ya que
este está basado en ssh (forma parte de hecho del mismo grupo / paquete de utilidades:
openssh-clients). En Centos 7 está configurado por defecto en /etc/ssh/sshd_config
mediante la línea:

Subsystem sftp /usr/libexec/openssh/sftp-server

La sintaxis para realizar una conexión contra un servidor remoto sería:

sftp usuario@servidor

Una vez conectados el juego de comandos a usar es el clásico de ftp: help, ls, cd directorio,
mkdir directorio, rmdir directorio y put y get para transferir ficheros, exit para cerrar la
conexión…

Nos conectmaos con el servidor

sftp usuario@sistema_remoto

El comando más útil que debemos conocer es help , que nos mostrará todos los
comandos disponibles.

sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
....

Network filesystems & file services. Transferir ficheros de forma segura por la red. 34
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Algunos ejemplo de los comandos más habituales para ver en que directorio estamos y
listar ficheros. IMPORTANTE: para referirnos a nuestro equipo local basta con
anteponer una “l” de local al comando como vemos:

sftp> pwd
Remote working directory: /root

sftp> ls
anaconda-ks.cfg scripts

sftp> lpwd
Local working directory: /home/javier

sftp> lls
all.csv hosts.csv proyectos
Biblioteca de calibre Imágenes Público

Cambiar de directorio, crear, borrar será con los comandos habituales

sftp> mkdir test01


sftp> cd test01
sftp> cd ..
sftp> pwd
Remote working directory: /root

sftp> rm test01
Removing /root/test01

sftp> rmdir test01


sftp>

Para copiar ficheros remotos a local usaremos el comando “get”.

sftp> get yum.conf yum.conf.bcklocal


Fetching /etc/yum.conf to yum.conf.bcklocal
/etc/yum.conf 100% 970 1.0KB/s 00:00

Podemos copiar ficheros o directorios recursivamente. Si no especificamos el destino local


nos creará un directorio en el directorio actual.

sftp> get -r yum.repos.d yum.repos.d.bcklocal


Fetching /etc/yum.repos.d/ to yum.repos.d.bcklocal
Retrieving /etc/yum.repos.d
/etc/yum.repos.d/CentOS-Base.repo 100% 1664 1.6KB/s 00:00
/etc/yum.repos.d/CentOS-Sources.repo 100% 1331 1.3KB/s 00:00
/etc/yum.repos.d/CentOS-Vault.repo 100% 1002 1.0KB/s 00:00

Network filesystems & file services. Transferir ficheros de forma segura por la red. 35
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Para copia de local a remoto usaremos el comando put que trabaja exactamente igual
que get .

sftp> lpwd
Local working directory: /home/javier/Documentos
sftp> lls
ebooks
web2py_manual_5th.pdf
sftp> put web2py_manual_5th.pdf
Uploading web2py_manual_5th.pdf to /root/web2py_manual_5th.pdf
web2py_manual_5th.pdf 100% 6582KB 6.4MB/s 00:01

Podemos ejecutar un comando en una shell local sin salirnos de sftp con “!”

sftp> python -V
Invalid command.
sftp> !python -V
Python 2.7.9

Para salir de sftp podemos usar exit o bye

Utilidad rsync
Rsync no parece que sea una cuestión de examen, se puede obviar.

Rsync tiene una sintaxis muy similar a scp pero con un amplio abanico de parámetros. La
especialidad de rsync es su habilidad de analizar los ficheros y copiar solo los que tienen
cambios entre origen y destino. Esto puede suponer reducir mucho tiempo y uso de la red
en copias habituales recursivas entre sistemas. Basicamente el interés aquí es saber que
puede usarse con ssh para transferir archivos de forma segura. Se instala como siempre:

yum install rsync

La sintaxis sería:

rsync -parametros origen destino

Ejemplo:

rsync -avz -e ssh /directorio/fichero usuario@servidor:/directorio/fichero

Los parámetos más habituales suelen ser:

Network filesystems & file services. Transferir ficheros de forma segura por la red. 36
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

-e ssh Obligatorio si queremos tranferir ficheros de forma segura.


-a Modo archivo. Preserva permisos de ficheros y no sigue enlaces simbolicos (no
copia destino de estos)
-v Verbose
-z Activar compresión (previo a la transferencia)

En la ayuda del comando vienen muchos ejemplos pero estos son los que se usan
habitualmente.

X11 Forwarding.
X11 Forwarding no parece que sea una cuestión de examen, se puede obviar.

Podemos también necesitar ejecutar aplicaciones X en un servidor de forma segura. Para


ello podemos abrir una sesión X11 sobre una conexión SSH. Para ello primero nos
conectamos por SSH a la máquina desde la que queremos ejecutar la aplicación X.

ssh -Y usuario@servidor

Una vez autentificados ejecutamos la aplicación X en nuestro servidor X.

Firefox &

Ayuda local.
Las páginas de man de los comandos nos ofrecerán la ayuda necesaria.

man scp - Ayuda de comando scp que es muy sencillo.


man sftp - Buena ayuda de uso de parámetros y comandos interactivos. Una vez
dentro de sftp podemos invocar la ayuda con help y es bastante clarificadora.
man rsync - Muy buena ayuda con muchos ejemplos útiles.

Network filesystems & file services. Transferir ficheros de forma segura por la red. 37
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network filesystems & file services.

Actualizar paquetes desde la red, un


repositorio o el sistema de archivos local.

NOTAS SOLAMENTE

Configuración de repositorios para yum


La configuración de yum se realiza a través del fichero /etc/yum.conf
No suele ser normal que tengamos que tocar la configuración de este fichero salvo la
configuración de los repositorios que se realiza en ficheros individuales en un directorio tal
como nos indica al final de yum.conf

# PUT YOUR REPOS HERE OR IN separate files named file.repo


# in /etc/yum.repos.d

Todo esto viene para que te acuerdes de que para obtener la ayuda de man para configurar
estos ficheros deberás buscarla con man yum.conf . Puede serte muy importante en el
examen.

Un vistazo a una instalación de Centos 7 nos mostrará una serie de fichero de configuración
de repositorios

[~]# ll -lh /etc/yum.repos.d/


1,7K dic 9 09:59 CentOS-Base.repo
1,3K dic 9 09:59 CentOS-CR.repo
649 dic 9 09:59 CentOS-Debuginfo.repo
290 dic 9 09:59 CentOS-fasttrack.repo
630 dic 9 09:59 CentOS-Media.repo
1,3K dic 9 09:59 CentOS-Sources.repo
2,0K dic 9 09:59 CentOS-Vault.repo

Cada uno de ellos puede incluir uno o más repositorios. Deben acabar en .repo si no el
sistemas los obvia (ya sabemos una forma de desactivarlos). Si echamos un ojo a uno. p.e.
"Centos-Base.repo" nos encontramos con varias secciones que definen repositorios. Por
ejemplo:

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 38
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Una breve descripción de las opciones más importantes.

[base] El identificador para esta sección de repositorio


name El nombre del repositorio (tal como lo mostrará yum
baseurl Excluyente con la siguiente. Dirección "directa" del repositorio. Puede ser http,
https, ftp, fs local,...
mirrorlist Apunta a un archivo que contiene una lista de baseurls. Al usar un archivo
con varias nos aseguramos que si una falla puede acceder a otras.
gpgcheck (0/1) Si va a chequear la clave gpg del repositorio (para verificar que es el
"auténtico")
gpgkey La clave de seguridad del repositorio que normalmente tendremos en local de
la primera vez que se usa el repositorio.
enable (0/1) En este caso no aparece pero se usa mucho para activar o desactivar este
repositorio. Por defecto es activado (otra forma de desactivar un repositorio).

(Solo curiosidad). Te preguntarás de donde o#.&%s saca el valor de las variables


"$releasever", $basearch, $infra, ... Pues el fichero yum.conf tiene una variable que apunta
a un paquete "distroverpkg=centos-release". De dicho paquete centos-release (sería redhat-
release para un RHEL) se obtienen las variables

[]# rpm -qa | grep centos-release


centos-release-7-2.1511.el7.centos.2.10.x86_64

O bien con yum info

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 39
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

[]# yum info centos-release


Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.heanet.ie
* extras: ftp.heanet.ie
* updates: ftp.heanet.ie
Installed Packages
Name : centos-release
Arch : x86_64
Version : 7
Release : 2.1511.el7.centos.2.10
Size : 35 k
Repo : installed
From repo : base
Summary : CentOS Linux release file
License : GPLv2
Description : CentOS Linux release files

$releasever = 7.2.1511
$basearch = x86_64
$infra = Este parece que no se usa de momento.

En este caso caso nuestro "mirrorlist" sería

mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=

Si listamos los repositorios con yum nos mostrará los configurados entre ellos el que
acabamos de ver:

[]# yum repolist


Complementos cargados:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.heanet.ie
* extras: ftp.heanet.ie
* updates: ftp.heanet.ie

id del repositorio nombre del repositorio estado


base/7/x86_64 CentOS-7 - Base 9.007
extras/7/x86_64 CentOS-7 - Extras 191
updates/7/x86_64 CentOS-7 - Updates 369
repolist: 9.567

Esto es lo mínimo a saber para moverte por la configuración de repositorios. Posteriormente


modificaremos alguno para apuntar a una ruta de un Apache "nuestro".

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 40
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Configuración de Apache para servir


directorios navegables.
Esta titulo tan raro de esta sección es ciertamente aclarativo. Para poder servidor un
repositorio desde un servidor necesitamos:

Un servidor http con una configuración adecuada. Apache en este caso pero podría ser
otro
Directorios con los paquetes en el formato adecuado y una BBDD asociada.
La utilidad para crear / actualizar la BBDD del repositorio, createrepo .

Inicialmente vamos a preparar un Apache que nos sirva un directorio "browseable"

Instalación de Apache y preparación de la ruta.


Instalamos Apache y un navegador local para hacer pruebas. Activamos e iniciamos
Apache (el puerto en el FW lo habilita ya el instalador).

yum install httpd lynx


systemctl enable httpd
systemctl start httpd

Creamos un directorio en la ruta por defecto que usa Apache para hacerlo más sencillo. La
estructura del directorio será conforme a Version / Release para poder crear más
repositorios posteriormente con la misma sintaxis.

mkdir -p /var/www/html/repos/centos/7/2/

Normalmente no será necesario hacer nada más ya que en la configuración por defecto de
Apache en Centos 7 dejará navegar por dichas rutas -> http://host/repos/... En el examen no
tendremos un navegador así que para probarlo usamos lynx que digo yo para algo lo hemos
instalado.

lynx http://localhost/repos

Esto nos informará del directorio que estamos usando y nos dejará movernos por estos. Si
da algún tipo de error algo está mal.

Obtención de los paquetes.

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 41
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Para obtener los paquetes tenemos varias opciones. Un par de ellas que combinadas son
las mejores probablemente. Copiar los paquetes de una ISO y/o sincronizarlos con un
repositorio.

Copia de paquetes de la ISO de Centos en la versión correspondiente.

Esto es tan sencillo como bajar la ISO adecuada de los repositorios correspondientes,
montarla y copiar los ficheros.

mkdir -p /var/www/html/repos/centos/7.2.1511/os/x86_64/
mount -t iso9660 CentOS-7-x86_64-DVD-1511.iso /media/
cp -R /media/* /var/www/html/repos/centos/7.2.1511/os/x86_64/

¿Por que hemos creado directorios adicionales? Para no limitarlos. Si navegamos por los
mirror de Centos vemos que el equivalente a la ISO base cuando bajas un DVD es ese
mismo directorio "../os/x86_64". Podemos tener solo este repositorio pero si queremos crear
el resto de repositorios adicionales que no incluye el DVD base como extras, updates,
cloud,... también podremos hacerlo. Podríamos no haberlo hecho y servir el "base"
directamente en "../7.2.1511/". Sería correcto pero nos limitaríamos.

Podemos irnos a la sección "Pruebas de repositorio local" para ir probándolo.

Sincronización desde un repositorio

PENDIENTE VERIFICAR No funciona desde mv externa...


http://www.digitesters.com/create-a-local-centos-mirror-and-use-with-nfs/

Si buscamos en el internete Mirrors de Centos veremos que en el listado aparecen muchos


que además de servir por http/https y/ ftp tambien nos facilitan una "dirección" rsync.
Usaremos esa dirección para soncronizar con nuestro repositorio.

rsync -avzn rsync://mirror.in2p3.fr/ftp/linux/CentOS/7.2.1511/os/x86_64/ /var/www/html/repos/centos/7

La -n es para que solo informe de los ficheros que cambian

Podemos verificarlo previamente y posteriormente du -sch


/var/www/html/repos/centos/7/2/os/x86_64/ 4.2G /var/www/html/repos/centos/7/2/os/x86_64/
4.2G total

Pruebas de repositorio local

Para probar nuestro repositorio en red local lo mejor es desactivar el resto. Lo más rápido
es renombrar los ficheros (.repo.NO p.e.) o los moverlos a un directorio de Backup.
Creamos un fichero p.e. CentOS-Base-local.repo con una configuración nuestra que apunte

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 42
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

a nuestro servidor de Apache.

[base_local]
name=CentOS-7.2 Base -LOCAL-
baseurl=http://localhost/repos/centos/7.2.1511/os/x86_64/
gpgcheck=0

Sin complicaciones como variables y sin gpg key (podemos apuntar esta igual a local como
estaba en los otros ficheros repo). Lo probamos ahora de forma sencilla con yum repolist

[]# yum repolist


Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base_local CentOS-7.2 Base -LOCAL- 3,723
repolist: 3,723

Lo importante es que nos liste el nuestro repositorio y SOBRE TODO el número de


paquetes. Si no conecta a nuestro repositorio nos pondrá 0 paquetes. Podemos probar a
instalar un paquete que no tengamos, p.e.:

yum install git

Veremos que el nos resuelve dependencias y nos informa que el repositorio de instalación
es el nuestro "base_local". Si lo instalamos y hacemos un "yum info git" nos informará que
está instalado desde nuestro repositorio.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx APUNTES REVISAR y BORRAR


XXXXXXXXXXXXXXX

Creamos fichero de configuración en /var/www/html/ (a la aútra de repos): index.html Y


espscificamos en este en formato texto la ubicación del repo. Es algo solo informativo y
para que funcione un lynx http://localhost

Crear repositorios locales


Para crear repositorios se usar createrepo

yum install createrepo

Ejemplo (no se hace esto???) createrepo /var/www/html/repos/centos/6/7/

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 43
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Si echamos un ojo a la página de mirror de centos


"https://www.centos.org/download/mirrors/" podemos ver que muchos repositorios incluyen
además de una dirección http/ftp otra con rsync. Lo que vamos a hacer es hacer una
sincronización en un directorio local:

rsync -avz rsync://mirror.xxxx.zzzz.com/centos/6.7/os/x86_64/


/var/www/html/repos/centos/6/7/

Esto realmente e genial. Se puede empezar probablemente copiando la ISO en dicho


directorio. Realmente esto no creo entre en el examen pero...

Seguimos, creando el repositorio (actualizandolo mejo)

createrepo --update /var/www/html/repos/centos/6/7/

Esto es necesario para actualizar la BBDD de paquetes que incluiye

Ayudas.
man yum.conf y buscas por "name=" para ir directo a la sección de definiciones de repos.

Network filesystems & file services. Actualizar paquetes desde la red, un repositorio o el
sistema de archivos local. 44
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Instalación y configuración básica de Apache.


Primero actualizaremos preferentemente el sistema y luego instalamos Apache y el manual
que nos podrá ser de mucha utilidad durante el examen.

yum -y update
yum -y install httpd httpd-manual

Habilitar el acceso a Apache en el Firewall (puertos 80 y 443)

firewall-cmd --permanent --zone=public --add-service=http


firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Verificamos que esté abierto (aparecen listados en servicios)

[]# firewall-cmd --permanent --list-all


public (default)
interfaces:
sources:
services: dhcpv6-client http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Verificamos que puertos tiene abiertos el sistema. Olvídate ya de netstat (cuanto antes
mejor, aunque puedes instalarlo). El comando a usar y aprender ya es “ss”. Para ver los
puertos TCP abiertos con número de puerto p.e. “ss -tan”

[]# ss -tan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 0 192.168.122.215:22 192.168.122.1:37731
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*

Vemos que no están abiertos los puertos de Apache porque aún no está iniciado este.

Configurar Apache para que arranque en el inicio del sistema e iniciarlo.

HTTP Services. Instalar y configurar un servidor web Apache 45


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

systemctl enable httpd


systemctl start httpd

Verificamos que inició correctamente

systemctl status httpd

httpd.service - The Apache HTTP Server


Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since sáb 2015-08-22 18:39:07 CEST; 3min 20s ago
Main PID: 2788 (httpd)
Status: "Total requests: 2; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─2788 /usr/sbin/httpd -DFOREGROUND
├─2789 /usr/sbin/httpd -DFOREGROUND
├─2790 /usr/sbin/httpd -DFOREGROUND
├─2791 /usr/sbin/httpd -DFOREGROUND
├─2792 /usr/sbin/httpd -DFOREGROUND
├─2793 /usr/sbin/httpd -DFOREGROUND
└─2808 /usr/sbin/httpd -DFOREGROUND

Si miramos ahora los puertos abiertos p.e. con “ss -tan” veremos que está abierto ya el
puerto 80 (aun no tenemos configurado SSL para HTTPS)

Podemos desde otra máquina a abrir con la IP / nombre de nuestro equipo la página de
Apache y nos debe aparecer la página de Testing de este. Es interesante probar también
que funcione el manual en http://ip_servidor/manual. Verificar que podemos conectar al
menos localmente y acceder al manual: lynx http://localhost/manual

Parámetros de configuración importantes. Configuración básica de sites en Apache

Probarlo con lynx (localhost) y ver puertos abiertos (ss)

HTTP Services. Instalar y configurar un servidor web Apache 46


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Configurar un cliente para usar


automáticamente un servidor proxy.
Navegadores gráficos.
Todos los navegadores tienen en sus opciones de configuración la posibilidad de configurar
el acceso a Internet a través de un servidor proxy. En nuestro caso para hacer pruebas con
Squid podemos usar un navegador con el proxy configurado pero para el examen
previsiblemente no nos será de mucha utilidad ya que tendremos solo la línea de comandos
de Linux (pienso…) por lo que deberiamos centrarnos en conocer mejor las opciones de
shell y algunas utilidades concretas. En cualquier caso vemos un ejemplo de configuración
de proxy con con Firefox (En Chrome e IE es muy similar).

Firefox: Configuracion → Opciones → Avanzado → Red → Conexión (Configurar como


Firefox se conecta a Internet

HTTP Services. Configurar un cliente para usar automáticamente un servidor proxy. 47


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

La mayoría de navegadores nos dejarán configurar el proxy para “todo” o separar algunas
configuraciones concretas (ssl, ftp, …) y excluir direcciones para su acceso directo sin que
intente acceder a estas a través del proxy.. En general todos nos dejarán tambien maracar
autorderección y/o una URL para una configuración automática a través de protocolos
específicos para tal efecto.

Linux shell.
En Linux podemos configurar el proxy del sistema mediante variables de entorno. La
mayoría de aplicaciones y utilidades tendrán en cuenta dichas variables si están presentes
aunque muchas de ellas dejan configurarlo como opciones en sus ficheros de configuración
y/o parámetros.

Uso de proxy en la shell

HTTP Services. Configurar un cliente para usar automáticamente un servidor proxy. 48


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Mediante las siguientes variables podemos establecer un proxy para nuestro shell que
usarán la mayoría de las aplicaciones. Ejemplos:

http_proxy="http://myproxy:3128"
https_proxy="https://myproxy:3128"
ftp_proxy="ftp://myproxy:3128"
no_proxy=".mylan.local,.domain1.com,host1,host2"

Si lo queremos fijar para un usuario podremos dichas líneas en su ~/.bash_profile o


~/.bashrc. Si lo queremos fijar para todos los usuarios podemos ponerlo en /etc/bashrc (o
/etc/environment o aún mejor en un fichero que incluya p.e. /etc/profile.d/proxy.sh )
Debemos acordarnos de hacer el export de cada variable en la forma:

export http_proxy="http://myproxy:3128"

Configurar YUM para usar un proxy

En el caso de Redhat / Centos que se usa Yum como gestor de paquetes este usará
también el proxy del sistema si está establecido en la variable http_proxy, pero si queremos
configurar un proxy específico para YUM podemos hacerlo en su archivo de configuración
/etc/yum.conf mediante la línea:

proxy=http://webserv.domain.com:8080

Ejecutamos luego

yum clean all

Uso de wget con un proxy


wget usará el proxy del sistema pero si queremos que use autenticación añadiremos en el
fichero /etc/wgetrc file:

http_proxy=http://proxy.yourdomain.com:8080/
proxy_user=user
proxy_password=password

Existen más utilidades que pueden incluir la configuración de proxy en su fichero de


configuración pero la mayoría de ellas detectarán el proxy del sistema si está establecido.

HTTP Services. Configurar un cliente para usar automáticamente un servidor proxy. 49


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

HTTP Services. Restringir acceso a una


página

Restringir acceso por dirección / red IP origen.


En el archivo principal de confguración de Apache, en Centos es /etc/httpd/conf/httpd.conf

Mejor primero saber configurar virtual Hosts

HTTP Services. Restringir acceso a una página web con Apache. 50


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network security.

Configurar acceso remoto usando pares


de claves público/privada basado en SSH.
Para la conexión a servidores SSH con certificados se usa criptografía asimétrica
(criptografía de clave pública o de dos claves). Dicho método consistente en el uso de una
clave pública conocida y una privada confidencial nos permitirá usar encriptación de forma
sencilla y segura. Conviene que tengamos claro como funciona ya que nos ayudará a no
dudar en lo que estamos haciendo.

Servidor SSH. Introducción.


En teoría no es asunto de examen el servidor SSH en si. De hecho lo normal es que no
toquemos ni su configuración a la hora de configurar el acceso remoto a este mediante
pares de claves. En cualquier caso no tiene mucha complicación. Repasaremos solo los
temas necesarios relacionados con el asunto que nos trae para el examen. El servidor SSH
es otro de los componentes que se instala incluso en una instalación mínima. El paquete
necesariuo ya instalado es openssh-server. Operaciones habituales con el servicio.
systemctl start/stop/reload/restart/enable/disable sshd.service

Ficheros de configuración.
Normalmente, tanto en Centos como en la mayoría de sistemas Linux con pocas
variaciones la configuración de SSH con certificados será similar en cuanto a ficheros y
ubicación. El fichero principal de configuración del servicio servidor ssh es
/etc/ssh/sshd_config. Algunos parámetros importantes de configuración en
“/etc/ssh/sshd_config” relacionados con acceso mediante pares de claves:
PasswordAuthentication yes/no - Nos permite deshabilitar el acceso al servidor SSH
mediantes password. Solo nos permitirá acceso mediante certificados.

Ficheros de configuración utilidades ssh. Desde el usuario que nos conectaremos a otros
sistemas con servidor SSH debemos conocer los siguientes ubicaciones / ficheros
importantes en el Home del usuario:

Network security. Configurar acceso remoto usando pares de claves público/privada basado
en SSH. 51
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Fichero Descripción

/etc/ssh/ssh_config ó Cliente SSH. Si existe el fichero concreto en el home


~/.ssh/config sobreescribe el de etc.
Servidor SSH. Almacena una lista de claves públicos para
servidores. Cuando nuestro cliente se conecta a un servidor
~/.ssh/authorized_keys
este le autentifica chequeando su clave pública firmada
almacenada en este fichero.
Cliente SSH. The RSA private key used by ssh for version 2
~/.ssh/id_rsa
of the SSH protocol.
Cliente SSH. The RSA public key used by ssh for version 2 of
~/.ssh/id_rsa.pub
the SSH protocol.
Cliente SSH. Cuando un cliente SSH se conecta por primera
vez a un servidor SSH este le proporciona una clave de Host
que se guarda en este fichero. En sucesivas conexiones la
~/.ssh/known_hosts
usará para verificar que el servidor al que se conecta es el
mismo. Las utilidades cliente nos alertarán habitualmente
ante incongruencias en de la clave de Host.

Más información en la documentación oficial de Redhat al respecto.

Utilidades ssh.
ssh-keygen – Se usa inicialmente para generar los certificados.
ssh-copy-id – Se usa para simplificar la copa de certificados públicos entre sistemas ya
que simplifica la tarea copiando el certificado en el sitio correcto sin que tengamos
necesidad de saber más.

Generación y uso de certificados (cliente)


La configuración de acceso SSH con claves publico – privadas es muy sencilla. La mayor
dificultad que nos podemos encontrar de cara al examen es tener claro el funcionamiento y
un par de comandos. Los pasos a seguir serán los siguientes: Generar los certificados.
Generaremos los certificados en el servidor mediante el comando ssh-keygen. ssh-keygen -
t rsa

Como vemos durante el proceso nos pregunta donde almacenar el certificado privado (y
luego almanca el público también en la misma ruta). También nos da la posibilidad de
introducir una “passphrase” que nos preguntará cada vez que usemos el certificado.
Podemos también no darle una passphrase para generar un certificado de uso directo.
Verificamos que los permisos son bastante restrictivos para el directorio y fichero con
certificado de clave privada.

Network security. Configurar acceso remoto usando pares de claves público/privada basado
en SSH. 52
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Es muy importante que solo el usuario concreto pueda ver y manipular el certificado de
clave privada.

Copiar el certificado público a otra máquina.


Ahora, si queremos acceder con nuestro usuario a otra máquina mediante certificado, esta
tendrá que disponer de nuestro certificado público en su almacén de accesos confiables.
Como hemos visto la utilidad ssh-copy-id nos puede facilitar la tarea. Le indicamos el
usuario y equipo remoto al que queremos copiar nuestro certificado.

ssh-copy-id root@192.168.110.135

OJO con el usuario, copiaremos la clave ssh para ese usuario exclusivamente.

XXXXXXXXXXXXXXXXXXXXXXXXXxx COPIA SUCESOS


XXXXXXXXXXXXXXXXXXXXXXXXXxx COPIA SUCESOS
XXXXXXXXXXXXXXXXXXXXXXXXXxx COPIA SUCESOS

¿Que ha pasado en este proceso? Básicamente se ha copiado al equipo y usuario remoto


en el fichero /root/.ssh/authorized_keys el certificado público de nuestro usuario root local
( /root/.ssh/id_rsa.pub ). Si existe el fichero es que ya tiene otros certificados por tanto le
añade otra línea adicional para el nuevo certificado. Además nos ha añadido a nuestro
fichero local /root/.ssh/known_hosts el key fingerprint del servidor remoto para identificarlo
en sucesiva conexiones como el mismo equipo. Ahora nos podremos ya conectar
directamente con un cliente ssh y usará de forma transparente los certificados.

Si le dimos una passphrase al certificado nos la pedirá Es importante conocer el proceso


para poder realizarlo manualmente cuando sea necesario. Básicamente lo más importante
es saber que podemos copiarle a mano el contenido de nuestro fichero de certificado de
clave pública en ~/.ssh/id_rsa.pub al fichero de certificados autorizados en el home del
usuario en el equipo remoto ~/.ssh/known_hosts . No es necesario que el usuario sea el
mismo. ¿Y la clave privada? Esta se queda siempre en local bien protegida y obviamente
no es para intercambiar.

REVISAR
ssh -l usuario SERVER ssh usuario@SERVER

Paso a paso Conectar por ssh y echar un ojo al knowhosts

Network security. Configurar acceso remoto usando pares de claves público/privada basado
en SSH. 53
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

¿Generar certificado con passphrse?

Referencias
https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-ssh-
configuration.html#s2-ssh-configuration-keypairs
https://linuxcode.wordpress.com/2009/08/08/autentificacion-mediante-claves-publicas-en-
ssh/
https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-ssh-
configuration.html#s2-ssh-configuration-keypairs
http://www.itzgeek.com/how-tos/linux/centos-how-tos/ssh-passwordless-login-centos-7-rhel-
7.html
http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

Network security. Configurar acceso remoto usando pares de claves público/privada basado
en SSH. 54
Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Network security. Configurar el firewall


con iptables / firewalld.
======================================================================
==

Introducción.
Si manejas habitualmente iptables y pensabas que sabias algo de configuración de
Firewalls en Redhat / Centos… se fastidió. Con Centos 7 cambian las utilidades de
configuración del Firewall y toca aprendérselas de nuevo. Firewalld sustituye a iptables (al
servicio). Sigue existiendo la posibilidad de instalar iptables mediante yum y desactivar
firewalld pero no se recomienda

Algunas novedades en la gestión del Firewall.


Firewalld sustituye al SERVICIO iptables (aunque “debajo” sigue estando iptables -
comando- y por supuesto Netfilter)
Ya no se usan las cadenas INPUT, OUTPUT y FORWARD si no que cambia el
concepto y ahora se usan Zonas.
Existen servicios predefinidos para evitar tener que trabajar con puertos (se pueden
definir nuevos servicios y si se desea también trabajar con puertos).
La configuración es dinámica. Los cambios que se hagan pueden aplicarse en
cualquier momento sin necesidad de recargar las reglas y de perder conexiones de red
existentes.
Se usa la utilidad firewall-cmd para la configuración (Puedes usar firewall-config si
tienes un interface gráfico, pero no se verá en este artículo).
Cambian completamente los ficheros de configuración.

Instalación y configuración de inicio


El paquete firewalld viene por defecto instalado e iniciado incluso en la instalación mínima.
Si fuera necesario instalarlo y configurarlo al inicio.

Network security. Configurar el firewall con iptables / firewalld. 55


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

yum install -y firewalld


systemctl enable firewalld
systemctl start firewalld

La configuración se realiza en modo comandos con la utilidad firewall-cmd. Como siempre


disponemos de la ayuda tanto en formato man como en formato rápido:

man firewall-cmd
firewall-cmd --help

Podemosver el estado del servicio firewalld

[]# firewall-cmd --state


running

Y listar de forma general la configuración con

[]# firewall-cmd --list-all


public (default, active)
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Zonas.
Cuando configuramos firewalld lo primero que tendremos que hacer es asignar nuestro/s
interface/s a una Zona. Una Zona es básicamente un conjunto de reglas que definen que
tráfico estará permitido dependiendo del nivel de confianza que se tenga en la red a la que
se está conectado.

Existen una serie de Zonas predefinidas y listas para usar en /etc/firewalld/. Dichas Zonas
son las siguientes:

drop – Cualquier paquete de red entrante será eliminado. No hay replica. Solo
conexiones de red de salida son posibles.
block – Cualquier conexión de red de entrada será rechazada con el mensaje “icmp-
host-prohibited” para IPv4 y “icmp6-adm-prohibited” para IPv6. Solo se permiten

Network security. Configurar el firewall con iptables / firewalld. 56


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

conexiones de red iniciadas desde el sistema.


public – Para usar en áreas públicas. No se confiá en el resto de equipos en la red
para proteger tu equipo. Solo se permiten conexiones de entrada seleccionadas. Es la
zona por defecto.
external – Para usar en redes externas con enmascaramiento (masquerading) activado
especialmente para Routers. No se confiá en el resto de equipos en la red para
proteger tu equipo. Solo se aceptan conexiones de entrada seleccionadas.
dmz – Para equipos en tu zona desmilitarizada accesibles públicamente pero con
acceso limitado a tu red interna. Solo acepta conexiones internas seleccionadas.
work – Para usar en áreas de trabajo. Se confiá en general que el resto de equipos de
la red no dañará tu equipo. Solo acepta conexiones internas seleccionadas.
home – Para usar en la red de área doméstica. Se confiá en general que el resto de
equipos de la red no dañará tu equipo. Solo acepta conexiones internas seleccionadas.
internal – Para usar en redes internas. Se confiá en general que el resto de equipos de
la red no dañará tu equipo. Solo acepta conexiones internas seleccionadas.
trusted – Se aceptan todas las conexiones de red. Barra libre.

Podemos ver una lista de zonas activas y sus interfaces

[]# firewall-cmd --get-active-zones


public
interfaces: ens33

Ver la configuración de una zona (sin indicarle una concreta mostrará la zona por defecto ->
public)

[]# firewall-cmd --zone=public --list-all


public (default, active)
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Si no tuvieramos en public ningún interface nos echa una mano para que nos centremos.

[]# firewall-cmd --list-all


You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'work' (see --get-active-zones)
You most likely need to use --zone=work option.

Network security. Configurar el firewall con iptables / firewalld. 57


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Podemos listar también de un plumazo la configuración de todas las zonas

firewall-cmd --list-all-zones

O ver solo las zonas activas.

[]# firewall-cmd --get-active-zones


work
interfaces: ens33

En teoría se puede cambiar un interface de zona mediate firewall-cmd ya que existen


comando para ello

[]# firewall-cmd --zone=public --add-interface=ens33


Error: ZONE_CONFLICT
[]# firewall-cmd --permanent --zone=public --change-interface=ens33
success

Pero parece NO FUNCIONA correctamente actualmente (agosto 2015) aunque modifica


correctamente los ficheros XML de zona no funcionará. La forma “adecuada” de hacerlo es
configurarlo en la definición del interface correspondiente en /etc/sysconfig/network-scripts/
en la forma “ZONE=work”. También existe la posibilidad de configurarlo con Network
Manager. Más información en: https://bugs.centos.org/view.php?id=7407. Si no existe la
definición de ZONE para el interface en el fichero de configuración lo asignará a la zona por
defecto.

¿Y como sabe si un interface está o no en una zona? La forma más efectiva debería ser:

[]# firewall-cmd --get-zone-of-interface=ens33


home

NOTA: Pueden existir ficheros XML de definición de zonas en /etc/firewalld/zones/ Dichos


ficheros solo se crean si hay cambios en la zona. Si no has añadido cambios de interfaces o
servicios en una zona dicho fichero XML no existirá y dicha zona tendrá una configuración
por defecto. Las zonas por defecto estarán en: /usr/lib/firewalld

Zona por defecto.

La zona por defecto viene definida en el fichero de configuración /etc/firewalld/firewalld.conf


con el valor “DefaultZone” pero es posible cambiarla también con el comando:

firewall-cmd --set-default-zone=work

Network security. Configurar el firewall con iptables / firewalld. 58


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Servicios.
En firewalld existe el concepto de servicio y una serie de servicios predefinidos con el
propósito de facilitar la configuración de acceso de las aplicaciones. Los servicios no solo
son listas de puertos locales y destino si no que pueden añadir listas de módulos “firewall
helpers” que se activan automáticamente al activar el servicio. La idea es hacer la vida del
administrador más fácil. Los servicios son configuraciones en ficheros de configuración
individuales XML (service-name.xml) tal como se describe en el man firewalld.service(5). La
ubicación de los ficheros será:

/usr/lib/firewalld/services/ → Para los servicios predefinidos. No se deben editar.


/etc/firewalld/services/ → Para generar los nuevos servicios.

Para crear un nuevo servicio lo mejor será copiar uno de los servicios predefinidos en la
nueva ubicación y modificar el fichero XML.

Ver servicios disponibles

[]# firewall-cmd --get-service


RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability

Por tanto cuando habilitemos el acceso a las aplicaciones con firewalld lo haremos
normalmente habilitando servicios predefinidos. Podemos echar un ojo a la definición XML
de un servicio sencillo (puerto básicamente) como HTTP.

vim /usr/lib/firewalld/services/http.xml

<?xml version="1.0" encoding="utf-8"?>


<service>
<short>WWW (HTTP)</short>
<description>HTTP is the protocol used to serve Web pages.
If you plan to make your Web server publicly available,
enable this option. This option is not required for
viewing pages locally or developing Web pages.</description>
<port protocol="tcp" port="80"/>
</service>

La forma de activar por tanto de forma permanente el acceso a Apache sería activando
el/los servicios correspondientes y recargando la configuración.

Network security. Configurar el firewall con iptables / firewalld. 59


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

firewall-cmd --permanent --zone=public --add-service=http


# Podemos ya habilitar https (443) si queremos
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

NOTA: Activación inmediata o no de servicios. Comentábamos que unas de las bondades


de Firewalld es que podemos configurar una regla para que se aplique inmediatamente sin
recargar la configuración (sin usar “permanent” se aplicará al momento) pero si queremos
que la regla sea permanente debemos, además de especificarlo realizar un “reload” de la
configuración. Si hacemos el reload mediante el comando firewall-cmd lo realizará sin
interrumpir las conexiones de usuario y por tanto no perderá la información de estado.

Verificamos que efectivamente están activados.

[~]# firewall-cmd --permanent --list-all


public (default)
interfaces:
sources:
services: dhcpv6-client http https ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

Vemos que nos muestra los interfaces pertenecientes a la zona, servicios habilitados (que
vemos en un segundo), puertos habilitados,...

Modo pánico

Podemos de forma rápida conmutar el firewall a modo pánico para bloquear TODO el tráfico
entrante / saliente. Los comandos que activan / desactivan / visualizan el modo pánico son:

firewall-cmd --panic-on
firewall-cmd --panic-off
firewall-cmd --query-panic

Un comando normal de estado no nos mostrará si está en este estado así que si entrás en
pánico ten cuidado no te vuelvas loco después.

Ficheros de configuración.

Network security. Configurar el firewall con iptables / firewalld. 60


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Ya hemos ido viendo donde están los ficheros de configuración. Hacemos un repaso
interesante: Todos los valores por defecto (predefinidos) están en: /usr/lib/firewalld .
Tenemos en directorios valores para las zonas predefinidas, servicios por defecto y tipos de
comandos icmp

El fichero “principal” de configuración del servicio es /etc/firewalld/firewalld.conf


Las configuraciones propias estarán en e directorio /etc/firewalld/ en:

services/ Definición de servicios propios


zones/ Cuando alteramos una zona añadiendole servicios nos creará el fichero en esta
ubicación y prevalecerá sobre el fichero de zona por defecto.
icmptypes/ cambios / adiciones en tipos icmp, imagino.

Ficheros logs.
El fichero log por defecto para el servicio Firewalld está en /var/log/firewalld

Referencias.
RHEL7 Doc. Using Firewalls
How to Configure ‘FirewallD’ in RHEL/CentOS 7 and Fedora 21

Network security. Configurar el firewall con iptables / firewalld. 61


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

EMAIL SERVICES

Instalar y configurar un servidor SMTP.

Introducción.
PENDIENTE XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Antes de meternos en harina con configuración de componentes de correo es necesario


que sepamos Enlace interesante a componentes de un sistema de envio de correo:
http://es.ccm.net/contents/115-como-funciona-el-correo-electronico-mta-mda-mua

Condiguración previa.
Asegurarse lo primero que nuestro host tiene definida su dirección IP y nombre corto y de
dominio en el fichero /etc/hosts. Nos evitaremos problemas con Postfix.

72.31.107.206 recuncho-gmail-com1 recuncho-gmail-com1.mylabserver.com

Instalación de Postfix
Postfix es el MTA por defecto en Centos 7. Lo normal incluso en una instalación mínima es
que esté siempre instalado. Si no lo estuviera se instala como siempre.

yum install postfix


systemctl enable postfix

Configuración.
El fichero de configuración principal de postfix es:

/etc/postfix/main.cf

Párametros importantes.

Email services. Instalar y configurar un servidor SMTP. 62


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

Los parámetros de uso más habitual y que debermos revisar en toda nueva instalacíón de
Postfix son los siguientes:

myhostname - Especifica el nombre de Internet de este servidor. Se debe usar el


nobre entero (con dominio).
mydomain - Especifica el dominio al que pertenece el servidor que también se verá
reflejado en el nombre $myhostname . Se usa para muchas otras configuraciones.
myorigin - Especifica el origen de los correos propios que enviará el servidor. Suele
ser igual a $myhostname + $mydomain
mydestination - La lista de dominios para la que esta máquina se considera el destino
final (los dominios que considerará propios). Los valores habituales fijos suelen ser
$myhostname, localhost.$mydomain, localhost .

mynetworks - Especifica las redes de confianza que pueden mandar emails a través
de Postfix.
inet_interfaces - Especifica los interfaces de red en los que aceptará correo. Valores
habituales son all , localhost que será lo normal en cualquier hosts que solo usa el
correo local o el interface concreto donde queremos que escuche.
inet_protocols - Si no vamos a usar IPV6 conviene sustituir el valor por defecto all por
el valor ipv4 para evitar warnings molestos.

Como vemos muchos parámetros en su definición se componen del valor de otros


parámetros por lo que un único cambio puede suponer realmente grandes cambios en la
configuración. Esa es la idea.
Cuando hacemos cambios importantes de este tipo debemos reiniciar postfix.

systemctl restart postfix

Ejemplo de configuración

Probar un ejemplo con usuarios locales / externos (con acceso desde otras máquinas)

Primero establecemos adecuadamente el hostname de nuestra máquina. Reiniciamos y


verificamos.

[~]# hostnamectl set-hostname centos7.localdomain.net

[~]# reboot

[~]# hostname
centos7.localdomain.net

Reiniciamos. Añadimos una entrada adecuada de nuestro host con su IP en /etc/hosts

Email services. Instalar y configurar un servidor SMTP. 63


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

192.168.122.21 centos7 centos7.localdomain.net

Editamos el fichero de configuración de Postfix (previa copia siempre) y cambiamos los


siguientes valores

myhostname = centos7.localdomain.net
mydomain = localdomain.net
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = subnet
inet_interfaces = all
inet_protocols = ipv4

Reiniciamos Postfix y echamos un vistazo al log de postfix por si hubiera errores.

systemctl restart postfix


tail -f /var/log/maillog

Pruebas de envio de correo

Realizaremos unas pruebas rápidas para verificar el funcionamiento del correo. Para ello
instalaremos mutt , un sencillo cliente de correo que nos facilitará la labor.

Primero instalamos un cliente de correo en modo texto

yum install mutt

Segundo creamos un par de usuarios y establecemos sus paswords:

useradd test01; useradd test02


passwd test01
passwd test02

Tercero Accedemos con nuestro usuario y ejecutamos mutt

[~]# su - test01
[~]# mutt
/home/test01/Mail no existe. ¿Crearlo? ([sí]/no):

Las acciones de menú para enviar correo son muy sencillas y bien descritas. Componemos
un correo. Nos abrirá el editor vim para escriber el cuerpo del correo. Acabamos guardando
y saliendo de vi. Luego nos ofrece el menu para enviarlo.

Email services. Instalar y configurar un servidor SMTP. 64


Linux Foundation Certified Engineer (LFCE) - Guía de estudio

m Nuevo correo.
To: test02
Subject: Prueba desde test01 a test02
Prueba de envio de correo de usuario test01 a usuario test02
:wq
y mandar
i salir
q salir

Accedemos con el usuario test02 para verificar el correo recibido.

[~]# su - test02
[~]# mutt
/home/test01/Mail no existe. ¿Crearlo? ([sí]/no):

Nos mostrará en una "lista" el correo enviado desde el usario test01 con los datos de
cabecera de nuestros usuarios y dominios que es una de las configuraciones que nos
interesa verificar..

From: test01@centos7.localdomain.net To: test02@centos7.localdomain.net Subject:


Prueba desde test01 a test02

Ayuda.
PENDIENTE XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Referencias.
Setting Up Email Services (SMTP, Imap and Imaps) and Restricting Access to SMTP
Mutt – A Command Line Email Client to Send Mails from Terminal

Email services. Instalar y configurar un servidor SMTP. 65