viernes, 4 de junio de 2021

Ubuntu 20.04.2 LTS | Actualizar y instalar NGINX de forma automatica en script automatico

Tras estar esta semana estudiando los temas de Os Ubuntu 20.04.2 LTS cuando uno de los colegas me preguntaba si en escribir los comandos en terminar concatenados podriamos hacer que se instalara de forma automatica el servicio de web server, pensando en que no tenemos opciones de instalar docker y hacer desplieges a la viaje escuela es por ello que comparto este sencillo script  que para los que inician en este mundo de IT se den una idea de como poder iniciar a penzar en la automatización de una forma practica y muy descritiva.

 

Programa

#!/bin/bash
# Inicio de programa
echo "actualizando completamente sistema operativo"
echo "por favor coloca contraseña de super usuario"
sudo apt-get update && sudo apt-get -y dist-upgrade
echo " Instalando servicio de FireWall"
sudo apt install ufw
sudo apt update -y
sudo apt install default-jre -y
sudo apt install default-jdk -y
echo "Instalación de WebService nginx"
sudo apt install nginx -y
echo "Muestra la lista de Firewall permitidos de web server"
 sudo ufw app list | grep Nginx
echo "Inicia servicios de Web Server"
systemctl status nginx
sudo ufw allow 'Nginx HTTP'
echo "Instalación de Nginx concluida"
# Fin de programa

 

 Video de ejemplo de su ejecución y resultados.  


 

martes, 1 de junio de 2021

ELK | Elasticsearch, Logstash y Kibana en Ubuntu 21.04 ¿funciona a su reciente liberación?


Como saben el pasado 22 de abril de 2021 Canonical lanzó Ubuntu 21.04 con integración nativa de Microsoft Active Directory, gráficos Wayland de forma predeterminada y un SDK de desarrollo de aplicaciones Flutter. Por separado, Canonical y Microsoft anunciaron la optimización del rendimiento y el soporte conjunto para Microsoft SQL Server en Ubuntu, esta ultima una excelente noticia para los amantes del sistema operativo Ubuntu para entornos profesionales.

La integración nativa de Active Directory y Microsoft SQL Server certificado en Ubuntu son las principales prioridades indico Mark Shuttleworth, director ejecutivo de Canonical.

Aun no se encuentra como una versión LTS, pero la pregunta que me lanzo uno de mis sobrinos fue ¿y por que no instalamos la ultima versión para probar su estabilidad y optimización de recursos que indica Canonical. Por esto ultimo es que ahora en este Post vamos a replicar. como en el post pasado las instrucciones en terminal para ejecutar la instalación y configuración de ELK aplican de igual forma a versiones anteriores por lo que tomaremos de referencia esos comandos publicados en el post anterior en este LINK

Primero los Pre requerimientos de buena practica 

1.- Actualizar completamente tu sistema operativo, este cerrara las oportunidades de mejora del propio Os y cerrara brechas de seguridad del sistema operativo. 

 El comando en terminal que usaremos es

 sudo apt-get update && sudo apt-get upgrade -y

Para fines de tener claridad de estar en el sistema operativo correcto y el hostname correcto, validamos estos dos últimos con los comandos.

cat /etc/issue.net

hostname

 

2.- Instalación de NGINX

Para leer el post publicado anteriormente por favor ve a este LINK

 Comando de instalación nginx

sudo apt install nginx 

(previamente actualizamos todo el Os)

Con el comando curl validaremos que el servicio del web server esta ok

Comando de validación  curl -4 ubuntusrv.oposada.mx

Resultado esperado (algo similar en tu ambiente, cambiara según personalizaciones.)

UFW es el firewall de Ubuntu Server, con el siguiente comando lo que indicamos al sistema operativo es que el trafico este permitido sin restricciones a http y https

 sudo ufw allow 'Nginx HTTP' 

 

Ahora listamos los permisos por aplicación segun su trafico, el nombre de la aplicación Nginx, trafico http y https

sudo ufw app list | grep Nginx 

 

A este punto, todo esta ok. para fines de hacer esto algo mas interesante vamos a agregar resolución por nombre FQDN, fully qualified domain name para que nuestro equipo local resuelva por nombre configurando el nombre en nuestro archivo host local, para esto vamos a ejecutar de nuestro sistema operativo (suponiendo que estas usando windows 10)


Accedemos  y vamos a etc

Aquí, en este directorio como podemos ver tenemos varios archivos, la buena practica en cualquier actividad en producción es tener un respaldo, un archivo de configuración o estado actual del ambiente que vamos a manipular previo a los cambios, de tal forma que, en el escenario que algo salga mal..... tengamos un punto de restauración seguro con el cual podamos continuar con la continuidad del servicio.

Abrimos el archivo host en el edutor de texto de nuestra elección,

 
En mi particular gusto, yo uso Sublime text  con el edito el archivo hosts y agrego la linea que indica dirección IP y nombre para resolver localmente,de tal forma diciendo de otro modo la dirección 192.168.0.20 la resolverá en el navegador como ubuntusrv.oposada.mx así de fácil.


Validamos accediendo desde nuestro navegador favorito a la dirección FQDN, fully qualified domain name y ya podra resolverlo nuestro equipo local.

 3.- Instalación de ELK

Para los que estan atentos a los post, ya escribi sobre ELK en el post del siguiente LINK

 Vamos a los comandos, 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

Instalación de elasticsearch

Comando sudo apt install elasticsearch


Hasta este Punto todo bien. 


Ejecutamos el comando 

sudo vi /etc/elasticsearch/elasticsearch.yml

 

Ahora con el archivo configurado para el trafico a localhost podemos continuar con la definición del site disponible y el site activo y la definiciónde usuario y password. 


Iniciemos con la restricción de usuario, como saben por default elastic te permite el acceso sin ningún tipo de restricción lo cual para ambientes de laboratorio es ok, pero en ambientes pre productivos o productivos no es opción, por lo que con el siguiente comando definiremos un usuario y password el cual después de va a encriptar para no poder ser leído desde el archivo htpasswd.users.

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

 
 

ahora continuamos definiendo el dominio y el archivo de configuraciónde ese dominio

comando /etc/nginx/sites-available/nombre_de_tu_dominio

 

ejemplo del comando ejecutado

sudo vi /etc/nginx/sites-available/ubuntusrv.oposada.mx

en el contenido del dominio coloque 

 

server {
    listen 80;

    server_name ubuntusrv.oposada.mx;

    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;
    }
}

 

donde el valor de valor aqui es    server_name ubuntusrv.oposada.mx; donde "ubuntusrv.oposada.mx" es el critico con el cual hay que tener cuidado, este tiene que tener el mismo nombre para el link simbólico que ejecutaremos a continuación. 


sudo ln -s /etc/nginx/sites-available/ubuntusrv.oposada.mx /etc/nginx/sites-enabled/ubuntusrv.oposada.mx

Validamos que los archivos configurados esten en ok con el comando siguiente

sudo nginx -t

 tendriamos que tener como salida estándar algo como esto  

oposada@ubuntusrv:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reiniciamos el web server nginxcon el comando siguiente

sudo systemctl reload nginx