FESOL/201801/especializacion
Esta es la sección para documentar implementaciones en el curso de especialización de administración de servidores.
1. Introducción a GNU/Linux
1.1 Introducción a GNU/Linux
Para introducir el tema, Jesús David da una buena Introducción a la administración de GNU/Linux, es un buen sitio para empezar. Luego procederemos a describir el sistema de arranque de una computadora, y por consiguiente tambien de nuestro sistema Debian GNU/Linux.
Proceso de arranque de una Computadora
- Se enciende la computadora
- La energía eléctrica llega al CPU y pone el número hexadecimal F000 en uno el registros del CPU contador del programa
- El CPU busca en esa dirección de memoria la siguiente instrucción el F000 es un dirección ubicada en una memoria flash de la tarjeta madre (BIOS).
- Se inicia el proceso POST
- La BIOS verifica 64K de RAM (CMOS) que la batería de la placa madre ha amtenido viva
- La BIOS y el CPU se auto verifican para revisar si estan funcionando bien; lo compara con resultados almacenados en memoria permanente.
- La BIOS carga en memoria los controladores de dispositivos y manejadores de interrupciones de cosas básicas como el mouse teclado disco duro etc.
- El CPU verifica el contador y el reloj de tiempo real responsable de establecer la señal de sincronización.
- El BIOS le dice al CPU que envíe seales a los buses del sistema para verificar que estan funcionando bien.
- El proceso POST verifica los controladores de video para poder mostrar algo en pantalla.
- El BIOS se cerciora de que sea un arranque en frío para realizar las demás verificaciones; en caso de que se un arranque en caliente (reinicio) se salta las demás verificaciones.
- Si es un arranque en frío verifica que la memoria RAM este funcionando bien, comparando valores almacenados y leidos de la memoria.
- El POST envía señales a los diferentes dispositivos de arranque configurados.
- El control del arranque lo toma el dispositivo de arranque configurado.
- En el caso de que sea un disco duro, este carga en memoria principal los primero 512 bytes para iniciar el arranque.
- En lo sistemas BIOS, en el inicio del disco se almacena el MBR que es el registro principal de las opciones de arranque y es donde se encuentra la tabla de particiones.
- Si el sistema de arranque es mas grande que el espacio en el MBR, éste solo guarda una referencia a la dirección de la siguiente instrucción a ejecutar.
- En sistemas GNU/Linux el sistema que se carga el gestor de arranque GRUB o LILO
- Cuando el grub es cargado muestra un menú con las opciones del kernel a cargar y las particiones donde se encuentran. Habitualmente el menú del grub esta guardado en la carpeta /boor/grub/grub.cfg .
- El Grub inicia el proceso de cargar el kernel en memoria, habitualmente es un archivo compreso del kerlnel initrd que se usa temporalmente para poder montar el sistema de ficheros raiz y todas sus dependencias.
- Cuando el kerlnel toma el control inicia el primero proceso init ( con ID del proceso 1)
- El proceso init toma el control iniciando servicios de la computadora.
Referencias
- https://www.thegeekstuff.com/2011/02/linux-boot-process/
- https://www.ibm.com/developerworks/library/l-linuxboot/
- https://opensource.com/article/18/1/analyzing-linux-boot-process
1.2 Instalación personalizada de debian GNU/Linux
El proceso de instalación de debian, esta documentado en el debian-handbook y la sección esta en: Proceso de instalación debian handbook
Ejemplos de instalaciones de Debian en una Maquina Virtual con Virtual box con las siguientes características:
- Instalación de debian con configuración de RAID (Mínimo tres discos físcos).
- Instalación de debian con particion cifrada.
- Archivo:Particionlvm.pdf.
- Configurar una clave de acceso al grub
- Instalación de multiples Sistemas Operativos con UEFI.
- Recuperar la clave de root de un sistema GNU/Linux (Al menos dos formas)
1.3 Configuración de Repositorios de Debian
La configuración de las fuentes de software es una de las partes mas importantes, pero antes de configurarlas debemos tener en cuenta el ciclo de vida de debian y las herramientas de instalación que tenemos disponibles en debian.
Para leer un poco sobre la configuración, pueden ver el apartado Recetas/repositorio
Guias de instalación en debian Stretch de:
- Suite de Oficina Libreoffice 6.0
- Suite de Oficina WPS
- Plugin de Flash para Firefox
- Java JRE Oracle
- Navegador Web Chrome Google
- [[1]| [recetas/firefox| Navegador web Firefox Quantum]]
- Navegador web Opera
1.4 La interfaz de linea de comandos
Pueden encontrar un listado de comandos en Comandos_GNU.
Si quieren cambiar los colores del prompt pueden ver este manual Personalizar el prompt pueden usar el sitio [2]
1.5 Expresiones Regulares
1.6 Tareas Programadas con cron
El nombre cron viene del griego chronos que significa “tiempo”. En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab.
Archivos y directorios de cron:
- /etc/crontab
- /var/spool/cron
- /etc/cron.d/
- /etc/cron.daily/
- /etc/cron.hourly/
- /etc/cron.monthly/
- /etc/cron.weekly/
- /etc/
# ┌───────────── Minutos (0 - 59) # │ ┌───────────── Hora (0 - 23) # │ │ ┌───────────── Dia de Mes (1 - 31) # │ │ │ ┌───────────── Mes (1 - 12) # │ │ │ │ ┌───────────── Dia de semana (0 - 6) (Domingo a Sábado; # │ │ │ │ │ 7 también es domingo en algunos sistemas) # │ │ │ │ │ # │ │ │ │ │ # * * * * * comando a ejecutar
# m h dom mon dow user command # Minuto Hora Dia-Mes Mes Dia-Semana Usuario Comando */1 * * * * root /root/cron_root.sh
Tambien pueden usarl el comando:
crontab -e
Para agregar alguna tarea.
Definiciones de programaciones no estandares
Algunas implementaciones de cron soportan los siguientes macros no estandares:
Entrada | Descripción | Equialente a |
---|---|---|
@yearly (o @annually)
|
Ejecutar cada año media noche el 1 de enero | 0 0 1 1 *
|
@monthly
|
Ejecutar una vez al mes a media noche el primer día del mes | 0 0 1 * *
|
@weekly
|
Ejecutar una vez a la semana a media noche el domingo temprano | 0 0 * * 0
|
@daily
|
Ejecutar cada día a media noche | 0 0 * * *
|
@hourly
|
Ejecutar cada hora al inicio de la hora | 0 * * * *
|
@reboot
|
Ejecutar al arranque | N/A |
Referencias:
2. Redes
2.1 Comandos de Red
Antes de poder continuar, es necesario tener una lista de comandos que se utilizar para verificar y modificar algunos aspectos de las interfaces de red.
3. Servicios
Servidor DNS
ZeroConf
https://wiki.debian.org/ZeroConf https://wiki.archlinux.org/index.php/avahi#Hostname_resolution https://albertomolina.wordpress.com/2008/07/07/utilizando-mdns-en-una-red-local/ https://help.ubuntu.com/community/HowToZeroconf9
bind
dnsmasq
Servidor DHCP
dnsmasq
isc-dhcpd
Servidor LDAP
http://somebooks.es/12-5-que-es-openldap/
https://debian-handbook.info/browse/stable/sect.ldap-directory.html
Servidor Apache2
- recetas/apacheinicial : Instalación de apache2 y cnfiguración de restriccion por IP.
- recetas/apachessl : Configuración de SSL en apache2.
- recetas/apachevirtualhosts : Instalación de apache2 y cnfiguración de restriccion por IP.
- recetas/apachephpbasico : Ejecutar aplicaciones con apache, php, mysql básico.
- recetas/apacheauth : Configurar apache con directorios protegidos con usuario y clave
- recetas/apacheauthldap : Configurar apache con directorios protegidos con usuario y clave autenticando contra un LDAP.
- recetas/nginxinicial : Instalación de nginx.
- recetas/nginxphp : Configuración de nginx con php7.
Archivo:Laboratorio-servidor-web-apache.pdf
https://letsencrypt.org/ https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04 https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-debian-8 https://www.digitalocean.com/community/questions/installing-and-setting-nginx-and-php https://www.digitalocean.com/community/tags/apache?type=tutorials https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-16-04 https://debian-handbook.info/browse/stable/sect.http-web-server.html https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-debian-8
Listado de aplicaciones:
- Koha : Sistema para la gestión de bibliotecas
- kanboard : Sofware para la gestión de proyecto parecido a trello
- GLPi : Sistema para la gestión de tecnología.
- booked : Sistema para la reserva de equipos.
- netbox netdot : Sistemas para la documentación de red.
- nextcloud : Sistema de almacenamiento en una nube local al estilo de dropbox, google drive.
- otrs : Sistema de tickets de incidencias.
Base de Datos
- recetas/mariadbbasico : Gestor de base de datos MariaDB básico.
- recetas/postgresqlbasico : Gestor de base de datos PostgreSQL básico.
- recetas/mongodb : Gestor de base de datos mongodb básico.
- recetas/cassandra : Gestor de base de datos cassandra básico.
- recetas/sqlite : Gestor de base de datos SQLite básico.
- Openstack Trove
Respaldo
- MariaDB
- PostgreSQL
Replicación
MariaDB
https://www.digitalocean.com/community/tutorials/how-to-configure-a-galera-cluster-with-mariadb-10-1-on-ubuntu-16-04-servers https://www.linode.com/docs/databases/mariadb/set-up-mariadb-clusters-with-galera-debian-and-ubuntu/
PostgreSQL
https://www.postgresql.org/docs/9.6/static/high-availability.html https://severalnines.com/blog/top-pg-clustering-ha-solutions-postgresql https://www.howtoforge.com/tutorial/how-to-set-up-master-slave-replication-for-postgresql-96-on-ubuntu-1604/
- recetas/postgresqlreplicacion : Servicio de postgresql maestro-escalvo
Balanceo de Carga
- Mariadb haproxy https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing--3
- Mariadb maxscale https://linoxide.com/cluster/configure-mariadb-maxscale-galera-cluster/
- PostgreSQL pgpool https://www.keyup.eu/en/blog/89-replication-and-load-balancing-with-postgresql-and-pgpool2
Servidores de Correo
- Manual de configuración paso a paso: https://workaround.org/ispmail/stretch
- Semi automatizado con iredmail https://www.iredmail.org/
- Con servicio de webhosting ISPconfig https://www.ispconfig.org/
4. Seguridad
Proyectos
Ejemplo de proyecto
- FESOL/201801/especializacion/proyectos/ejemplo
- FESOL/201801/especializacion/proyectos/Intranet
- FESOL/201801/especializacion/proyectos/Sistema de Gestion Documental con Mecanismo de Respaldo
- FESOL/201801/especializacion/proyectos/prueba
- FESOL/201801/Especializacion/proyectos/Intranet
- FESOL/201801/Especializacion/proyectos/Planta Telefonica
- FESOL/201801/Especializacion/proyectos/Planta Telefonica con Asterisk