viernes, 21 de mayo de 2021

ELK, Elastic Stack en tu ambiente GNU/Linux Ubuntu Server 20.04

 Vamos desde el inicio, ¿Que ....... es ELK?

 

Una imagen dice mas que mil palabras. 


 ELK es el nombre que se le da al stack de soluciones de elastic pare referir a los proyectos open source Elasticsearch, Logstash y Kibana.

 En pocas palabras sin demeritar el excelente trabajo que a realizado los integrantes de este proyecto Elasticsearch es un motor de búsqueda y analítica.

Logstash es un pipeline de procesamiento de datos del lado del servidor que ingesta datos de una multitud de fuentes simultáneamente, los transforma y luego los envía a  Elasticsearch.

Kibana permite a usuarios visualizar los datos en gráficos con Elasticsearch.

Todo esto gracias al motor de búsqueda de código abierto distribuido RESTful, basado en JSON. esto ayuda en mucho a ser menos complejo de utilizar, totalmente escalable y súper flexible. por estos atributos inicio a tener mucha popularidad hasta el día de hoy de ser una de las tecnologías para manejo, analítica y visualización de datos muy popular entre los usuarios, compañías y departamentos de IT.


¡Cuando algo es bueno, muchos queremos aprenderlo y usarlo!

Logstash + Kibana sumaron funcionalidades que el stack necesitaba, mejoraron con el paso del tiempo, los usuarios lo estudiaron, aprendieron y creció su popularidad por una sencilla razón ¡funciona!, soy usuario, en mi particular opinión, hace lo que esta diseñada para hacer y con conocimientos, ganas e interés puedes lograr desarrollar una plataforma de recolección de datos, alarmas, Monitoreo, dando cumplimiento a la gestión de activos, gestión de consulta de información, gestión de monitoreo incluso con el desarrollo adecuado gestión de incidentes con ijntegraci9ones a terceros. Ahora con la integración de Beat que prácticamente recolecta información a nivel performance de equipos, servidores, desktop no dudo que muchos como nosotros lo estén aplicando para sistemas de monitoreo de performance (Monitoreo de CPU, Memoria, Red, procesos, Disponibilidad por ICMP).

ahora iniciemos la instalación de este excelente stack. (para que veas que no es ciencia de la nasa "tu sabes quien eres")

Si partimos de "no tengo ni idea de como puedo iniciar" amigo estas en problemas, hay ciertos conocimientos de IT / Sistemas / Computación o como le digas a rama de estudio de informática en tu país que si o si tienes que saber previo a meterte en el juego de ELK.

Recomendación

Para ti amigo amante de IT, es necesario que tengas en mente que esto no es excel y puedes usarlo de forma empírica, necesitas que botón presionar en el avión para que no lo estrelles.

Ayudaría mucho que comprendieras o trabajas con un tiempo de aproximadamente 1 a 2 años con sistemas operativos Linux, distribuciones como Ubuntu Server, Centos (RIP), Red Hat Enterprise Server ayudaran mucho a tu camino. 

Conocimiento basicos (de menos) en  RESTful, Json y SQL- en el mejor de los escenarios conocimientos medios de Os Linux, Json, Programación, SQL, ETL, BigData. esto ayuda un mucho. 

Requerimientos de ambiente

  • Un servidor de Ubuntu 20.04, con Mínimo 4 GB de RAM y 2 CPU configuradas con un usuario sudo no root. 

    Ten en cuenta que la cantidad de CPU, RAM y almacenamiento que su servidor de Elasticsearch requiera dependerá del volumen de registros que prevé.

  • OpenJDK 11 instalado. 

  • Nginx instalado en su servidor, Para configurar, siga esta guía 



    Instalación del primer modulo de ELK

    Después de instalar tu Ubuntu Server y actualizar toda tu distribución, tomando en cuenta los pre requerimientos previos mencionados, continuamos con la instalación del producto. Usaremos Curl para importar la clave GPG pública de Elasticsearch a APT

    curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

continuaremos  agregando a lista de fuentes de Elastic al directorio sources.list.d, donde APT buscará nuevas fuentes:

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
 

Actualizamos la lista de paquetes de APT

sudo apt update

Continuaremos por instalar elasticsearch con el siguiente comando.

sudo apt install elasticsearch

Ahora que esta  instalado utilizaremos el editor vi para modificar el archivi .yml

sudo vi /etc/elasticsearch/elasticsearch.yml

elasticsearch.yml ofrece opciones de configuración para clúster, nodo, rutas, memoria, red, detección y puerta de enlace. La mayoría de estas opciones están preconfiguradas en el archivo, pero las puede cambiar según sus necesidades.  Elasticsearch escucha todo el tráfico de todo origen por pyuerto 9200. Es recomendable restringir el acceso externo a su instancia de Elasticsearch para evitar que terceros lean sus datos o cierren su clúster de Elasticsearch.

en el archivo /etc/elasticsearch/elasticsearch.yml

ve a network.host y configuralo para localhost con esto podemos iniciar elasticsearch con el siguiente comando desde terminar.

sudo systemctl start elasticsearch

Ahora si tienes intenciones que tu instancia inicie cuando el servidor se reinicie por alguna actualización o razon ejecuta el siguiente comando para declrar que inicie automaticamente.

sudo systemctl enable elasticsearch

Para validar que el modulo se encunetra en ejecución puedes correr el siguiente comando.

curl -X GET "localhost:9200"

Instalación de Kibana

Para su instalación ejecutamos el siguiente comando

sudo apt install kibana

Para indicarle al sistema que inicie kibana cuando el equipo se reinicie ejecutamos el siguiente comando

sudo systemctl enable kibana
 

Iniciamos el servicio de Kibana con el siguiente comando.

sudo systemctl start kibana

Ahora ya tenemos nuestro segundo modulo de ELK, pero por seguridad requiere autenticación para acceso autorizado. 

para espesificar un usuario y password puede ejecutar el siguiente comando

echo "usuario:`openssl passwd mipassworddekibana" | sudo tee -a /etc/nginx/htpasswd.users

echo "oposada:`openssl passwd Temporal.2021`" | sudo tee -a /etc/nginx/htpasswd.users

 

Ahora crearemos el sitio para que el web service lo identifique y envie las configuraciones previamente creadas.
 
sudo vi /etc/nginx/sites-available/your_domain

server {
    listen 80;

    server_name your_domain;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

 

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

Reiniciamos nginx

sudo nginx -t

Ejecutamos el reload de nginx

sudo systemctl reload nginx

Permitimos que firewall de servidor permita el trafico 

sudo ufw allow 'Nginx Full'

Validamos que este corriendo el status en nuestro navegador

http://your_domain/status


### Video de ejemplo ####


 

viernes, 14 de mayo de 2021

Administración de Sistemas Operativos LInux | Como modificar el mensaje de bienvenidda por Secure Shell

Cuando administramos Sistemas operativos Linux es muy común encontrar mensajes de bienvenidas al acceder a un servidor, equipo o dispositivo con GNU/Linux. Pensaras que tendria que ser algo complejo cambiar esto, pero nada que ver, tan simple como colocar el mensaje que requieras en un archivo con la rula /etc/motd y podemos cambiar de esto que ya esta pre definido 

oposada@NTSRV023:~$ ssh oposada@10.50.32.23
oposada@192.168.0.133's password:
Linux elastic.oposada.mx 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri May 14 08:58:06 2020 from oposada.srv075
oposada@elastic:~ $


a algo como esto


oposada@NTSRV023:~$ ssh oposada@10.50.32.23

oposada@10.50.32.23's password:
Linux elastic.oposada.mx 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64
                                                                 #####
                                                                #######
                   #                                            ##O#O##
  ######          ###                                           #VVVVV#
    ##             #                                          ##  VVV  ##
    ##         ###    ### ####   ###    ###  ##### #####     #          ##
    ##        #  ##    ###    ##  ##     ##    ##   ##      #            ##
    ##       #   ##    ##     ##  ##     ##      ###        #            ###
    ##          ###    ##     ##  ##     ##      ###       QQ#           ##Q
    ##       # ###     ##     ##  ##     ##     ## ##    QQQQQQ#       #QQQQQQ
    ##      ## ### #   ##     ##  ###   ###    ##   ##   QQQQQQQ#     #QQQQQQQ
  ############  ###   ####   ####   #### ### ##### #####   QQQQQ#######QQQQQ
------------------------------------------------------------------ ELK STACK
Last login: Fri May 14 09:31:04 2021 from
oposada.srv075

oposada@elastic:~ $

Esto posible con la edición del archivo motd contenido en el directorio /etc, para esta modificación no es necesario reiniciar ningún demonio, es prácticamente en vivo.

jueves, 13 de mayo de 2021

Cómo instalar Elasticsearch, Logstash y Kibana (Elastic Stack) en Debian GNU/Linux 10 (primera parte)

¿Qué es Elasticsearch?


Elasticsearch es un motor de analítica y análisis distribuido, gratuito y abierto para todos los tipos de datos, incluidos textuales, numéricos, geoespaciales, estructurados y no estructurados. Elasticsearch está desarrollado a partir de Apache Lucene y fue presentado por primera vez en 2010 por Elasticsearch N.V. (ahora conocido como Elastic). Conocido por sus API REST simples, naturaleza distribuida, velocidad y escalabilidad, Elasticsearch es el componente principal del Elastic Stack, un conjunto de herramientas gratuitas y abiertas para la ingesta, el enriquecimiento, el almacenamiento, el análisis y la visualización de datos. Comúnmente denominado el ELK Stack (por Elasticsearch, Logstash y Kibana), el Elastic Stack ahora incluye una gran colección de agentes ligeros conocidos como Beats para enviar los datos a Elasticsearch.


¿Para qué se usa Elasticsearch?


La velocidad y escalabilidad de Elasticsearch y su capacidad de indexar muchos tipos de contenido significan que puede usarse para una variedad de casos de uso:
  • Búsqueda de aplicaciones
  • Búsqueda de sitio web
  • Búsqueda Empresarial
  • Logging y analíticas de log
  • Métricas de infraestructura y monitoreo de contenedores
  • Monitoreo de rendimiento de aplicaciones
  • Análisis y visualización de datos geoespaciales
  • Analítica de Seguridad
  • Analítica de Negocios

¿Cómo funciona Elasticsearch?
Los datos sin procesar fluyen hacia Elasticsearch desde una variedad de fuentes, incluidos logs, métricas de sistema y aplicaciones web. La ingesta de datos es el proceso mediante el cual estos datos son parseados, normalizados y enriquecidos antes de su indexación en Elasticsearch. Una vez indexados en Elasticsearch, los usuarios pueden ejecutar consultas complejas sobre sus datos y usar agregaciones para recuperar resúmenes complejos de sus datos. Desde Kibana, los usuarios crean visualizaciones poderosas de sus datos, comparten dashboards y gestionan el Elastic Stack.

¿Qué es un índice de Elasticsearch?

Un índice de Elasticsearch es una colección de documentos relacionados entre sí. Elasticsearch almacena datos como documentos JSON. Cada documento correlaciona un conjunto de claves (nombres de campos o propiedades) con sus valores correspondientes (textos, números, Booleanos, fechas, variedades de valores, geolocalizaciones u otros tipos de datos).


Elasticsearch usar una estructura de datos llamada índice invertido, que está diseñado para permitir búsquedas de texto completo muy rápidas. Un índice invertido hace una lista de cada palabra única que aparece en cualquier documento e identifica todos los documentos en que ocurre cada palabra.

Durante el proceso de indexación, Elasticsearch almacena documentos y construye un índice invertido para poder buscar datos en el documento casi en tiempo real. La indexación comienza con la API de índice, a través de la cual puedes agregar o actualizar un documento JSON en un índice específico.
¿Para qué se usa Logstash?
Logstash, uno de los productos principales del Elastic Stack, se usa para agregar y procesar datos y enviarlos a Elasticsearch. Logstash es una pipeline de procesamiento de datos open source y del lado del servidor que te permite ingestar datos de múltiples fuentes simultáneamente y enriquecerlos y transformarlos antes de que se indexen en Elasticsearch.

¿Para qué se usa Kibana?


Kibana es una herramienta de visualización y gestión de datos para Elasticsearch que brinda histogramas en tiempo real, gráficos circulares y mapas. Kibana también incluye aplicaciones avanzadas, como Canvas, que permite a los usuarios crear infografías dinámicas personalizadas con base en sus datos, y Elastic Maps para visualizar los datos geoespaciales.


¿Por qué usar Elasticsearch?


Elasticsearch es rápido. Como Elasticsearch está desarrollado sobre Lucene, es excelente en la búsqueda de texto completo. Elasticsearch también es una plataforma de búsqueda en casi tiempo real, lo que implica que la latencia entre el momento en que se indexa un documento hasta el momento en que se puede buscar en él es muy breve: típicamente, un segundo. Como resultado, Elasticsearch está bien preparado para casos de uso con restricciones de tiempo como analítica de seguridad y monitoreo de infraestructura.

Elasticsearch es distribuido por naturaleza. Los documentos almacenados en Elasticsearch se distribuyen en distintos contenedores conocidos como shards, que están duplicados para brindar copias redundantes de los datos en caso de que falle el hardware. La naturaleza distribuida de Elasticsearch le permite escalar horizontalmente a cientos (o incluso miles) de servidores y gestionar petabytes de datos.

Elasticsearch viene con un amplio conjunto de características. Además de su velocidad, la escalabilidad y la resistencia, Elasticsearch tiene una cantidad de características integradas poderosas que contribuyen a que el almacenamiento y la búsqueda de datos sean incluso más eficientes, como data rollup y gestión de ciclo de vida del índice.

El Elastic Stack simplifica la ingesta de datos, la visualización y el reporte. La integración con Beats y Logstash facilita el proceso de datos antes de indexarlos en Elasticsearch. Y Kibana provee visualización en tiempo real de los datos de Elasticsearch así como UI para acceder rápidamente al monitoreo de rendimiento de aplicaciones (APM), los logs y los datos de métricas de infraestructura.
¿Qué lenguajes de programación soporta Elasticsearch?


Elasticsearch soporta una variedad de lenguajes y hay clientes oficiales para los siguientes:
Java
JavaScript (Node.js)
Go
.NET (C#)
PHP
Perl
Python
Ruby

Fuente: https://www.elastic.co/


Instalación

Arquitectura a montar Elastic Stack en ambiente fisico con recursos minimos

CPU Atom 1.0 ghz

4GB RAM DDR3 1200

500GB SSD

ETH0

WLAN

Os Debian GNU/Linux 10
 

Módulos del Stack

Elastic Stack cuenta con cuatro componentes principales:
Elasticsearch: motor de búsqueda de RESTfuldistribuido que almacena todos los datos recopilados.
Logstash: componente de procesamiento de datos de Elastic Stack que envía datos entrantes a Elasticsearch.
Kibana: interfaz web para buscar y visualizar registros.
Beats: transportadores de datos ligeros de uso único que pueden enviar datos de cientos o miles de máquinas a Logstash o Elasticsearch.

Preparando entono

Primero agregaremos un usuario a nivel Os el cual nos ayudará a tener mejor control y administración de recursos segun su rol, para ello ejecutaremos el comando en terminal
 

pi@elastic:~ $ sudo adduser oposada
Adding user `oposada' ...
Adding new group `oposada' (1001) ...
Adding new user `oposada' (1001) with group `oposada' ...
Creating home directory `/home/oposada' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for oposada
Enter the new value, or press ENTER for the default
Full Name []: Oscar Omar Posada Sanchez
Room Number []: 23
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
pi@elastic:~ $


Segundo, salir del usuario actual y acceder con el usuario ya previamente creado para iniciar con los modulos.

pi@elastic:~ $ exit
logout
Connection to 192.168.0.133 closed.
oposada@NTSRV023:~$ ssh oposada@192.168.0.133
oposada@192.168.0.133's password:
Linux elastic.oposada.mx 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
oposada@elastic:~ $



Como notara, ya tiene un mensaje de bienvenida cuando nos firmamos por SSH, ya en ocaciones pasadas publique como editar este mensaje por lo que no tocaremos este tema en este momento.

Iniciamos validando que el Linux Debian se encuentre totalmente actualizado.


sudo apt install update && sudo apt install upgrade -y

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for oposada:
oposada is not in the sudoers file. This incident will be reported.


Cuando creamos el usuario con el cual trabajaremos la gestión del sistema operativo y la administración de nuestra stack de elastic, kibana y el resto de los modulos no entregamos permisoso para super usuario, para esto es requerido que definamos este rol de ejecución.

Para esto es requerido firmarnos con un usuario el cual pueda editar con el siguiente comando la linea

pi@elastic:~ $ sudo visudo


y buscar y colocar la linea con el usuario seguido de los permisos, en este laboratorio su servidor coloco su usuario el cual previamente creo a nivel sistema operativo y entrego todos los permisos para ejecición. En negritas la linea que se agrego al archivo de configuración visudo.


# User privilege specification
root ALL=(ALL:ALL) ALL
oposada ALL=(ALL:ALL) ALL



Regreso al usuario y confirmo con la ejecución de comandos con sudo


oposada@elastic:~ $ sudo apt-get update && sudo apt-get upgrade -y
Hit:1 http://ftp.debian.org/debian buster InRelease
Hit:2 http://archive.raspberrypi.org/debian buster InRelease
Hit:3 http://security.debian.org buster/updates InRelease
Hit:4 http://ftp.debian.org/debian buster-updates InRelease
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
linux-image-amd64:amd64
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
oposada@elastic:~ $


Con esto configurado a nivel sistema operativo ya tenemos el rol adecuado para poder iniciar a instalar los paquetes necesarios para ejecutar el stack.

Firewall

Todo ambiente en producción cuenta con el firewall cal / acl / lista blanca / etc, por esto es buena practica tratar de utilizar el ambiente lo mas apegado a producción posible, bajo este esquema instalaremos el firewall a sistema operativo Linux Debian con el cual permiteremos el trafico de entrada a cierto puerto en concreto, evitando todo el resto del trafico incluuido respuesta por ICMP.+

oposada@elastic:~ $ sudo apt install ufw
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
ufw
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 164 kB of archives.
After this operation, 852 kB of additional disk space will be used.
Get:1 http://ftp.debian.org/debian buster/main i386 ufw all 0.36-1 [164 kB]
Fetched 164 kB in 0s (658 kB/s)
Preconfiguring packages ...
Selecting previously unselected package ufw.
(Reading database ... 161602 files and directories currently installed.)
Preparing to unpack .../archives/ufw_0.36-1_all.deb ...
Unpacking ufw (0.36-1) ...
Setting up ufw (0.36-1) ...

Creating config file /etc/ufw/before.rules with new version

Creating config file /etc/ufw/before6.rules with new version

Creating config file /etc/ufw/after.rules with new version

Creating config file /etc/ufw/after6.rules with new version
Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service -> /lib/system
d/system/ufw.service.
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for rsyslog (8.1901.0-1) ...
Processing triggers for systemd (241-7~deb10u7) ...
oposada@elastic:~ $ sudo ufw status
Status: inactive


Permitimos el acceso remoto mediante ssh con el comando

sudo ufw allow openssh

Instalación de requerimientos previos a stack elastic


oposada@elastic:~ $ sudo apt update
Hit:1 http://security.debian.org buster/updates InRelease
Hit:2 http://ftp.debian.org/debian buster InRelease
Get:3 http://archive.raspberrypi.org/debian buster InRelease [32.9 kB]
Hit:4 http://ftp.debian.org/debian buster-updates InRelease
Get:5 http://archive.raspberrypi.org/debian buster/main amd64 Packages [196 kB]
Fetched 229 kB in 3s (65.8 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
oposada@elastic:~ $ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
oposada@elastic:~ $ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
oposada@elastic:~ $ sudo apt install default-jre
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
default-jre-headless
The following NEW packages will be installed:
default-jre default-jre-headless
0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 11.9 kB of archives.
After this operation, 26.6 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.debian.org/debian buster/main i386 default-jre-headless i386 2:1.11-71 [10.9 kB]
Get:2 http://ftp.debian.org/debian buster/main i386 default-jre i386 2:1.11-71 [1,044 B]
Fetched 11.9 kB in 0s (56.0 kB/s)
Selecting previously unselected package default-jre-headless.
(Reading database ... 161710 files and directories currently installed.)
Preparing to unpack .../default-jre-headless_2%3a1.11-71_i386.deb ...
Unpacking default-jre-headless (2:1.11-71) ...
Selecting previously unselected package default-jre.
Preparing to unpack .../default-jre_2%3a1.11-71_i386.deb ...
Unpacking default-jre (2:1.11-71) ...
Setting up default-jre-headless (2:1.11-71) ...
Setting up default-jre (2:1.11-71) ...
oposada@elastic:~ $ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-post-Debian-1deb10u1)
OpenJDK Server VM (build 11.0.11+9-post-Debian-1deb10u1, mixed mode, sharing)
oposada@elastic:~ $ sudo apt install default-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
default-jdk-headless
The following NEW packages will be installed:
default-jdk default-jdk-headless
0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 2,160 B of archives.
After this operation, 12.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.debian.org/debian buster/main i386 default-jdk-headless i386 2:1.11-71 [1,104 B]
Get:2 http://ftp.debian.org/debian buster/main i386 default-jdk i386 2:1.11-71 [1,056 B]
Fetched 2,160 B in 1s (3,797 B/s)
Selecting previously unselected package default-jdk-headless.
(Reading database ... 161715 files and directories currently installed.)
Preparing to unpack .../default-jdk-headless_2%3a1.11-71_i386.deb ...
Unpacking default-jdk-headless (2:1.11-71) ...
Selecting previously unselected package default-jdk.
Preparing to unpack .../default-jdk_2%3a1.11-71_i386.deb ...
Unpacking default-jdk (2:1.11-71) ...
Setting up default-jdk-headless (2:1.11-71) ...
Setting up default-jdk (2:1.11-71) ...
oposada@elastic:~ $ javac -version

javac 11.0.11

Con ello tenemos paquetes basicos para poder ejecutar nuestro ambiente sin problemas o dependencias.

para continuar damos paso a nginx el cual tendra el rol de aplicación web server, la instalación es mediante la ejecución de los siguientes comandos.

oposada@elastic:~ $ sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libnginx-mod-http-auth-pam libnginx-mod-http-dav-ext libnginx-mod-http-echo
libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-subs-filter libnginx-mod-http-upstream-fair
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx-common
nginx-full
Suggested packages:
fcgiwrap nginx-doc
The following NEW packages will be installed:
libnginx-mod-http-auth-pam libnginx-mod-http-dav-ext libnginx-mod-http-echo
libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-subs-filter libnginx-mod-http-upstream-fair
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx
nginx-common nginx-full
0 upgraded, 13 newly installed, 0 to remove and 1 not upgraded.
Need to get 1,809 kB of archives.
After this operation, 3,306 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.debian.org/debian buster/main i386 nginx-common all 1.14.2-2+deb10u3 [121 kB]
Get:2 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-auth-pam i386 1.14.2-2+deb10u3 [92.9 kB]
Get:3 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-dav-ext i386 1.14.2-2+deb10u3 [101 kB]
Get:4 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-echo i386 1.14.2-2+deb10u3 [105 kB]
Get:5 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-geoip i386 1.14.2-2+deb10u3 [94.3 kB]
Get:6 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-image-filter i386 1.14.2-2+deb10u3 [97.9 kB]
Get:7 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-subs-filter i386 1.14.2-2+deb10u3 [96.2 kB]
Get:8 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-upstream-fair i386 1.14.2-2+deb10u3 [96.3 kB]
Get:9 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-xslt-filter i386 1.14.2-2+deb10u3 [96.3 kB]
Get:10 http://ftp.debian.org/debian buster/main i386 libnginx-mod-mail i386 1.14.2-2+deb10u3 [127 kB]
Get:11 http://ftp.debian.org/debian buster/main i386 libnginx-mod-stream i386 1.14.2-2+deb10u3 [153 kB]
Get:12 http://ftp.debian.org/debian buster/main i386 nginx-full i386 1.14.2-2+deb10u3 [539 kB]
Get:13 http://ftp.debian.org/debian buster/main i386 nginx all 1.14.2-2+deb10u3 [88.4 kB]
Fetched 1,809 kB in 3s (621 kB/s)
Preconfiguring packages ...
Selecting previously unselected package nginx-common.
(Reading database ... 161717 files and directories currently installed.)
Preparing to unpack .../00-nginx-common_1.14.2-2+deb10u3_all.deb ...
Unpacking nginx-common (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-auth-pam.
Preparing to unpack .../01-libnginx-mod-http-auth-pam_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-auth-pam (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-dav-ext.
Preparing to unpack .../02-libnginx-mod-http-dav-ext_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-dav-ext (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-echo.
Preparing to unpack .../03-libnginx-mod-http-echo_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-echo (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-geoip.
Preparing to unpack .../04-libnginx-mod-http-geoip_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-geoip (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-image-filter.
Preparing to unpack .../05-libnginx-mod-http-image-filter_1.14.2-2+deb10u3_i386.deb ..
.
Unpacking libnginx-mod-http-image-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-subs-filter.
Preparing to unpack .../06-libnginx-mod-http-subs-filter_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-subs-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-upstream-fair.
Preparing to unpack .../07-libnginx-mod-http-upstream-fair_1.14.2-2+deb10u3_i386.deb .
..
Unpacking libnginx-mod-http-upstream-fair (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-xslt-filter.
Preparing to unpack .../08-libnginx-mod-http-xslt-filter_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-xslt-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-mail.
Preparing to unpack .../09-libnginx-mod-mail_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-mail (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-stream.
Preparing to unpack .../10-libnginx-mod-stream_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-stream (1.14.2-2+deb10u3) ...
Selecting previously unselected package nginx-full.
Preparing to unpack .../11-nginx-full_1.14.2-2+deb10u3_i386.deb ...
Unpacking nginx-full (1.14.2-2+deb10u3) ...
Selecting previously unselected package nginx.
Preparing to unpack .../12-nginx_1.14.2-2+deb10u3_all.deb ...
Unpacking nginx (1.14.2-2+deb10u3) ...
Setting up nginx-common (1.14.2-2+deb10u3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service -> /lib/syst
emd/system/nginx.service.
Setting up libnginx-mod-http-xslt-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-auth-pam (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-geoip (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-echo (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-subs-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-dav-ext (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-mail (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-image-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-stream (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-upstream-fair (1.14.2-2+deb10u3) ...
Setting up nginx-full (1.14.2-2+deb10u3) ...
Setting up nginx (1.14.2-2+deb
oposada@elastic:~ $ sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libnginx-mod-http-auth-pam libnginx-mod-http-dav-ext libnginx-mod-http-echo
libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-subs-filter libnginx-mod-http-upstream-fair
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx-common
nginx-full
Suggested packages:
fcgiwrap nginx-doc
The following NEW packages will be installed:
libnginx-mod-http-auth-pam libnginx-mod-http-dav-ext libnginx-mod-http-echo
libnginx-mod-http-geoip libnginx-mod-http-image-filter
libnginx-mod-http-subs-filter libnginx-mod-http-upstream-fair
libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream nginx
nginx-common nginx-full
0 upgraded, 13 newly installed, 0 to remove and 1 not upgraded.
Need to get 1,809 kB of archives.
After this operation, 3,306 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.debian.org/debian buster/main i386 nginx-common all 1.14.2-2+deb10u3 [121 kB]
Get:2 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-auth-pam i386 1.14.2-2+deb10u3 [92.9 kB]
Get:3 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-dav-ext i386 1.14.2-2+deb10u3 [101 kB]
Get:4 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-echo i386 1.14.2-2+deb10u3 [105 kB]
Get:5 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-geoip i386 1.14.2-2+deb10u3 [94.3 kB]
Get:6 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-image-filter i386 1.14.2-2+deb10u3 [97.9 kB]
Get:7 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-subs-filter i386 1.14.2-2+deb10u3 [96.2 kB]
Get:8 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-upstream-fair i386 1.14.2-2+deb10u3 [96.3 kB]
Get:9 http://ftp.debian.org/debian buster/main i386 libnginx-mod-http-xslt-filter i386 1.14.2-2+deb10u3 [96.3 kB]
Get:10 http://ftp.debian.org/debian buster/main i386 libnginx-mod-mail i386 1.14.2-2+deb10u3 [127 kB]
Get:11 http://ftp.debian.org/debian buster/main i386 libnginx-mod-stream i386 1.14.2-2+deb10u3 [153 kB]
Get:12 http://ftp.debian.org/debian buster/main i386 nginx-full i386 1.14.2-2+deb10u3 [539 kB]
Get:13 http://ftp.debian.org/debian buster/main i386 nginx all 1.14.2-2+deb10u3 [88.4 kB]
Fetched 1,809 kB in 3s (621 kB/s)
Preconfiguring packages ...
Selecting previously unselected package nginx-common.
(Reading database ... 161717 files and directories currently installed.)
Preparing to unpack .../00-nginx-common_1.14.2-2+deb10u3_all.deb ...
Unpacking nginx-common (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-auth-pam.
Preparing to unpack .../01-libnginx-mod-http-auth-pam_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-auth-pam (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-dav-ext.
Preparing to unpack .../02-libnginx-mod-http-dav-ext_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-dav-ext (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-echo.
Preparing to unpack .../03-libnginx-mod-http-echo_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-echo (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-geoip.
Preparing to unpack .../04-libnginx-mod-http-geoip_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-geoip (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-image-filter.
Preparing to unpack .../05-libnginx-mod-http-image-filter_1.14.2-2+deb10u3_i386.deb ..
.
Unpacking libnginx-mod-http-image-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-subs-filter.
Preparing to unpack .../06-libnginx-mod-http-subs-filter_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-subs-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-upstream-fair.
Preparing to unpack .../07-libnginx-mod-http-upstream-fair_1.14.2-2+deb10u3_i386.deb .
..
Unpacking libnginx-mod-http-upstream-fair (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-http-xslt-filter.
Preparing to unpack .../08-libnginx-mod-http-xslt-filter_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-http-xslt-filter (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-mail.
Preparing to unpack .../09-libnginx-mod-mail_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-mail (1.14.2-2+deb10u3) ...
Selecting previously unselected package libnginx-mod-stream.
Preparing to unpack .../10-libnginx-mod-stream_1.14.2-2+deb10u3_i386.deb ...
Unpacking libnginx-mod-stream (1.14.2-2+deb10u3) ...
Selecting previously unselected package nginx-full.
Preparing to unpack .../11-nginx-full_1.14.2-2+deb10u3_i386.deb ...
Unpacking nginx-full (1.14.2-2+deb10u3) ...
Selecting previously unselected package nginx.
Preparing to unpack .../12-nginx_1.14.2-2+deb10u3_all.deb ...
Unpacking nginx (1.14.2-2+deb10u3) ...
Setting up nginx-common (1.14.2-2+deb10u3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service -> /lib/syst
emd/system/nginx.service.
Setting up libnginx-mod-http-xslt-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-auth-pam (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-geoip (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-echo (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-subs-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-dav-ext (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-mail (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-image-filter (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-stream (1.14.2-2+deb10u3) ...
Setting up libnginx-mod-http-upstream-fair (1.14.2-2+deb10u3) ...
Setting up nginx-full (1.14.2-2+deb10u3) ...
Setting up nginx (1.14.2-2+deb10u3) ...
Processing triggers for systemd (241-7~deb10u7) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for ufw (0.36-1) ...
Rules updated for profile 'OpenSSH'
Skipped reloading firewall
oposada@elastic:~ $
10u3) ...
Processing triggers for systemd (241-7~deb10u7) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for ufw (0.36-1) ...
Rules updated for profile 'OpenSSH'
Skipped reloading firewall
oposada@elastic:~ $


Validamos que a nivel firewall se encuentre las reglas adecuadas para el trafico

oposada@elastic:~ $ sudo ufw app list | grep Nginx
Nginx Full
Nginx HTTP
Nginx HTTPS
oposada@elastic:~ $


Con esto ya tenemos nuestro web server el cual aloja nuestro stack, ahora validaremos que nuestro web server se encuentra en estatus de ok y running


oposada@elastic:~ $ systemctl status nginx
* nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-05-13 02:03:09 CDT; 2min 55s ago
Docs: man:nginx(8)
Main PID: 4704 (nginx)
Tasks: 5 (limit: 2312)
Memory: 5.9M
CGroup: /system.slice/nginx.service
|-4704 nginx: master process /usr/sbin/nginx -g daemon on; master_process o
|-4705 nginx: worker process
|-4706 nginx: worker process
|-4707 nginx: worker process
`-4708 nginx: worker process



Listo, nuestro web server funciona, Otra validación que podemos ejecutar es mandar el comando curl con la concatenación -4 y hostname de nuestro ambiente, en mi particular ambiente tengo como resultado la siguiente salida estandar.


oposada@elastic:~ $ curl -4 elastic.oposada.mx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
oposada@elastic:~ $

Esto nos indica que el web server esta ok vista funcional a nivel sistema operativo, procedo a agregar en firewall las consultas permitidas por http en IPv4 y IPv6

oposada@elastic:~ $ sudo ufw allow 'Nginx HTTP'
Rule added
Rule added (v6)
oposada@elastic:~ $

Con ello podemos ir a nuestro navegador y consultar la web con la url





Este post continuara...