Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUÍA DE ADMINISTRACIÓN - 1
Red Hat Inc, Red Hat Enterprise Linux, sus logos y demás elementos
identificativos, están registrados en los Estados Unidos de América y otros
países.
A mi mamá, Elsy, por su esfuerzo y empeño para que sus hijos fueran
personas de bien. A mi papá, Neil, en la presencia de Dios, ejemplo de
resiliencia.
Mi familia, mi respaldo.
Reconocimientos
Se ha escogido realizar este material sobre Red Hat Linux debido a que
es un sistema operativo que a lo largo de los años ha brindado calidad y
estabilidad para montar sobre él diversos tipos de sistemas de información y
aplicaciones utilitarias. Esto no quiere decir que sistemas como Debian
Linux y Ubuntu Server no cuenten con estas características, el tema pasa a
un desarrollo comercial y de gestión de mercado corporativo dado a que las
empresas hoy día buscan implementar sus sistemas sobre ambientes que
tengan respaldo de fabricantes y en ese sentido tanto Red Hat como Oracle
han desarrollado una estrategia hace varios años. Oracle Linux se muestra
hoy día como un sistema interesante para desplegar plataformas
tecnológicas; es una buena idea indagar sobre que puede lograr con cada una
de estas empresas cuando despliegue sus sistemas operativos. Para el caso
de Ubuntu Server se visualiza un buen sistema sin embargo el despliegue
comercial del fabricante hoy día parece ir en una línea diferente a la que van
empresas como Oracle y Red Hat.
Internet para el año 2000 no era lo que es hoy, mucha agua ha pasado por
debajo del puente desde entonces. Los contenidos multimedia no eran
abundantes y las herramientas de colaboración no tenían el alcance a lo que
hoy podría ser la mensajería para dispositivos móviles, aun así el email tenía
auge y los grupos de discusión estaban ahí, fue así como decidí trabajar mi
proyecto de grado en algo que se llamaba Linux y una base de datos que se
conocía como PostgreSQL, apoyándome en los conceptos y
recomendaciones de un Ingeniero en Centro America que tenía la
experiencia con este tipo de tecnologías. La empresa de
Telecomunicaciones de Valledupar (TeleUpar), mi ciudad de nacimiento, fue
mi escenario de proyecto de grado, recuerdo claramente el requerimiento de
esa época y los tiempos de despliegue; en aquella oportunidad la empresa me
brindó un equipo tecnológico donde puede realizar el despliegue, recuerdo
tanto que para usar PostgreSQL sobre Linux fue necesario compilar e
instalar la herramienta en tres días, inició un viernes en horas de la tarde y
terminó el siguiente lunes pasada las 10 de la mañana, que alegría, que
emoción !!!, hoy día es una actividad que se realiza en 10 minutos.
Este libro está basado en la visión de Red Hat para administrar diferentes
componentes del sistema operativo, sin embargo, conceptos explicados y
procedimientos de gestión pueden ser aplicados en sistemas como Oracle
Linux, CentOS o Fedora; algunas temáticas son aplicables en sistemas
Debian Linux y derivados, como es el caso de Ubuntu Server; en realidad
Linux es uno solo, un núcleo llamado el “Kernel de Linux”, a partir de ahí
parten las distribuciones anteriormente mencionadas y muchas otras que no
he mencionado. Este material ha sido elaborado en parte gracias al aporte de
la documentación de Red Hat el cual está liberado bajo el licenciamiento
Creative Commons Attribution–Share Alike 3.0, teniendo como origen de la
información presentada el portal de aprendizaje de productos Access Red
Hat, en su URL: https://access.redhat.com/products/red-hat-enterprise-linux/
.
El desarrollo de contenidos de este libro asume que por parte del lector
existen unos conocimientos muy básicos del sistema operativo Linux; este
material parte de la base que el usuario conoce temáticas como el manejo de
la ayuda, la edición de archivos de textos, entre otros conocimientos
esenciales. Si usted no cuenta con ese conocimiento le invito a inscribirse a
los cursos de Linux elaborados por Network Development Group (NDG)
para la academia de Cisco Systems, cursos que son gratuitos, de auto
inscripción online, los cuales cuentan con certificación por parte de Cisco
Academy y están enfocados para iniciar un camino en el Linux Professional
Institute, sin embargo sepa usted que las líneas de certificaciones del LPI son
de distinto enfoque respecto a las de Red Hat, teniendo Red Hat un enfoque
mucho más practico en su formación.
[root@pruebas ~]# ll
total 39836
-rw-------. 1 root root 1275 Dec 17 17:21 anaconda-ks.cfg
-rw-r--r--. 1 root root 1616 Dec 17 17:23 initial-setup-ks.cfg
drwxr-x---. 2 root root 83 Feb 22 16:46 pruebas
-rw-r--r--. 1 root root 40780168 Jan 5 23:44 webmin-1.970-1.noarch.rpm
[root@pruebas datos]# ll
total 39848
-rw-------. 1 root root 1275 Dec 17 17:21 anaconda-ks.cfg
-rw-r--r--. 1 root root 1616 Dec 17 17:23 initial-setup-ks.cfg
-rw-r--r--. 1 root root 40780168 Jan 5 23:44 webmin-1.970-1.noarch.rpm
Tenga presente que la sintaxis del comando “tar” indica que primero se
definen los parámetros, seguido de la ruta donde quedará el archivo
resultante, y por último lo que se va a agrupar o comprimir. El resultado de
la compresión de la carpeta /etc en cada uno de los algoritmos de
compresión es el siguiente:
real0m1.414s
user0m1.358s
sys0m0.133s
real0m3.620s
user0m3.527s
sys0m0.096s
real0m14.483s
user0m14.291s
sys0m0.196s
Una vez comprimidos los archivos será mas fácil una transferencia de
datos de un servidor a otro, temática que será abordada en la siguiente
sección, sin embargo, antes de eso es necesario que aprendamos a
descomprimir estos archivos, como se muestra a continuación:
Muchas son las formas para transferir archivos entre servidores usando el
comando “scp”, para ampliar mas sobre ellas le invito a observar las paginas
de manual de este comando.
Otra opción para transferir archivos entre sistemas remotos es a través de
la herramienta “sftp”. Una sesión con el comando sftp utiliza el mecanismo
de autenticación segura y transferencia de datos cifrados hacia y desde el
servidor SSH. Un ejemplo de este método es el siguiente:
sftp> cd /carpeta-remota
sftp> pwd
Remote working directory: /carpeta-remota
sftp> ls
1 2 3 4 5 6
sftp> get 6
Fetching /carpeta-remota/6 to 6
C.utf8
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE.utf8
en_IE@euro
en_IL
en_IN
en_NG
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SC.utf8
en_SG
en_SG.utf8
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
es_AR
es_AR.utf8
es_BO
es_BO.utf8
es_CL
es_CL.utf8
es_CO
es_CO.utf8
…
[root@pruebas ~]# at -c 4
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
--- salida omitida ---
${SHELL:-/bin/sh} << 'marcinDELIMITER57db4900'
date >> /datos/hora.txt
marcinDELIMITER57db4900
TAREAS PROGRAMADAS CON crond
0 23 * * * /root/backup.sh
El ejemplo anterior le dice a “crond” que a las 23:00, todos los días,
todos los meses, todos los días de la semana, ejecute el script llamado
“/root/backup.sh”. Claramente se aprecia que el número 0 indica el minuto
exacto en que se va a ejecutar la tarea, lo mismo pasa con el número 23 el
cual indica la hora de ejecución, el siguiente campo es el día exacto del mes,
el siguiente campo es el mes, el siguiente campo hace referencia a que si se
desea ejecutar la tarea en un día en particular (lunes, martes, miércoles,
jueves, viernes, sábado o domingo), y por ultimo, lo que se requiere ejecutar,
o un script o un comando.
0 : ejecución en el minuto 0
23: ejecución en la hora 23
* : ejecución todos los días del mes
* : ejecución todos los mese del año
* : ejecución todos los días de la semana
/root/backup.sh : comando o script a ejecutar
minutos 0-59
horas 0-23
días del mes 1-31
meses 1-12
días de la semana 0-7
Otros ejemplos de posibles ediciones de “crontab” son los siguientes:
Tenga presenta que el archivo /etc/crontab puede ser sobre escrito por
alguna aplicación del sistema, por lo que podrá perder la programación
generada, por lo tanto la forma aconsejable de usar “crons” personalizados
es ubicarlos en la ruta /etc/cron.d, como se muestra a continuación:
[root@s1 cron.d]# ll
total 16
-rw-r--r--. 1 root root 128 Nov 11 2019 0hourly
-rw-r--r--. 1 root root 108 Aug 2 2020 raid-check
-rw-r--r--. 1 root root 70 Nov 5 20:58 rear
-rw-r--r--. 1 root root 36 Mar 16 13:36 tareas
Por último solo espere que cada minuto se adicione una línea al archivo
/datos/hora.txt:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
Una unidad como “.service” es usada para iniciar daemons como un Web
Server. Una unidad “.socket” es usada para conexiones sobre demanda,
como es el caso de un cliente que requiere un servicio que no se está
ejecutando, cuando el cliente requiere de un servicio el socket inicia el
servicio que no se está ejecutando; también están las unidades “.path” que
son usadas para iniciar la activación de un servicio cuando ocurra un cambio
en el sistema de archivos.
En este caso las unidades de servicio tipo socket listadas son las que
están activas, usted podría al finalizar el comando enviar el parámetro “--all”
para visualizar las no activas. De igual forma puede digitar el comando
“systemctl” para ver la totalidad de las unidades de servicio.
ADMINISTRANDO SERVICIOS CON
SYSTEMD
Las versiones anteriores de Red Hat Enterprise Linux (RHEL6), que se
distribuyeron con SysV init o Upstart, usaban init scripts ubicados en el
directorio /etc/rc.d/init.d/. Estos scripts de inicialización se escribían
normalmente en Bash y permitía al administrador del sistema controlar el
estado de los servicios y daemons en su sistema. A partir de con Red Hat
Enterprise Linux 7, estos scripts de inicio han sido reemplazados por
unidades de servicio. Las unidades de servicio terminan con la extensión de
archivo .service y tienen un propósito similar al de los scripts de inicio.
SysV SystemD
service httpd start systemctl start httpd.service
service httpd stop systemctl stop httpd.service
service httpd restart systemctl restart httpd.service
service httpd condrestart systemctl try-restart httpd.service
service httpd reload systemctl reload httpd.service
service httpd status systemctl status httpd.service
Usted le podría consultar al sistema acerca del estatus del servicio httpd
como se muestra a continuación:
SystemV SystemD
0 runlevel0.target - poweroff.target
1 runlevel1.target - rescue.target
2 runlevel2.target - multiuser.target
3 runlevel3.target - multiuser.target
4 runlevel4.target - multiuser.target
5 runlevel5.target - graphical.target
6 runlevel6.target - reboot.target
Usted puede visualizar el “target” por defecto para saber que tiene
definido SystemD al momento de arrancar el sistema operativo, tal como se
muestra a continuación:
Para comprobar este cambio usted podría hacer un “reboot” del sistema y
el arranque solo debería de ser por Interfaz de Línea de Comandos. En el
momento en que usted desee cambiarse de target sin cambiar el target por
default, usted podría usar la siguiente instrucción:
Al realizar esta operación el sistema pasa a este target y nos muestra una
pantalla como la siguiente:
Para salir de este modo usted podría realizar un reboot o cambiar al
target deseado.
BOOT EN MODO DE EMERGENCIA
Al realizar esta operación el sistema pasa a este target y nos muestra una
pantalla como la siguiente:
Para salir de este modo usted podría realizar un reboot o cambiar al
target deseado.
APAGANDO, REINICIANDO Y
SUSPENDIENDO EL SISTEMA
Las formas como se apaga, reinicia y se envía a hibernación pueden
variar; acá intentaremos abordar algunas de ellas, iniciando con el apagado.
MODOS DE APAGADO
[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
├
● ├─sshd-keygen.target
● │ ├─sshd-keygen@ecdsa.service
● │ ├─sshd-keygen@ed25519.service
● │ └─sshd-keygen@rsa.service
1. Crear una copia del archivo sshd_config que será usada por el
servicio:
Port 22220
PidFile /var/run/sshd-second.pid
ExecStartPre=/usr/sbin/sshd-keygen
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config
$OPTIONS
[Unit]
Description=OpenSSH server second instance daemon
After=syslog.target network.target auditd.service sshd.service
[Service]
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config
$OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
Los servicios que NO se pueden deshabilitar dado a que son claves para
un arranque seguro del sistema operativo son los siguientes: autovt@.service
, getty@.service, microcode.service, rhsmcertd.servic2. El resto de los
servicios listados previamente, son susceptibles de activación en el arranque
de la maquina pero se debe validar si la funcionalidad se está usando en el
sistema operativo antes de entra a desactivar, por ejemplo los servicios:
LVM, SELinux, Syslog, SSH, etc.
[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd-second_config $OPTIONS
$CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
[root@pruebas datos]# ps
PID TTY TIME CMD
4803 pts/0 00:00:00 bash
6388 pts/0 00:00:00 ps
El programa “ps” tiene cantidad de variantes que usted puede usar para
visualizar los procesos del sistema.
En todo caso, usted debe tener presente que los procesos tienen un
identificador (PID), un proceso padre que es el que lo soporta (PPID), una
hora de inicio, una prioridad, un sitio de ejecución (TTY= consola Linux,
pseudo terminal), un usuario que lo genera, entre otros. El tener esta
información permitirá gestionar los procesos al acomodo del administrador
del sistema. todas las consultas realizadas a procesos son hechas al “kernel”
de Linux, esta información generalmente viene de un sistema de archivos
virtual montado en /proc.
[root@pruebas ~]# ps -e
--- salida omitida ---
7210 pts/0 00:00:06 yes
El proceso 7210 aun sigue con vida, pero está en estado suspendido. Si
usted desea que este proceso continúe en ejecución podría enviarle la señal
18:
hola
hola
hola
[1]+ Terminated yes hola
[root@pruebas ~]# w
13:59:57 up 5:16, 2 users, load average: 0.29, 0.25, 0.29
USER TTY FROM LOGIN@ IDLE JCPU PCPU
WHAT
fmestre pts/0 192.168.0.35 13:59 4.00s 0.02s 0.02s -bash
root pts/1 192.168.0.35 13:12 0.00s 0.09s 0.02s w
ADMINISTRACIÓN DE JOBS
El control de tareas es una característica del “shell” el cual le permite a
una instancia de “shell” administrar múltiples comandos. Se podría
considerar un “job” como un proceso que se ejecuta en una terminal, el cual
queda en ejecución hasta determinado momento; este proceso puede
enviarse a ejecución en un segundo plano (background) o permitir que se
ejecute en la terminal hasta que finalice. A continuación veremos algunas
demostraciones que nos amplían esta conceptualización:
[root@pruebas ~]# fg %1
sleep 60s
[root@pruebas ~]# fg %1
sleep 60s
^Z
[1]+ Stopped sleep 60s
[root@pruebas ~]# bg %1
[1]+ sleep 60s &
Esta última instrucción nos permite ver los perfiles que se pueden aplicar
en los sistemas Linux junto con sus respectivas descripciones; la siguiente
instrucción nos permitirá visualizar el perfil activo, el cual está definido al
momento de ejecución:
Las funcionalidades más comunes habilitadas por los módulos del kernel
son:
[root@pruebas 4.18.0-240.15.1.el8_3.x86_64]# ll
total 17204
---- salida omitida
-rw-r--r--. 1 root root 297491 Feb 18 14:41 modules.dep
4.18.0-240.15.1.el8_3.x86_64
4.18.0-240.10.1.el8_3.x86_64
Los sistemas Red Hat Linux como muchas otras distribuciones permiten
crear grupos. Un conjunto de cuentas se integra en un grupo con un
propósito especifico, como por ejemplo acceder a un recurso (archivo o
directorio).
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
…
GESTIÓN DE OPERACIONES SOBRE
USUARIOS DEL SISTEMA
Sobre las cuentas de usuario es posible generar diferentes tipos de
operaciones, como lo es la adición, la asignación de contraseña, la
modificación de datos, así como su eliminación; en esta sección
trabajaremos sobre ellas para lograr un mejor entendimiento.
[root@pruebas ~]# id
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ADICIONANDO UN USUARIO ESTANDAR
$6$G7IPmMKwkpibDq5T$ouQqvR88ItQgjekau3lkAoiA2BPl
o7cWRLhCBphDRZriBEkEGA4tTtfNzh5tAEWMz0ZIDPYqJQ.5
kxl7yMDxn.
__default__ user_u s0 *
--- salida omitida
test:!$6$//.u15dcDvh19xvP$Z101Z9okz8zGZ4GtszF2DkD.rdyu36s
7BuOSubYjRrrUIG49H2mJsnstQopoAHgTCd7JrpWlLgO3JfLfQw.Sg.
:18696:0:99999:7::19357:
test:$6$//.u15dcDvh19xvP$Z101Z9okz8zGZ4GtszF2DkD.rdyu36s
7BuOSubYjRrrUIG49H2mJsnstQopoAHgTCd7JrpWlLgO3JfLfQw.Sg.
:18696:0:99999:7::19357:
ELIMINACION DE USUARIOS DEL SISTEMA
login:hash:18696:0:99999:7::19357:
[root@pruebas ~]#
Una vez registrado usted puede ejecutar las actividades que necesite
como superusuario. Esta suplantación al usuario “root” podría ser hecha sin
colocar el nombre de usuario, solo colocando “su -”.
DELEGANDO FUNCIONES DE
ADMINISTRACIÓN - SUDO
En muchas ocasiones se hace necesario que diferentes labores de
administración del sistema sean realizadas por personas especializadas en
cada una de ellas. Puede ser el caso de tener un grupo de personas
especializadas en labores de administración de almacenamiento y otro grupo
enfocado en la administración de los procesos del sistema; para la
realización de estas actividades seguramente algunos pensarían que es
necesario que cada una de estas personas debería tener acceso a las
credenciales del usuario “root”, sin embargo esto no es así.
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
[root@pruebas sudoers.d]# ll
total 8
-r--r-----. 1 root root 22 Mar 12 09:21 fmestre
-r--r-----. 1 root root 19 Mar 12 09:22 test
Cada una de estas letras tiene asignado un valor numérico para propósito
de asignación de permisos en archivos o directorios; la letra “r” tiene un
valor de 4, la letra “w” un valor de 2 y la letra “x” tiene un valor de 1.
Miremos entonces el siguiente listado vertical para aprender un poco más:
[root@pruebas ~]# ll
total 39836
-rw-------. 1 root root 1275 Dec 17 17:21 anaconda-ks.cfg
-rw-r--r--. 1 root root 1616 Dec 17 17:23 initial-setup-ks.cfg
drwxr-x---. 2 root root 83 Feb 22 16:46 pruebas
-rw-r--r--. 1 root root 40780168 Jan 5 23:44 webmin-1.970-1.noarch.rpm
[root@pruebas ~]# ll /
total 34
---
drwxr-xr-x. 2 fmestre ingenieria 6 Mar 12 12:32 ingenieria
[root@pruebas ~]# ll /
total 34
--- salida omitida ---
drwxrwx---. 2 fmestre ingenieria 6 Mar 12 12:32 ingenieria
Con la instrucción anterior se ha cerrado el acceso a los “otros” a
/ingeniería, solo queda disponible para el usuario “fmestre” con todos los
permisos (7), y para los usuarios del grupo “ingenieria” con todos los
permisos (7), los “otros” no tiene acceso a la carpeta, es el caso del usuario
“test”, que si intenta posicionarse sobre la carpeta tendrá una salida como
esta:
[curri@pruebas ingenieria]$
CAMBIO DE GRUPO A UN ARCHIVO O
DIRECTORIO
Hemos visto el uso de los comandos “chmod” para modificar el permiso
establecido sobre un archivo o directorio, también hemos visto el comando
“chown” para establecer propietario y grupo asociado a un archivo o
directorio. Podríamos también hacer uso del comando “chgrp” para realizar
un cambio de grupo a un archivo o directorio, como se muestra:
[root@pruebas ~]# ll /
total 34
--- salida omitida ---
drwxrwx---. 2 fmestre legal 6 Mar 12 12:32 ingenieria
Con el cambio realizado con anterioridad los usuarios del grupo “legal”
tiene acceso a los recursos de /ingeniería. Para efectos del entendimiento de
los siguientes temas volvemos a colocar como grupo principal asociado a la
carpeta /ingeniera a el grupo “ingenieria”:
Suponga que /ingenieria debe ser visualizada por el usuario “test”; los
permisos estándares antes vistos no permitirían generar un permiso para que
el usuario “test” pueda por lo menos listar el contenido de /ingeniería, siendo
“test” para de los “otros”, si usted define un permiso para los “otros” abre la
puerta a quien no debe abrírsela; ante esta situación Linux le permite definir
un permiso excepcional con tal de lograr este cometido a través de la
generación de una ACL como se muestra a continuación:
Se observa el símbolo “+” en los atributos, esto quiere decir que una
regla excepcional tiene este directorio, la forma de saber cual es la regla se
muestra a continuación:
Usted podrá si lo prefiere crear ACL’s con varias reglas en una sola
instrucción, tal como se muestra:
[root@pruebas ingenieria]# ll
total 0
drwxrwx---. 2 root root 6 Mar 13 08:36 alfa
drwxrwx---. 2 root root 6 Mar 13 08:37 beta
Crear una ACL por default resultaría en este caso en la adición del
parámetro “d:” a una regla tradicional creada, como se muestra en el
siguiente ejemplo:
Una vez creada la regla, dentro de /alfa creamos una carpeta llamada
“futbol” y revisamos sus atributos, como se muestra:
[root@pruebas alfa]# ll
total 0
drwxrwx---+ 2 root root 6 Mar 13 08:56 futbol
Se puede observar que futbol cuenta entonces con una ACL heredada de
su carpeta padre llamada “/ingenieria/alfa”. De la siguiente forma usted
podría eliminar la ACL por default creada previamente:
PERMISO SETUID
Se observa el número “4” como parte del permiso, este número indica el
“setuid”.
PERMISO SETGID
[test@pruebas datos]$ ll
total 0
drwxr-xr-x. 2 root root 6 Mar 1 17:33 app2
drwxr-xr-x. 2 root root 6 Mar 1 17:33 app3
[test@pruebas datos]$ ll
total 4
drwxr-xr-x. 2 root root 6 Mar 1 17:33 app2
drwxr-xr-x. 2 root root 6 Mar 1 17:33 app3
-rw-rw-r--+ 1 test ingenieria 29 Mar 15 09:43 hora.txt
PERMISO STICKY
Se crea /datos como carpeta que podrá ser accedida por cualquier usuario
en el sistema:
Se declara la carpeta con todos los permisos, incluido el “1” que declara
la carpeta con el permiso “sticky”; también pudo haberse hecho con una
instrucción como “chmod o+t”, importante haber concedido todos los
permisos estándares previamente.
Kernel
Primeras etapas del proceso de arranque
Salida estándar y de error de los servicios cuando se inician y
se ejecutan
Syslog
TIPOS DE MENSAJES EN RSYSLOG
El servicio “rsyslog” clasifica los mensajes de syslog por “facilities” y
nivel de prioridad, y los escribe en los archivos del directorio /var/log/. A
continuación se presenta la tabla con la descripción de los niveles de
prioridad:
*.info;mail.none;authpriv.none;cron.none
/var/log/messages
[root@pruebas log]# ll
--- salida omitida ---
-rw-------. 1 root root 1415115 Mar 10 08:44 messages
-rw-------. 1 root root 457005 Feb 18 14:42 messages-20210218
-rw-------. 1 root root 823795 Feb 21 08:02 messages-20210221
-rw-------. 1 root root 2745039 Mar 1 08:44 messages-20210301
-rw-------. 1 root root 2834381 Mar 8 09:13 messages-20210308
Para ver todos los mensajes de logs usted puede hacer lo siguiente:
2 ens1
El nombre del dispositivo
incorpora información que es
proporcionada por el firmware o por la
BIOS en relación con los números de
índice de ranura de conexión de las
tarjetas PCI Express. Si esta
información no está disponible o no es
aplicable, “udev” usa el esquema 3.
La letra “s” indica que esta tarjeta
puede estar integrada en la tarjeta
madre en un puerto PCI Express.
El dispositivo es nombrado por la
ubicación física del conector de
3 hardware. Si esta información no está enp2s0
disponible o no es aplicable, “udev”
usa el esquema 5.
Slot:00:12.0
Class:Ethernet controller
Vendor:Red Hat, Inc.
Device:Virtio network device
SVendor:Red Hat, Inc.
SDevice:Device 0001
PhySlot:18
Slot:00:13.0
Class:Ethernet controller
Vendor:Intel Corporation
Device:82540EM Gigabit Ethernet Controller
SVendor:Red Hat, Inc.
SDevice:QEMU Virtual Machine
PhySlot:19
Rev:03
[root@pruebas network-scripts]# ll
total 12
-rw-r--r--. 1 root root 208 Mar 8 12:05 ifcfg-dinamica
-rw-r--r--. 1 root root 344 Dec 18 10:03 ifcfg-ens18
-rw-r--r--. 1 root root 131 Mar 9 09:06 ifcfg-fmestre
Para cambiar el nombre del host con “hostnamectl” usted podría hacer
como sigue a continuación:
[root@pruebas ~]# hostnamectl set-hostname
server1.aptivalabs
Usted podrá capturar los paquetes que transitan por sus interfaces de red
como sigue:
Se crean las conexiones tipo esclavas, que usan las tres interfaces
definidas para este laboratorio (ens19, ens20 y ens21):
YUM está diseñado para trabajar con repositorios, los cuales son
depósitos online con software disponible. El software en las distribuciones
Red Hat y derivados es proporcionado en el formato RPM (Red Hat Package
Manager), este es un formato donde se integran binarios y metadata para
hacer la rutina de administración de software mas llevadera para el
administrador.
Tenga en cuenta que los repositorios son específicos para cada sistema
operatvo. Por lo tanto, si usted está usando Red Hat Linux, usted debería
usar repositorios para RHEL, se podrían usar repos de CentOS en Red Hat
pero no es lo recomendado, siendo CentOS una distribución donde se
realizarán pruebas de software que una vez testeado iría a RHEL como
software validado, no como se hacía en el pasado donde todo se probaba en
Fedora, llegaba a Red Hat Linux y de ahí se liberaba el código y salía
CentOS. Si usted necesita software adicional podría adicionar (por razones
de soporte no es recomendado) el repositorio EPEL, el cual es un proyecto
en Fedora que cuenta con importante software de gestión.
Red Hat Linux es un sistema operativo con soporte y gestión de
actualizacines, este derecho se obtiene adquiriendo una suscripción a RHEL
o uniéndose al programa Red Hat Developer, que le da acceso a la
suscripción gratuita de Red Hat Enterprise Developer. Puede registrarse para
obtener la suscripción de desarrollador de Red Hat en
https://developers.redhat.com. Después de obtener una suscripción válida
para Red Hat Enterprise Linux, puede usar las herramientas de
administración de suscripción de Red Hat (RHSM) para administrar su
suscripción.
[root@pruebas pki]# ll
total 0
drwxr-xr-x. 4 root root 73 Dec 17 17:10 ca-trust
drwxr-xr-x. 2 root root 37 Feb 3 10:51 consumer
drwxr-xr-x. 2 root root 70 Feb 3 10:51 entitlement
drwxr-xr-x. 2 root root 142 Dec 17 17:13 fwupd
drwxr-xr-x. 2 root root 111 Dec 17 17:13 fwupd-metadata
drwxr-xr-x. 2 root root 21 Dec 17 17:10 java
drwxr-xr-x. 2 root root 103 Dec 14 14:41 nssdb
drwxr-xr-x. 2 root root 6 Dec 17 17:23 product
drwxr-xr-x. 2 root root 21 Dec 17 17:09 product-default
drwxr-xr-x. 2 root root 71 Dec 17 17:09 rpm-gpg
drwx------. 2 root root 6 Jun 18 2020 rsyslog
drwxr-xr-x. 3 root root 16 Dec 17 17:09 swid
drwxr-xr-x. 5 root root 104 Dec 4 09:53 tls
GESTIÓN DE REPOSITORIOS DE
SOFTWARE
La información de configuración de YUM y las utilidades relacionadas
se almacenan en el archivo /etc/yum.conf. Este archivo contiene una o más
secciones que le permiten establecer opciones específicas de sus
repositorios, sin embargo, se recomienda definir repositorios individuales
en archivos .repo que deben ser ubicados en el directorio /etc/yum.repos.d/.
Tenga en cuenta que los valores que defina en las secciones individuales
[repository] del archivo /etc/yum.conf anulan valores establecidos en la
sección principal [main].
Repo-id : rhel-8-for-x86_64-baseos-rpms
Repo-name : Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
Repo-revision : 1613990740
Repo-updated : Mon 22 Feb 2021 05:45:37 AM -05
Repo-pkgs : 6,587
Repo-available-pkgs: 6,584
Repo-size : 9.4 G
Repo-baseurl : https://cdn.redhat.com/content/dist/rhel8/8/x86_64/baseos/os
Repo-expire : 86,400 second(s) (last: Tue 23 Feb 2021 08:59:35 AM -05)
Repo-filename : /etc/yum.repos.d/redhat.repo
Total packages: 23,055
[root@pruebas yum.repos.d]# ll
total 92
-rw-r--r--. 1 root root 93790 Feb 18 14:33 redhat.repo
[rhel-8-for-x86_64-appstream-rpms]
name = Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/appstream/os
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/857675445084215268-key.pem
sslclientcert = /etc/pki/entitlement/857675445084215268.pem
metadata_expire = 86400
enabled_metadata = 1
Transaction Summary
======================================================
Install 1 Package
Installed:
yum-utils-4.0.17-5.el8.noarch
Complete!
[root@pruebas yum.repos.d]# ll
total 96
-rw-r--r--. 1 root root 196 Feb 23 18:12
dl.fedoraproject.org_pub_epel_8_x86_64_.repo
-rw-r--r--. 1 root root 93608 Feb 23 18:10 redhat.repo
[root@pruebas yum.repos.d]# mv
dl.fedoraproject.org_pub_epel_8_x86_64_.repo epel.repo
[root@pruebas yum.repos.d]# vim epel.repo
#
# /etc/fstab
# Created by anaconda on Thu Dec 17 22:08:06 2020
#
…
…
/dev/sr0 /repo iso9660 defaults 0 0
[root@pruebas ~]# mount -a
mount: /repo: WARNING: device write-protected, mounted read-only.
Este ultimo mensaje nos indica que la carpeta /repo está disponible
como solo lectura. Si se realiza un listado de la carpeta obtendremos la
siguiente información:
[BaseOS]
name=BaseOS
baseurl=file:///repo/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///repo/AppStream
gpgcheck=0
Repo-id : BaseOS
Repo-name : BaseOS
Repo-revision : 1602239724
Repo-updated : Fri 09 Oct 2020 05:34:52 AM -05
Repo-pkgs : 1,696
Repo-available-pkgs: 1,694
Repo-size : 1.1 G
Repo-baseurl : file:///repo/BaseOS
Repo-expire : 172,800 second(s) (last: Wed 24 Feb 2021 09:35:54 AM -05)
Repo-filename : /etc/yum.repos.d/repo1.repo
GESTIÓN DE MODULOS Y STREAMS
Los módulos son colecciones de paquetes que representan una unidad
lógica: una aplicación, un stack de idiomas, una base de datos o un conjunto
de herramientas. Estos paquetes se crean, prueban y lanzan juntos. A manera
de ejemplo, dos versiones del servidor de base de datos PostgreSQL están
disponibles en el módulo postgresql: PostgreSQL 10 (stream
predeterminado) y PostgreSQL 9.6. Solo se puede instalar un stream de
módulo en el sistema.
Esto mostrará los diferentes perfiles con los que cuenta este stream
7.2
Transaction Summary
================================================================
==================================
Install 30 Packages
Transaction Summary
================================================================
====================================
Is this ok [y/N]: y
Complete!
Transaction Summary
====================================================================================================
Install 3 Packages
Upgrade 11 Packages
Tenga en cuenta que yum search --all permite una búsqueda más
exhaustiva pero más lenta. A continuación, listaremos todos los paquetes
instalados y disponibles para instalar en nuestro sistema, esto generará un
gran listado en pantalla, como se muestra de la siguiente forma:
Transaction Summary
================================================================
========================
Install 1 Package
Complete!
Transaction Summary
================================================================
==================================
Install 88 Packages
Transaction Summary
================================================================
=========
Install 1 Package
Installed:
nano-2.9.8-1.el8.x86_64
Complete!
ACTUALIZACIÓN DE PAQUETES y
GRUPOS DE SOFTWARE
YUM le permite verificar si el sistema tiene actualizaciones pendientes.
Usted puede enumerar los paquetes que necesitan actualizarse y elegir
actualizar un solo paquete, varios paquetes o todos los paquetes a la vez. Si
alguno de los paquetes que elige actualizar tienen dependencias, éstas
también se actualizan. En ese orden de ideas trataremos en este ítem los
temas relacionados a:
Busqueda de actualizaciones.
Actualización de un solo paquete.
Actualización de un grupo de paquetes y sus dependencias.
Aplicar actualizaciones de seguridad.
Automatización de las actualizaciones de software.
Transaction Summary
================================================================
=========
Upgrade 1 Package
Transaction Summary
================================================================
=========
Is this ok [y/N]:
Usted podría actualizar todos los paquetes del Sistema y sus
dependencias de la siguiente forma:
Transaction Summary
================================================================
=========
Upgrade 1 Package
Transaction Summary
================================================================
=========
Upgrade 1 Package
Salir
Descargar paquetes actualizados
Descargar y aplicar las actualizaciones
Transaction Summary
================================================================
=========
Install 1 Package
Total download size: 144 k
Installed size: 47 k
Is this ok [y/N]: y
Downloading Packages:
dnf-automatic-4.2.23-4.el8.noarch.rpm 187 kB/s | 144
kB 00:00
-------------------------------------------------------------------------------------------------------------
----------------
Total 186 kB/s | 144 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : dnf-automatic-4.2.23-4.el8.noarch
1/1
Running scriptlet: dnf-automatic-4.2.23-4.el8.noarch
1/1
Verifying : dnf-automatic-4.2.23-4.el8.noarch
1/1
Installed products updated.
Installed:
dnf-automatic-4.2.23-4.el8.noarch
Complete!
dnf-automatic-download.timer
dnf-automatic-install.timer
dnf-automatic-notifyonly.timer
dnf-automatic.timer
Transaction Summary
================================================================
=========
Remove 1 Package
Transaction Summary
================================================================
==================================
Remove 1 Package
Freed space: 29 M
Is this ok [y/N]:
HISTORIAL EN LA GESTIÓN DE
PAQUETES
La gestión del historial es útil cuando usted requiere conocer que
transacciones fueron ejecutadas con anterioridad, cuando usted quiere
revertir esas transacciones o cuando usted quiere repetir ciertas
transacciones, es muy útil según el escenario que esté manejando.
Transaction Summary
================================================================
==============
Remove 1 Package
Transaction Summary
================================================================
=========
Remove 1 Package
Freed space: 47 k
Is this ok [y/N]:
webmin-1.970-1.noarch.rpm 100%
[============================================>] 38.89M 3.90MB/s in 10s
Transaction Summary
================================================================
==================================
Install 2 Packages
Total size: 39 M
Total download size: 90 k
Installed size: 123 M
Is this ok [y/N]:
Con los siguientes apartes quiero evidenciar que usted puede gestionar
paquetes individuales con YUM, como se muestra a continuación:
[root@pruebas ~]# yum info webmin.noarch
Updating Subscription Management repositories.
Last metadata expiration check: 1:44:58 ago on Wed 24 Feb 2021 09:35:55 AM -05.
Installed Packages
Name : webmin
Version : 1.970
Release :1
Architecture : noarch
Size : 123 M
Source : webmin-1.970-1.src.rpm
Repository : @System
From repo : @commandline
Summary : A web-based administration interface for Unix systems.
License : Freeware
Description : A web-based administration interface for Unix systems. Using Webmin you
can
: configure DNS, Samba, NFS, local/remote filesystems and more using your
: web browser.
:
: After installation, enter the URL http://localhost:10000/ into your
: browser and login as root with your root password.
Transaction Summary
================================================================
==================================
Remove 2 Packages
# When following option is set to 1, then all repositories defined outside redhat.repo will
be disabled
# every time subscription-manager plugin is triggered by dnf or yum
disable_system_repos=0
Lo siguiente tiene que ver con las variables booleanas; siguiendo con el
ejemplo del servidor de archivos tendríamos que activar tres variables
booleanas para que el servidor de archivos funcione de manera apropiada;
estas variables booleanas están prendidas o apagadas (on/off). Para cambiar
el valor de una variable de forma permanente se hace lo siguiente:
# setsebool -P samba_export_all_rw on
# setsebool -P samba_export_all_ro
# setsebool -P samba_enable_home_dirs
[fmestre@pruebas ~]$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
__default__ user_u s0 *
root unconfined_u s0-s0:c0.c1023 *
__default__ user_u s0 *
fmestre user_u s0 *
root unconfined_u s0-s0:c0.c1023 *
[root@pruebas ~]# ll -Z
total 1039836
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0
0 Mar 3 12:05 pagina
[root@pruebas html]# ll -Z
total 0
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0
Mar 3 12:05 pagina
Se nos presenta entonces una de las líneas del archivo que nos indica que
podemos ejecutar el comando “sealert” para obtener información relacionada
con el intento de violación de la seguridad al servicio HTTP, tal como se
muestra a continuación:
If you believe that httpd should be allowed getattr access on the pagina file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -X 300 -i my-httpd.pp
Additional Information:
Source Context system_u:system_r:httpd_t:s0
Target Context unconfined_u:object_r:admin_home_t:s0
Target Objects /var/www/html/pagina [ file ]
Source httpd
Source Path httpd
Port <Unknown>
Host pruebas.aptivalabs
Source RPM Packages
Target RPM Packages
SELinux Policy RPM selinux-policy-targeted-3.14.3-54.el8_3.2.noarch
Local Policy RPM selinux-policy-targeted-3.14.3-54.el8_3.2.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name pruebas.aptivalabs
Platform Linux pruebas.aptivalabs
4.18.0-240.15.1.el8_3.x86_64 #1 SMP Wed Feb 3
03:12:15 EST 2021 x86_64 x86_64
Alert Count 2
First Seen 2021-03-03 12:06:18 -05
Last Seen 2021-03-03 12:06:18 -05
Local ID cde9337a-4e2e-4f47-81f6-284d7517ac81
Hash: httpd,httpd_t,admin_home_t,file,getattr
[root@pruebas html]#
FILTRADO DE PAQUETES CON
FIREWALLD
Garantizar la seguridad informática es una tarea esencial, en particular en
las empresas que procesan datos sensibles y manejan transacciones
comerciales. Desde la versión 7, Red Hat ha incorporado Firewalld como
aquel servicio que se comunica con el modulo del kernel (Netfilter) que hace
las funciones de filtrado de paquetes.
Así las cosas, Netfilter permite que los módulos del kernel inspeccionen
cada entrada, salida, o paquete reenviado y actuar sobre dicho paquete:
permitiéndolo o bloqueándolo, además, el firewall del kernel permite la
inspección de paquetes entrantes, salientes y paquetes que atraviesan de una
interfaz de red a otra si el servidor RHEL proporciona funcionalidad de
enrutamiento. En el pasado, “iptables” fue la solución predeterminada para
comunicarse con netfilter en el proceso de filtración de paquetes, sin
embargo, el servicio “iptables” no se ofrece en Red Hat Enterprise Linux 8,
se ha reemplazado con nftables, una versión con opciones más avanzadas
que las que ofrece iptables.
FIREWALLD, NFTABLES O IPTABLES
CONCEPTUALIZANDO A FIREWALLD
Una conexión en FirewalD solo puede ser parte de una zona, pero una
zona se puede utilizar para tratar con muchas conexiones de red.
[root@pruebas zones]# ll
total 44
-rw-r--r--. 1 root root 299 Aug 7 2020 block.xml
-rw-r--r--. 1 root root 293 Aug 7 2020 dmz.xml
-rw-r--r--. 1 root root 291 Aug 7 2020 drop.xml
-rw-r--r--. 1 root root 304 Aug 7 2020 external.xml
-rw-r--r--. 1 root root 397 Aug 7 2020 home.xml
-rw-r--r--. 1 root root 412 Aug 7 2020 internal.xml
-rw-r--r--. 1 root root 809 Nov 26 2019 libvirt.xml
-rw-r--r--. 1 root root 729 Jan 20 03:56 nm-shared.xml
-rw-r--r--. 1 root root 343 Aug 7 2020 public.xml
-rw-r--r--. 1 root root 162 Aug 7 2020 trusted.xml
-rw-r--r--. 1 root root 339 Aug 7 2020 work.xml
Significa esto por ejemplo que si usted declara como zona activa la zona
“block”, no podrá recibir peticiones al servicio SSH, servicio que si acepta
peticiones en la gran mayoría de zonas. De la siguiente forma usted podría
saber cual es la zona activa que FirewallD está usando por default:
Para destacar, se observa que la zona publica está filtrando los paquetes
que entran por la interfaz ens18, filtra los paquetes asociados con los
servicios cockpit, dhcpv6-client, ssh; filtra los paquetes al puerto 22220 en
protocolo TCP y no tiene otras reglas de filtrado adicionales. Usted podría
visualizar información individual para la zona activa de la siguiente forma:
[root@pruebas services]# ll
total 676
-rw-r--r--. 1 root root 737 Aug 7 2020 RH-Satellite-6.xml
-rw-r--r--. 1 root root 399 Aug 7 2020 amanda-client.xml
-rw-r--r--. 1 root root 427 Aug 7 2020 amanda-k5-client.xml
--- salida omitida ---
Para el caso que se aborda, solo cuando cambie la zona por default a
public o a alguna otra que reciba peticiones al servicio HTTP podrá tener
resultados satisfactorios.
FILTRANDO PAQUETES POR ORIGEN DE TRÁFICO
Si usted cree que su servidor está bajo algún tipo de ataque informático
FirewallD le permite resguardarlo colocando el firewall en modo pánico el
cual deshabilita todo el trafico de red hacia el servidor. Este procedimiento
debe ejecutarse en la consola física de su servidor para que una vez se
controle el ataque apagar el modo pánico y tener nuevamente conectividad
en la red.
Es importante mencionar que se debe nombrar los servicios tal como los
detecta FirewallD. Una cosa es como SystemD nombra al servicio y otra
como lo haga FirewallD; es el caso del servicio http, SystemD lo llama
“httpd” y FirewallD lo nombra “http”; si usted agrega la regla anterior
usando “httpd” la regla de FirewallD no va a funcionar. Cuando en las
reglas enriquecidas se usan los parámetros “source” y “destination” siempre
va a ser necesario agregar el parámetro “family=”.
type=NETFILTER_PKT msg=audit(1614870435.234:147):
mark=0x0 saddr=192.168.0.35 daddr=192.168.0.200 proto=6
AUDITORIA EN SISTEMAS LINUX
La auditoria a los sistemas Linux representa una gran oportunidad para
registrar los eventos relacionados con la seguridad del sistema. Estas
auditorias le permiten a un Administrador Linux monitorear el acceso a los
archivos que decida, a las llamadas del sistema (syscall), grabar comandos
ejecutados por un usuario, así como monitorear temas relacionados con el
firewall del sistema. Una de las herramientas que usaremos para realizar
labores de auditoría será “Audit”. Esta aplicación compara los eventos
registrados en el sistema con reglas que tiene previamente preestablecidas.
[root@pruebas audit]# ll
total 12
-rw-r-----. 1 root root 127 Jan 8 2020 audit-stop.rules
-rw-r-----. 1 root root 107 Dec 17 17:13 audit.rules
-rw-r-----. 1 root root 856 Jan 8 2020 auditd.conf
drwxr-x---. 2 root root 49 Dec 17 17:13 plugins.d
drwxr-x---. 2 root root 25 Dec 17 17:11 rules.d
type=PROCTITLE msg=audit(1614886599.538:116):
proctitle=636174002F6574632F7373682F737368645F636F6E666967
Para eliminar una regla temporal realizada con Autid mire las siguientes
instrucciones:
Si usted requiere que las reglas establecidas para Audit sean persistentes
debe insertarlas dentro del archivo /etc/audit/rules.d/audit.rules, sin ,
ubicación que se muestra como sigue:
[root@pruebas rules.d]# ll
total 4
-rw-------. 1 root root 244 Dec 17 17:11 audit.rules
-w /etc/passwd -p wa -k passwd_changes
-w /etc/selinux/ -p wa -k selinux_changes
-w /sbin/insmod -p x -k module_insertion
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k
time_change
REGLAS PRECONFIGURADAS EN AUDIT
[root@pruebas sample-rules]# ll
total 156
-rw-r--r--. 1 root root 244 Jan 8 2020 10-base-config.rules
-rw-r--r--. 1 root root 284 Jan 8 2020 10-no-audit.rules
-rw-r--r--. 1 root root 93 Jan 8 2020 11-loginuid.rules
-rw-r--r--. 1 root root 333 Jan 8 2020 12-cont-fail.rules
-rw-r--r--. 1 root root 327 Jan 8 2020 12-ignore-error.rules
--- salida omitida ---
[root@pruebas ssh]# ll
total 608
-rw-r--r--. 1 root root 577388 Mar 27 2020 moduli
-rw-r--r--. 1 root root 1770 Mar 27 2020 ssh_config
drwxr-xr-x. 2 root root 28 Dec 17 17:11 ssh_config.d
-rw-r-----. 1 root ssh_keys 480 Dec 17 17:22 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Dec 17 17:22 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys 387 Dec 17 17:22 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Dec 17 17:22 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 2578 Dec 17 17:22 ssh_host_rsa_key
-rw-r--r--. 1 root root 554 Dec 17 17:22 ssh_host_rsa_key.pub
-rw-------. 1 root root 4277 Feb 26 11:14 sshd-second_config
-rw-------. 1 root root 4269 Mar 27 2020 sshd_config
Banner /etc/issue
[root@pruebas motd.d]# ll
total 4
-rw-r--r--. 1 root root 36 Mar 5 10:06 aptivalabs
lrwxrwxrwx. 1 root root 17 Aug 20 2020 cockpit -> /run/cockpit/motd
lrwxrwxrwx. 1 root root 9 Mar 5 07:33 insights-client -> /dev/null
AUTENTICACIÓN POR LLAVES DE USUARIO
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/fabianmestresocarras/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/fabianmestresocarras/.ssh/id_rsa.
Your public key has been saved in /Users/fabianmestresocarras/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:R97jyJUH1cRV2+qwcLtPC9vnu2uYP+RvrMEwtSrLhk4
fabianmestresocarras@Usuarios-MacBook-Pro.local
The key's randomart image is:
+---[RSA 2048]----+
| .+*. |
| . =. |
| . . ... |
| o.+o |
| S + X +. |
| o*%. |
| E.+ * X. |
| ....o O *+. |
| ...o o.BXO |
+----[SHA256]-----+
$ ssh root@192.168.0.200
Web console: https://pruebas.aptivalabs:9090/ or https://192.168.0.200:9090/
[root@pruebas ~]#
[root@pruebas .ssh]# ll
total 4
-rw-------. 1 root root 429 Mar 5 10:46 authorized_keys
De esta forma este usuario tendrá acceso al servidor sin hacer uso de una
contraseña, registrándose directamente como usuario “root” en el servidor
remoto. Si el archivo “authorized_keys” es eliminado del sistema el servidor
Linux nuevamente solicitará contraseña para el ingreso.
En función de desactivar el ingreso de contraseñas, edite la línea en
“/etc/ssh/sshd_config” que permite la autenticación por contraseña,
asignándole el valor “no”, reinicie el servicio una vez finalizada la edición
del archivo, como se muestra a continuación:
PasswordAuthentication no
Port 5022
“AllowGroups ingenieria”
Es necesario hacer un reload del servicio para que los cambios surtan
efecto:
Debido a esto es que se usa la palabra montaje, por que se hace que
un sistema de archivos se monte sobre otro, en este caso un XFS nuevo
y asignado, montado sobre el filesystem que se eligió en el momento de
la instalación del sistema operativo.
#
# /etc/fstab
# Created by anaconda on Thu Dec 17 22:08:06 2020
--- salida omitida --
UUID="aa0f5e04-4355-4dc2-b540-bc3509ec8a2d" /datos xfs
defaults 0 0
En esta oportunidad se observa una sola partición como parte del espacio
de intercambio del sistema; iremos agregando a medida que se expliquen los
temas y esta lista irá creciendo.
#
# /etc/fstab
---salida omitida ---
/mnt/archivo-intercambio swap swap defaults 0 0
El proceso consiste en reservar una partición del sistema (en este caso
crearemos una nueva partición sobre /dev/sdb), declararla como partición de
intercambio y activarla, tal como se muestra a continuación:
#
# /etc/fstab
De la siguiente forma es posible listar los PV’s que tiene nuestro sistema:
Una vez declarados los PV’s es posible crear el volumen de grupo (VG),
como se detalla a continuación:
Como puede observar, el sistema Linux reconoce dos VG’s, uno llamado
“datos” y el otro llamado “rhel”, este ultimo corresponde a una estructura LV
que se creó cuando se instaló el sistema Linux. A continuación detallamos
únicamente el VG llamado “datos”:
En este caso podemos ver que cada disco de 50GiB tiene la capacidad de
guardar hasta 12799 PE, y solo el PV /dev/sdd tiene el campo “Allocated
PE” en 200, los PV’s /dev/sdc y /dev/sde tienen ese campo en 0, significa
que aun esos PV’s no han sido utilizados para guardar datos, por lo tanto
imagine que /dev/sdd es un disco que tiene problemas físicos, el sistema
Linux le permite mover esa data de ese PV (/dev/sdd) a otro PV del mismo
grupo de volúmenes, como se muestra a continuación:
De la misma forma, al listar los VG’s del sistema es posible ver que el
VG “datos” solo es alimentado por 2 PV’s:
Por ultimo eliminamos los PV’s que estaban asociados al VG, tal como
sigue:
Para verificar, se listan los LV’s, los VG’s y los PV’s del sistema, no
debe existir nada de lo previamente creado:
[root@pruebas /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log
Cpy%Sync Convert
root rhel -wi-ao---- <44.00g
swap rhel -wi-ao---- 5.00g
Una vez definido el LV tipo pool se crean los LV’s a partir del pool, en
este caso se crearán tres (LV’s) para guardar los datos de tres aplicaciones
distintas; el primer LV será de un tamaño virtual de 100 GiB:
Al listar los LV’s del sistema podemos ver que “app2”, “app3” y “app4”
son LV’s generados a partir del pool llamado “pool”, y ninguno de ellos está
consumiendo data:
/dev/sdc:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
--- salida omitida ---
Transaction Summary
=====================================================
Install 11 Packages
/dev/mapper/stratis-1-a39bc2b16a7a4fd1b728e0310704c02d-thin-fs-
713ad7cda3eb4d0288ca6993abc7efca: UUID="713ad7cd-a3eb-4d02-88ca-6993abc7efca"
BLOCK_SIZE="512" TYPE="xfs"
Se ha intentado instalar VDO sin embargo el sistema nos dice que las
herramientas ya están instaladas. Una de las formas que usted puede usar
para verificar si VDO está instalado en su sistema es preguntándole a
SystemD si tiene algo relacionado en sus unidades de servicio, como se
muestra a continuación:
Con la salida anterior podemos ver que SystemD tiene un servicio activo
llamado “vdo.service”, el cual, servicio que fue instalado con la instalación
del sistema. Se inicia entonces limpiando el dispositivo de bloque donde se
realizaran las acciones para luego crear el volumen de VDO llamado
“vdo1”:
[root@pruebas ~]# cp
/usr/share/doc/vdo/examples/systemd/VDO.mount.example
/etc/systemd/system/vdo1.mount
[Unit]
Description = Mount filesystem that lives on VDO
name = VDO.mount
Requires = vdo.service systemd-remount-fs.service
After = multi-user.target
Conflicts = umount.target
[Mount]
What = /dev/mapper/vdo1
Where = /vdo1
Type = xfs
Options = discard
[Install]
WantedBy = multi-user.target
Sin haber iniciado a utilizar esta funcionalidad, usted puede observar que
VDO está tomando 4.1G de espacio del almacenamiento. Observemos ahora
cuando se empiece a meter data en el punto de montaje del volumen de VDO
(/vdo1); crearemos un archivo de tamaño de 1G llamado “archivo” y lo
copiaremos a /vdo1, como se muestra a continuación:
[root@pruebas ~]# ll -h
total 1016M
-rw-------. 1 root root 1.3K Dec 17 17:21 anaconda-ks.cfg
-rw-r--r--. 1 root root 977M Mar 2 13:49 archivo
Lo que ha pasado es que VDO tomó nota de que así los archivos tengan
nombres distintos representan la misma información, lo que la hace
susceptible de eliminación del bloque zero, eliminación de la deduplicación
y compresión de bloque.
IMPLEMENTANDO EL SERVICIO NFS
En esta sección vamos a detallar como hace un sistema RHEL 8 para
acceder a recursos compartidos en red a través del protocolo NFS, esto nos
lleva a desplegar un servicio NFS en un sistema externo (usted lo verá en
este lab identificado como el host 192.168.0.46). Quisiera mencionar que
este despliegue del servicio NFS está planteado de forma básica, solo con la
intención de exportar un recurso para que los sistemas RHEL puedan
acceder a él. Iniciemos entonces con la instalación y configuración del
servicio en el host externo (en mi caso el 192.168.0.46):
Se crea la carpeta /datos, como carpeta que será compartida con el host
RHEL:
/datos *(rw)
Es momento de pasar a las actividades por parte del cliente NFS, en este
caso un host con RHEL 8 donde se realizarán montajes temporales y
permanentes del recurso compartido desde el host externo previamente
configurado como servidor NFS. Iniciamos entonces con el montaje
temporal, este tipo de montaje se pierde cuando el sistema se reinicia:
[root@s1 datos]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 Mar 2 14:39 1
Una forma de realizar montajes de NFS sin tener que realizar las
configuraciones anteriores resulta en usar AutoFS, para practicidad en la
explicación, usted simplemente se ubicará en un ruta del sistema y con eso
ya ha activado el montaje; se explica a continuación el procedimiento para
activar AutoFS en los sistemas RHEL:
Transaction Summary
================================================================
=========
Install 1 Package
Installed:
autofs-1:5.1.4-43.el8.x86_64
Complete!
[root@pruebas datos]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 Mar 2 14:39 1
Installed:
ansible-2.9.19-1.el8ae.noarch python3-babel-2.5.1-5.el8.noarch python3-
jinja2-2.10.1-2.el8_0.noarch
python3-jmespath-0.9.0-11.el8.noarch python3-markupsafe-0.23-19.el8.x86_64
sshpass-1.06-3.el8ae.x86_64
Complete!
Transaction Summary
================================================================
==================================
Is this ok [y/N]: y
Complete!
INVENTARIOS ESTATICOS
apache-spark-1.aptivalabs.net
apache-spark-2.aptivalabs.net
apache-spark-3.aptivalabs.net
postgresql.aptivalabs.net
192.168.0.54
[sparks]
apache-spark-1.aptivalabs.net
apache-spark-2.aptivalabs.net
apache-spark-3.aptivalabs.net
[webservers]
nginx1. aptivalabs.net
nginx2. aptivalabs.net
[basesdedatos]
db1. aptivalabs.net
db2. aptivalabs.net
[desarrollo]
192.168.0.201
[webservers]
nginx1. aptivalabs.net
nginx2. aptivalabs.net
[basesdedatos]
db1. aptivalabs.net
db2. aptivalabs.net
[servidores:children]
webservers
basesdedatos
[webservers]
nginx[1:2]. aptivalabs.net
192.168.0.201
192.168.0.46
[servidores]
192.168.0.201
192.168.0.46
--- salida omitida ---
De la siguiente forma podemos listar los grupos que hacen parte del
inventario:
[servidores]
192.168.0.201
192.168.0.46
./ansible.cfg
remote_user = root → El nombre del usuario para iniciar sesión en los hosts
administrados. Si no es especificado, se utiliza el nombre del usuario actual.
ask_pass = True → Si solicita o no una contraseña SSH. Puede ser falso si usa
autenticación de clave pública.
[privilege_escalation]
become_method = sudo
become_user= root
become_ask_pass = False
[servidores]
192.168.0.201
192.168.0.26
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = true
[root@bd1 deploy-manage]# cd ..
Los comandos ad hoc son útiles para pruebas y cambios rápidos. Por
ejemplo, puede utilizar un comando ad-hoc para asegurarse de que existe
una determinada línea en el archivo /etc/hosts. Usted podría usar otro
comando ad-hoc para reiniciar de manera eficiente un servicio en muchas
máquinas diferentes, o para asegurarse de que un paquete de software en
particular esté actualizado.
Ejemplo de uso:
A trivial test module, this module always returns `pong' on successful contact. It does not
make sense in playbooks, but it is useful from `/usr/bin/ansible' to verify the ability to login and
that a usable Python is configured. This is NOT ICMP ping, this is just a trivial test module that
requires Python on the remote-node. For Windows targets, use the [win_ping] module instead.
For Network targets, use the [net_ping] module instead.
CATEGORÍA MODULOS
copy: copia un archivo local en un host
administrado
file: establece permisos y propiedades sobre
Gestión de archivos
Archivos lineinfile: asegura que una línea esté o no en un
archivo
synchronize: sincroniza contenido usando
“rsync”
package: administración de paquetes
yum: administra paquetes usando yum
Gestión de apt: administra paquetes usando apt
Software dnf: administra paquetes usando dnf
gem: administra Ruby gems
pip: administra paquetes Python desde PyPI
firewalld: administra servicios y puetos con
FirewallD
Modulos del reboot: hace reboot en un host administrado
Sistema service: administra servicios en hosts
administrados
user: adiciona, remueve y administra usuarios
El siguiente comando adhoc nos permitirá hacer reboot en los nodos que
hagan parte del grupo CentOS:
Con el siguiente comando ad-hoc podemos reiniciar los hosts que hagan
parte del grupo “servidores”:
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
Una vez realizado estos pasos es posible utilizar el modulo “ping” para
comprobar la conectividad:
Para conocer los repositorios de los hosts que hacen parte del grupo
“servidores” se ejecuta la siguiente instrucción:
Para conocer las interfaces de red de los hosts que hacen parte del grupo
“servidores” se ejecuta la siguiente instrucción:
PLAY RECAP
*****************************************************************************
*********************
192.168.0.201 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
192.168.0.46 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
PLAY RECAP
*****************************************************************************
*********************
192.168.0.201 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
192.168.0.46 : ok=2 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
PLAY RECAP
*****************************************************************************
*********************
192.168.0.201 : ok=3 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
192.168.0.46 : ok=3 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
PLAY RECAP
*****************************************************************************
*********************
192.168.0.201 : ok=4 changed=2 unreachable=0 failed=1 skipped=0
rescued=0 ignored=0
192.168.0.46 : ok=4 changed=2 unreachable=0 failed=1 skipped=0
rescued=0 ignored=0
playbook: servicios.yml
PLAYBOOK: servicios.yml
*****************************************************************************
*************
Positional arguments: servicios.yml
--- salida omitida ---
ENSAYO DE PLAYBOOKS
TASK [reboot]
*****************************************************************************
****
changed: [192.168.0.201]
changed: [192.168.0.46]
PLAY RECAP
*****************************************************************************
****
192.168.0.46 : ok=3 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
192.168.0.201 : ok=3 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
IMPLEMENTANDO MULTIPLES PLAYS EN UN PLAYBOOK
---
- name: Primer Juego
hosts: 192.168.0.46
tasks:
- name: primera tarea
yum:
name: postfix
state: latest
PLAY RECAP
*****************************************************************************
*********************
192.168.0.201 : ok=3 changed=1 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
192.168.0.46 : ok=4 changed=2 unreachable=0 failed=0 skipped=0
rescued=0 ignored=0
Una vez presionada la letra “e” (edición), ubique la línea con la palabra
“linux” como primera palabra de una línea; desplácese hacia el final de esa
línea y agregue un espacio , como se muestra a continuación:
[root@pruebas 127.0.0.1-2021-02-20-09:53:46]# ll -h
total 172M
-rw-------. 1 root root 172M Feb 20 11:53 vmcore
-rw-r--r--. 1 root root 45K Feb 20 11:53 vmcore-dmesg.txt
[root@s1 ~]# ll
total 8
-rw-------. 1 root root 1279 Feb 15 10:15 anaconda-ks.cfg
-rw-r--r--. 1 root root 1566 Feb 15 10:17 initial-setup-ks.cfg
drwxr-x---. 2 root root 73 Feb 22 10:57 s1
[root@s1 s1]# ll -h
total 3.6G
-rw-------. 1 root root 202 Feb 22 10:57 README
-rw-------. 1 root root 274 Feb 22 10:57 VERSION
-rw-------. 1 root root 3.6G Feb 22 10:57 rear-s1.iso
-rw-------. 1 root root 967K Feb 22 10:57 rear-s1.log
Installed:
autogen-libopts-5.18.12-8.el8.x86_64
gnutls-dane-3.6.14-7.el8_3.x86_64
gnutls-utils-3.6.14-7.el8_3.x86_64
libvirt-6.0.0-28.module+el8.3.0+7827+5e65edd7.x86_64
libvirt-bash-completion-6.0.0-28.module+el8.3.0+7827+5e65edd7.x86_64
libvirt-client-6.0.0-28.module+el8.3.0+7827+5e65edd7.x86_64
libvirt-daemon-config-nwfilter-6.0.0-28.module+el8.3.0+7827+5e65edd7.x86_64
Complete!
Se hace necesario instalar las herramientas de comunicación con
“libvirt”, como sigue a continuación:
Installed:
hexedit-1.2.13-12.el8.x86_64
hivex-1.3.18-20.module+el8.3.0+6423+e4cb6418.x86_64
icoutils-0.32.3-2.el8.x86_64
libgovirt-0.3.7-3.el8.x86_64
libguestfs-1:1.40.2-25.module+el8.3.0+7421+642fe24f.x86_64
libguestfs-inspect-icons-1:1.40.2-25.module+el8.3.0+7421+642fe24f.noarch
libguestfs-tools-1:1.40.2-25.module+el8.3.0+7421+642fe24f.noarch
libguestfs-tools-c-1:1.40.2-25.module+el8.3.0+7421+642fe24f.x86_64
libguestfs-xfs-1:1.40.2-25.module+el8.3.0+7421+642fe24f.x86_64
netpbm-10.82.00-6.el8.x86_64
netpbm-progs-10.82.00-6.el8.x86_64
perl-Class-Inspector-1.32-2.el8.noarch
perl-Compress-Raw-Bzip2-2.081-1.el8.x86_64
perl-Compress-Raw-Zlib-2.081-1.el8.x86_64
perl-Data-Dump-1.23-7.module+el8.3.0+6498+9eecfe51.noarch
perl-Digest-HMAC-1.03-17.module+el8.3.0+6498+9eecfe51.noarch
perl-Digest-SHA-1:6.02-1.el8.x86_64
perl-Encode-Locale-1.05-10.module+el8.3.0+6498+9eecfe51.noarch
perl-File-Listing-6.04-17.module+el8.3.0+6498+9eecfe51.noarch
perl-File-ShareDir-1.104-3.el8.noarch
perl-HTML-Parser-3.72-15.module+el8.3.0+6498+9eecfe51.x86_64
perl-HTML-Tagset-3.20-34.module+el8.3.0+6498+9eecfe51.noarch
perl-HTTP-Cookies-6.04-2.module+el8.3.0+6498+9eecfe51.noarch
perl-HTTP-Date-6.02-19.module+el8.3.0+6498+9eecfe51.noarch
perl-HTTP-Message-6.18-1.module+el8.3.0+6498+9eecfe51.noarch
perl-HTTP-Negotiate-6.01-19.module+el8.3.0+6498+9eecfe51.noarch
perl-IO-Compress-2.081-1.el8.noarch
perl-IO-HTML-1.001-11.module+el8.3.0+6498+9eecfe51.noarch
perl-LWP-MediaTypes-6.02-15.module+el8.3.0+6498+9eecfe51.noarch
perl-NTLM-1.09-17.module+el8.3.0+6498+9eecfe51.noarch
perl-Net-HTTP-6.17-2.module+el8.3.0+6498+9eecfe51.noarch
perl-Sys-Guestfs-1:1.40.2-25.module+el8.3.0+7421+642fe24f.x86_64
perl-Sys-Virt-6.0.0-1.module+el8.3.0+6423+e4cb6418.x86_64
perl-TimeDate-1:2.30-15.module+el8.3.0+6498+9eecfe51.noarch
perl-Try-Tiny-0.30-7.module+el8.3.0+6498+9eecfe51.noarch
perl-WWW-RobotRules-6.02-18.module+el8.3.0+6498+9eecfe51.noarch
perl-hivex-1.3.18-20.module+el8.3.0+6423+e4cb6418.x86_64
perl-libintl-perl-1.29-2.el8.x86_64
perl-libwww-perl-6.34-1.module+el8.3.0+6498+9eecfe51.noarch
python3-argcomplete-1.9.3-6.el8.noarch
python3-libvirt-6.0.0-1.module+el8.3.0+6423+e4cb6418.x86_64
scrub-2.5.2-14.el8.x86_64
supermin-5.1.19-10.module+el8.3.0+6423+e4cb6418.x86_64
syslinux-6.04-4.el8.x86_64
syslinux-extlinux-6.04-4.el8.x86_64
syslinux-extlinux-nonlinux-6.04-4.el8.noarch
syslinux-nonlinux-6.04-4.el8.noarch
virt-install-2.2.1-3.el8.noarch
virt-manager-2.2.1-3.el8.noarch
virt-manager-common-2.2.1-3.el8.noarch
virt-top-1.0.8-32.el8.x86_64
virt-viewer-9.0-4.el8.x86_64
Installed:
nginx-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
nginx-all-modules-1:1.14.1-9.module+el8.0.0+4108+af250afe.noarch
nginx-filesystem-1:1.14.1-9.module+el8.0.0+4108+af250afe.noarch
nginx-mod-http-image-filter-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
nginx-mod-http-perl-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
nginx-mod-http-xslt-filter-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
nginx-mod-mail-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
nginx-mod-stream-1:1.14.1-9.module+el8.0.0+4108+af250afe.x86_64
[root@pruebas html]# ll
total 24
-rw-r--r--. 1 root root 3971 Aug 30 2019 404.html
-rw-r--r--. 1 root root 4020 Aug 30 2019 50x.html
-rw-r--r--. 1 root root 4057 Aug 30 2019 index.html
-rw-r--r--. 1 root root 368 Aug 30 2019 nginx-logo.png
-rw-r--r--. 1 root root 4148 Aug 30 2019 poweredby.png
Para configurar el servicio “nginx” utilice el archivo
/etc/nginx/nginx.conf:
server {
server_name w1.aptivalabs.net;
root /w1;
access_log /var/log/nginx/w1/access.log;
error_log /var/log/nginx/w1/error.log;
}
server {
server_name w2.aptivalabs.net;
root /w2;
access_log /var/log/nginx/w2/access.log;
error_log /var/log/nginx/w2/error.log;
}
server {
server_name w3.aptivalabs.net;
root /w3;
access_log /var/log/nginx/w3/access.log;
error_log /var/log/nginx/w3/error.log;
}
Puede configurar el servidor web NGINX para que actúe como un proxy
inverso para el tráfico HTTP. Usted puede utilizar esta funcionalidad para
reenviar solicitudes a un subdirectorio específico en un servidor remoto, el
cliente asume que carga el contenido desde el host al que accede, sin
embargo, el servicio “nginx” carga el contenido real del servidor remoto y lo
reenvía al cliente.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
#location / {
#}
location /test {
proxy_pass http://192.168.1.202/test.html;
}
error_page 404 /404.html;
location = /40x.html {
}
192.168.1.201 = balanceador
192.168.1.202 = servidor del grupo
192.168.1.203 = servidor del grupo
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream loadbalancer.aptivalabs.net {
least_conn;
server 192.168.1.202;
server 192.168.1.203;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
#location / {
#}
location / {
proxy_pass http://loadbalancer.aptivalabs.net;
}
upstream loadbalancer.aptivalabs.net {
least_conn;
server 192.168.1.202;
server 192.168.1.203;
}
location / {
proxy_pass http://loadbalancer.aptivalabs.net;
}
Características:
listen 80 default_server;
listen [::]:80 default_server;
#server_name _;
#server_name loadbalancer.aptivalabs.net;
#root /usr/share/nginx/html;
location / {
}
inst.ks=http://192.168.0.200/ks.cfg
Es todo lo que tendrá necesidad de hacer; si tiene una USB podrá pasar a
otra instalación.
La siguiente imagen muestra el procedimiento anteriormente explicado:
La instalación empezará de forma automática sin necesidad de que usted
esté al tanto de ella, como se muestra en la siguiente imagen:
IMPLEMENTANDO UN SERVIDOR DE
ARCHIVOS CON SAMBA
Samba implementa el protocolo Server Message Block (SMB) en RHEL.
Este protocolo se utiliza para acceder a los recursos de un servidor como
archivos e impresoras compartidas. El despliegue de un servidor SMB como
Samba implica según corresponda algunos de los servicios que Samba tiene
asociados, como lo son el “smbd”, el “nmbd” y el “winbind”.
Transaction Summary
================================================================
========
Install 3 Packages
Installed:
samba-4.12.3-14.el8_3.x86_64 samba-common-tools-4.12.3-14.el8_3.x86_64 samba-libs-
4.12.3-14.el8_3.x86_64
workgroup = WORKGROUP
interfaces = lo ens18
host allow = 127. 192.168.0.
security = user
passdb backend = tdbsam
[tesoreria]
comment = Grupo Tesorería
path = /datos/tesoreria
writable = yes
valid users = @tesoreria
[rrhh]
comment = Grupo RRHH
path = /datos/rrhh
writable = yes
valid users = @rrhh
Lo que se manifiesta en este caso son dos recursos, una llamado
“tesoreria” y otro llamado “rrhh”, los cuales estarán permitidos unicay
exclusivamente a los grupos correspondientes, los cuales se escriben con el
caractér “@”. Tenga presente que cada usuario creado, en este caso “t1” y
“r1” tendrán una carpeta en /home donde podrán guardar información que
solo ellos podrán ver y manipular.
username=t1
password=123456
Transaction Summary
==================================================================================================================
Install 6 Packages
Installed:
samba-common-tools-4.12.3-14.el8_3.x86_64 samba-libs-4.12.3-14.el8_3.x86_64
samba-winbind-4.12.3-14.el8_3.x86_64 samba-winbind-clients-4.12.3-14.el8_3.x86_64
samba-winbind-krb5-locator-4.12.3-14.el8_3.x86_64 samba-winbind-modules-4.12.3-14.el8_3.x86_64
Transaction Summary
================================================================
================================
Install 1 Package
Installed:
samba-4.12.3-14.el8_3.x86_64
Complete!
[root@loadbalancer samba]# ll
total 20
-rw-r--r--. 1 root root 20 Dec 4 13:04 lmhosts
-rw-r--r--. 1 root root 706 Dec 4 13:04 smb.conf
-rw-r--r--. 1 root root 11327 Dec 4 13:04 smb.conf.example
[root@loadbalancer samba]# ll
total 20
-rw-r--r--. 1 root root 20 Dec 4 13:04 lmhosts
-rw-r--r--. 1 root root 11327 Dec 4 13:04 smb.conf.example
-rw-r--r--. 1 root root 706 Dec 4 13:04 smb.conf.original
Name:ad1.aptivalabs.net
Address: 192.168.1.200
[AD1\administrator@loadbalancer ~]$ id
uid=10000(AD1\administrator) gid=10000(AD1\none)
groups=10000(AD1\none)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[AD1\administrator@loadbalancer ~]$ exit
[root@loadbalancer ~]# ll
total 12
-rw-------. 1 root root 28 Mar 24 16:35 credenciales.smb
[root@loadbalancer ~]# ll
total 12
-rw-------. 1 APTIVALABS\administrator APTIVALABS\domain users 28 Mar 24 16:35
credenciales.smb
IMPLEMENTANDO UN RELAY DE
CORREO CON POSTFIX Y GMAIL
En muchas ocasiones se hace necesario que un servidor Linux pueda
notificar los eventos que ocurren en el sistema a través del correo
electrónico; algunas empresas han adquirido la consola de Gmail con su
gestor empresarial de cuentas de correo electrónico y preferirían utilizar este
servicio para el envío de notificaciones de sus servidores. En este ejercicio
se explica como utilizar un servicio local (Postfix) de correo para que en su
integración Gmail los servidores Linux puedan realizar el envío de correo
electrónico de forma segura.
Complete!
#smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
#smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
#smtpd_tls_security_level = may
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
#smtp_tls_security_level = may
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
En una segunda consola usted podrá validar que los correos estén
saliendo de manera efectiva hasta smtp.gmail.com:587, como se muestra:
Transaction Summary
================================================================
=========
Install 1 Package
Total size: 22 k
Installed size: 32 k
Is this ok [y/N]: y
--- salida omitida ---
Transaction Summary
================================================================
=========
Install 1 Package
Installed:
libpq-12.5-1.el8_3.x86_64 postgresql-10.15-
1.module+el8.3.0+8944+1ca16b1f.x86_64
postgresql-server-10.15-1.module+el8.3.0+8944+1ca16b1f.x86_64
Complete!
Se verifican los procesos del sistema para validar que el servicio esté
ejecutándose:
postgres=# \q
[postgres@bd1 ~]$ exit
logout
POSTGRESQL – CREACIÓN DE BASE DE DATOS Y VOLCADO
test=# select
table_name,column_name,udt_name,character_maximum_length from
information_schema.columns where table_name = 'usuarios';
table_name | column_name | udt_name |
character_maximum_length
------------+-------------+----------+--------------------------
usuarios | nombre | varchar | 30
usuarios | clave | varchar | 10
(2 rows)
test=# \q
SET statement_timeout = 0;
SET lock_timeout = 0;
--- salida omitida ---
EJERCICIO DE RESTAURACIÓN DE BASE DE DATOS
Una vez finalizada la restauración se verifica que las tablas hayan sido
creadas, como se muestra a continuación:
empresa=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------------+----------+----------
public | cartera | table | postgres
public | ciudades | table | postgres
public | departamentos| table | postgres
public | barrios | table | postgres
--- salida omitida ---
CONSULTAS DE METADATA EN POSTGRESQL
[root@bd2 yum.repos.d]# ll
total 104
-rw-r--r--. 1 root root 9738 Sep 24 2020 pgdg-redhat-all.repo
-rw-r--r--. 1 root root 94154 Mar 26 13:05 redhat.repo
postgres=# \q
[postgres@bd2 ~]$ exit
logout
Installed:
cockpit-session-recording-4-2.el8.noarch
[admin-backups@bd2 ~]$
container-tools rhel8 [d][e] common [ Most recent (rolling) versions of podman, buildah,
skopeo, runc, conmon, runc, conmon,
d] CRIU, Udica, etc as well as dependencies such as container-selinux
built and tested tog
ether, and updated as frequently as every 12 weeks.
container-tools 1.0 common [ Stable versions of podman 1.0, buildah 1.5, skopeo
0.1, runc, conmon, CRIU, Udica, etc
d] as well as dependencies such as container-selinux built and tested
together, and suppor
ted for 24 months.
container-tools 2.0 common [ Stable versions of podman 1.6, buildah 1.11, skopeo
0.1, runc, conmon, etc as well as d
d] ependencies such as container-selinux built and tested together, and
supported as docum
ented on the Application Stream lifecycle page.
Transaction Summary
===========================================================
Install 6 Packages
Usage:
podman [options] [command]
Available Commands:
attach Attach to a running container
auto-update Auto update containers according to their auto-update policy
build Build an image using instructions from Containerfiles
commit Create new image based on the changed container
container Manage containers
cp Copy files/folders between a container and the local filesystem
create Create but do not start a container
--- salida omitida ---