En este Articulo les enseñare a Configurar un Firewall de Aplicaciones Web (WAF) para protegerlo, filtrando y supervisando el tráfico HTTP entre una aplicación web e Internet. 
Instalaremos SafeLine que es un WAF (Web Application Firewall) de código abierto desarrollado por Chaitin Tech. Existe una versión gratuita y de código abierto que se puede instalar y personalizar, además de una versión avanzada de suscripción de pago. 
Safeline protege las aplicaciones web de ataques como: SQL injection, XSS, code injection, os command injection, CRLF injection, ldap injection, xpath injection, RCE, XXE, SSRF, path traversal, backdoor, bruteforce, http-flood, bot abused entre otros mas.


Al implementar un WAF delante de una aplicación web, se crea una barrera entre la aplicación e Internet. Mientras que un servidor proxy protege la identidad del cliente mediante un intermediario, un WAF actúa como proxy inverso, protegiendo al servidor de posibles vulnerabilidades al hacer que los clientes pasen por el WAF antes de llegar al servidor.
Un WAF protege sus aplicaciones web filtrando, supervisando y bloqueando cualquier tráfico HTTP/S malicioso que se dirija a la aplicación, e impide que datos no autorizados salgan de ella. Esto lo consigue mediante el cumplimiento de un conjunto de políticas que ayudan a determinar qué tráfico es malicioso y cuál es seguro. Al igual que un servidor proxy actúa como intermediario para proteger la identidad de un cliente, un WAF funciona de forma similar, pero actuando como un proxy inverso que protege el servidor de la aplicación web de clientes potencialmente maliciosos.

¿Que Protege Safeline?

  • Defensas contra ataques web
  • Defensa proactiva contra bots
  • cifrado de código HTML y JS
  • Limitación de velocidad basada en IP
  • Lista de control de acceso web
Para instalar SafeLine necesitaremos crear un servidor en nuestro equipo, ya que Safeline no es como otros WAF que lo protegen desde la Nube sino que esta autohospedado, es decir se implementa en una máquina del cliente, como un servidor con Linux. Esta configuración permite a SafeLine actuar como un proxy inverso que protege las aplicaciones web filtrando el tráfico HTTP antes de que llegue a la aplicación.
 

¿Como Instalar Safeline paso a paso?

Requisitos Mínimos para Instalar Docker:

DependenciasValores
Sistema OperativoLinux
Instrucciones de Arquitecturax86_64, arm64
Dependencia de SoftwareDocker version 20.10.14 or above
Dependencia de SoftwareDocker Compose version 2.0.0 or above
Entorno Minimo1 core CPU / 1 GB memory / 5 GB disk
CPUssse3
 
Si tu computador cumple con los requisitos mínimos especificados anteriormente o si los supera, entonces es hora de empezar a instalar Docker en Linux
 
Primeramente Necesitamos Instalar Docker Engine y aquí te enseñare los pasos para hacerlo en Ubuntu específicamente, ya si deseas hacerlo en otro Sistema Linux, consulta la documentación aquí.

Docker Engine es la aplicación principal de Docker, que consta de un demonio (servidor), una API y una interfaz de línea de comandos (CLI). Es el entorno de ejecución de contenedores de código abierto que permite crear, ejecutar y gestionar contenedores Docker, que son unidades estandarizadas que empaquetan aplicaciones con todas sus dependencias para que se ejecuten de manera consistente en cualquier plataforma.

MIRA TAMBIÉN: COMO SABER SI TU CONTRASEÑA FUE H4CKEADA 

¿Como Instalar Docker Engine usando el apt repositorio?

Antes de instalar Docker Engine por primera vez en una nueva máquina host, Necesito configurar el Docker apt repositorio. Posteriormente podrás instalar y actualizar Docker desde el repositorio.

1.- Para Configurar Docker apt repositorio copia el siguiente comando:
 
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

2.- Instalar los paquetes Docker
Para instalar la última versión, ejecuta:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Puede ejecutar los siguientes comandos para confirmar la configuración del servidor:

uname -m                                # ver instrucciones de arquitectura
docker version                          # ver la versión de docker
docker compose version                  # ver la versión de docker compose
cat /proc/cpuinfo| grep "processor"     # ver la información del CPU
free -h                                 # ver la información de la memoria
df -h                                   # ver la informacion del disco
lscpu | grep ssse3                      # Comprobar la Instrucción ssse3 del CPU


Luego de verificar que este correctamente instalado Docker, podemos empezar a instalar nuestro firewall de aplicaciones web de Safeline.

SafeLine WAF es un firewall de aplicaciones web (WAF) de código abierto y autoalojado que protege las aplicaciones web de ataques comunes como la inyección SQL y los ataques de Cross-Site Scripting (XSS). A diferencia de los WAF en la nube, SafeLine se ejecuta en los propios servidores del usuario, lo que ofrece un control total y soberanía de los datos. Utiliza análisis de lenguaje semántico y aprendizaje automático para filtrar el tráfico HTTP/HTTPS y puede actuar como proxy inverso.

Un proxy inverso es un servidor que actúa como intermediario entre los clientes y los servidores web, recibiendo las solicitudes de los clientes y reenvíandolas al servidor apropiado. Su función principal es mejorar la seguridad, el rendimiento y la confiabilidad de la red al proteger los servidores backend, distribuir la carga de tráfico y almacenar en caché contenido estático. 

¿Como Instalar SafeLine WAF de manera Automática?

Para instalar safeline se necesitan privilegios de administrador.

Para iniciar la instalación automática de SafeLine copia el siguiente código:

bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
Una vez ejecutado este comando, la instalación se ha realizara de manera automatica y correctamente. Luego solo quedaria ir directamente a "Usar la interfaz web".

¿Como Instalar SafeLine WAF de manera Manual?

Instala la última versión de Docker o si ya tienes Docker instalado, omite este paso.
curl -sSL "https://get.docker.com/" | bash

Cree un directorio para que SafeLine lo use. SafeLine guardará su configuración y datos allí. (Necesita al menos 5 GB de espacio en disco).
mkdir -p "/data/safeline"

Descarga el script de Docker Compose más reciente con el siguiente comando:
cd "/data/safeline"
wget "https://waf.chaitin.com/release/latest/compose.yaml"
Ahora debes Escribir variables de entorno con el siguiente comando:
touch ".env"

Abre el archivo ".env" y copia lo que se muestra mas abajo:

nano ".env"
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD={postgres-password}
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
ARCH_SUFFIX=
RELEASE=
REGION=-g
MGT_PROXY=0

Si se implementa en un servidor ARM, cambie ARCH_SUFFIX a -arm
ARCH_SUFFIX=-arm

Si deseas instalar la versión LTS cambia lo siguiente:
RELEASE=-lts

Significado de los datos configurados en .env: 

SAFELINE_DIR: 123
IMAGE_TAG: Versión de SafeLine a utilizar.
MGT_PORT: Puerto de la consola web a utilizar.
POSTGRES_PASSWORD: Contraseña de linealización de la base de datos Postgres.
SUBNET_PREFIX: Prefijo de la dirección de comunicación de red interna de SafeLine.
IMAGE_PREFIX: Prefijo del repositorio espejo.
ARCH_SUFFIX: Establecido en -arm para servidores ARM.
RELEASE: Establecido en -lts para usar la versión LTS.
MGT_PROXY: Número de capas de proxy de consola. Solo debe utilizarse al configurar el proxy para la consola. De forma predeterminada, está establecido en 0 y no se configura ningún proxy.

¿Como Iniciar SafeLine WAF?

Para iniciar docker utilice el siguiente comando:
docker compose up -d
Ahora es necesario usar la interfaz web de SafeLine y para hacerlo debes copiar la Dirección ip de la Maquina junto con el puerto 9443.

Abre la página de la consola web https://<safeline-ip>:9443/ en el navegador. Verá lo siguiente:

¿Como Obtener una Cuenta de Administrador?

Para resetear la contraseña de administrador ejecuta el siguiente comando:
docker exec safeline-mgt resetadmin
Una vez ejecutado el comando correctamente, se mostraran las credenciales de acceso, como el usuario y la contraseña.
[SafeLine] Initial username:admin
[SafeLine] Initial password:**********
[SafeLine] Done

¿Como Iniciar Sesión en Safeline?


Introduce la contraseña del paso anterior y habrás iniciado sesión correctamente en SafeLine.


¿Como Desinstalar Safeline?

Si ya no desea usar SafeLine, sigue los pasos a continuación para desinstalarlo por completo.

1.- Accede al directorio de SafeLine:
cd /data/safeline
  1. Ejecute el siguiente comando para detener SafeLine:
docker compose down
  1. Ejecute el siguiente comando para eliminar los datos de SafeLine.
rm -rf <safeline-directory>

 Mira el Video de la Explicación paso a paso a a continuación: