Diferencia entre revisiones de «FESOL/201801/especializacion»

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar
(Proyectos)
 
(No se muestran 64 ediciones intermedias de 5 usuarios)
Línea 54: Línea 54:
  
 
===1.3 Configuración de Repositorios de Debian ===
 
===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 [https://debian-handbook.info/browse/es-ES/stable/sect.release-lifecycle.html ciclo de vida de debian] y las [https://debian-handbook.info/browse/es-ES/stable/apt.html 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:
 +
 +
#[[recetas/libreoffice| Suite de Oficina Libreoffice 6.0]]
 +
#[[recetas/wpsoffice| Suite de Oficina WPS]]
 +
#[[recetas/flashplugin| Plugin de Flash para Firefox]]
 +
#[[recetas/oraclejava| Java JRE Oracle]]
 +
#[[recetas/chromeweb| Navegador Web Chrome Google ]]
 +
#[[https://linuxconfig.org/how-to-install-latest-firefox-browser-on-debian-9-stretch-linux]| [recetas/firefox| Navegador web Firefox Quantum]]
 +
#[[recetas/operaweb| 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 [https://www.digitalocean.com/community/tutorials/how-to-customize-your-bash-prompt-on-a-linux-vps Personalizar el prompt] pueden usar el sitio [http://ezprompt.net/]
 +
 +
 +
#[[comandos/basicos| Comandos Básicos]]
 +
#[[comandos/intermedio| Comandos Intermedios]]
 +
#[[comandos/avanzado| Comandos Avanzado]]
 +
 +
=== 1.5 Expresiones Regulares ===
 +
#[[regex/introduccion| Introducción]]
 +
#[[regex/tablameta| Tabla con los Metacaracteres]]
 +
#[[regex/ejemplos| Ejemplos ]]
 +
#[[regex/ejercicios| Ejercicios 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/
 +
 +
<pre>
 +
# ┌───────────── 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
 +
</pre>
 +
 +
 +
# 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:
 +
 +
{| class="wikitable"
 +
|-
 +
!Entrada
 +
!Descripción
 +
!Equialente a
 +
|-
 +
|<code>@yearly (o @annually)</code>
 +
|Ejecutar cada año  media noche el 1 de enero
 +
|<code>0 0 1 1  *</code>
 +
|-
 +
|<code>@monthly</code>
 +
|Ejecutar una vez al mes a media noche el primer día del mes
 +
|<code>0 0 1 * * </code>
 +
|-
 +
|<code>@weekly</code>
 +
|Ejecutar una vez a la semana a media noche el domingo temprano
 +
|<code>0 0 * * 0 </code>
 +
|-
 +
|<code>@daily</code>
 +
|Ejecutar cada día a media noche
 +
|<code>0 0 * * *</code>
 +
|-
 +
|<code>@hourly</code>
 +
|Ejecutar cada hora al inicio de la hora
 +
|<code>0 * * * *</code>
 +
|-
 +
|<code>@reboot</code>
 +
|Ejecutar al arranque
 +
|N/A
 +
|}
 +
 +
Referencias:
 +
* https://blog.desdelinux.net/cron-crontab-explicados/
 +
* https://en.wikipedia.org/wiki/Cron
 +
 
==2. Redes ==
 
==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.
 +
#[[comandos/red| Comandos 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 ====
  
  
==3. Servicios ==
+
=== Servidor DHCP ===
 +
==== dnsmasq ====
 +
==== isc-dhcpd ====
 +
=== Servidor LDAP ===
 +
http://somebooks.es/12-5-que-es-openldap/
 +
 
 +
https://juanjoselo.wordpress.com/2017/10/29/instalacion-y-configuracion-de-ldap-en-debian-stretch-con-directorio-ldap-basico/
 +
 
 +
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:
 +
# [https://es.wikipedia.org/wiki/Koha| Koha]  : Sistema para la gestión de bibliotecas
 +
# [https://kanboard.org/| kanboard] : Sofware para la gestión de proyecto parecido a trello
 +
# [https://es.wikipedia.org/wiki/GLPi| GLPi] : Sistema para la gestión de tecnología.
 +
# [https://bookedscheduler.com/| booked] : Sistema para la reserva de equipos.
 +
# [https://netbox.readthedocs.io/en/latest/| netbox] [https://github.com/cvicente/Netdot/blob/master/doc/manual/netdot-manual-es.txt| netdot] : Sistemas para la documentación de red.
 +
# [https://nextcloud.com/| nextcloud] : Sistema de almacenamiento en una nube local al estilo de dropbox, google drive.
 +
# [https://es.wikipedia.org/wiki/Open-source_Ticket_Request_System| 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 ==
 
==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]]

Revisión actual del 19:30 16 jul 2018

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

Comparación Proceso de Arranque BIOS-EFI
Proceso de Arranque BIOS
  1. Se enciende la computadora
  2. La energía eléctrica llega al CPU y pone el número hexadecimal F000 en uno el registros del CPU contador del programa
  3. 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).
  4. 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.
  5. El control del arranque lo toma el dispositivo de arranque configurado.
  6. En el caso de que sea un disco duro, este carga en memoria principal los primero 512 bytes para iniciar el arranque.
  7. 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.
  8. 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.
  9. 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.
  10. Cuando el kerlnel toma el control inicia el primero proceso init ( con ID del proceso 1)
  11. El proceso init toma el control iniciando servicios de la computadora.


Referencias

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:

  1. Instalación de debian con configuración de RAID (Mínimo tres discos físcos).
  2. Instalación de debian con particion cifrada.
  3. Archivo:Particionlvm.pdf.
  4. Configurar una clave de acceso al grub
  5. Instalación de multiples Sistemas Operativos con UEFI.
  6. 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:

  1. Suite de Oficina Libreoffice 6.0
  2. Suite de Oficina WPS
  3. Plugin de Flash para Firefox
  4. Java JRE Oracle
  5. Navegador Web Chrome Google
  6. [[1]| [recetas/firefox| Navegador web Firefox Quantum]]
  7. 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. Comandos Básicos
  2. Comandos Intermedios
  3. Comandos Avanzado

1.5 Expresiones Regulares

  1. Introducción
  2. Tabla con los Metacaracteres
  3. Ejemplos
  4. Ejercicios 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.

  1. Comandos 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://juanjoselo.wordpress.com/2017/10/29/instalacion-y-configuracion-de-ldap-en-debian-stretch-con-directorio-ldap-basico/

https://debian-handbook.info/browse/stable/sect.ldap-directory.html


Servidor Apache2

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:

  1. Koha  : Sistema para la gestión de bibliotecas
  2. kanboard : Sofware para la gestión de proyecto parecido a trello
  3. GLPi : Sistema para la gestión de tecnología.
  4. booked : Sistema para la reserva de equipos.
  5. netbox netdot : Sistemas para la documentación de red.
  6. nextcloud : Sistema de almacenamiento en una nube local al estilo de dropbox, google drive.
  7. otrs : Sistema de tickets de incidencias.

Base de Datos

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/

Balanceo de Carga


Servidores de Correo

4. Seguridad

Proyectos

Ejemplo de proyecto