Montando Un Servidor Desde Cero Con Ubuntu
Que tal Haxxors, hace algún tiempo quise montar un servidor ONION casero y mantenerlo en funcionamiento durante algunos meses, pero por falta de tiempo y ganas nunca pude configurarlo y correrlo.
Lo quise montar todo desde cero y configurarlo lo mas seguro posible aplicando Hardening sobre mi Server, después de todo seria muy peligroso exponer mi red en una Darknet muy hostil como lo es la red Tor.
Antes de instalar Tor y configurar nuestro Hidden Service, vamos instalar y configurar ciertas aplicaciones las cuales nos serviran para montar nuestra pagina Web totalmente funcional.
Instalación de herramientas básicas para el servidor
Para usar el comando ifconfig y otros comando para administración de red vamos a instalar net-tools:
sudo apt install net-tools
Instalación de Nginx
Vamos hacer uso Nginx como servidor Web ya que es el mas poderoso actualmente, a diferencia de Apache, Nginx no consume muchos recursos y tampoco posee vulnerabilidades de consideracion o criticas.
sudo apt update && sudo apt install nginx
Usando ufw como Firewall:
Configurando el firewall para que acepte conexiones hacia SSH (22) y Nginx (80), todo esto usando ufw, el cual es un Firewall para personas las cuales no le gusat complicarse la vida con Iptable, facil de usar y directo al grano.
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 'Nginx HTTP'
sudo ufw status
Verificamos que nginx esta corriendo en nuestro sistema
sudo systemctl status nginx
Si todo va bien comenzamos con la creación del directorio de nuestro sitio, sin permisos de root para prevenir que un atacante tenga todos los permisos al piratear nuestro Server.
Creación de directorio para nuestra Web
sudo mkdir -p /var/www/sitio/html
La opción -p crea directorios y subdirectorios de forma automática
Asignando permisos al directorio que hemos creado
sudo chmod -R 755 /www/sitio/html
Creando nuestro fichero index.html
vi /var/www/sitio/html/index.html
Configurando del bloque del servidor
Vamos a indicarle a Nginx una nueva ruta para nuestra Web.
sudo vi /etc/nginx/sites-available/sitio
Y añadimos la siguiente configuracion…
server {
listen 80;
listen [::]:80;
root /var/www/hektorprofe.tk/html;
index index.html index.htm; server_name hektorprofe.tk www.hektorprofe.tk;
location / {
try_files $uri $uri/ =404;
}
}
Es hora de crear un enlace de nuestra configuración en la ruta */etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/sitio /etc/nginx/sites-enabled/
Verificando si no hay errores en nuestra configuración
sudo nginx -t
Reiniciamos el servidor
Opción #1
sudo systemctl restart nginx
Opción #2
sudo service nginx restart
Ficheros de configuración y rutas para configurar:
-
/var/www/html: Ruta donde se almacena el contenido por defecto que muestra Nginx (su default), puede ser cambiado en el fichero de configuración principal.
-
/etc/nginx/nginx.conf: Ruta del fichero de configuración principal.
-
/etc/nginx/sites-available/: Directorio que contiene las configuraciones de los bloques de servidor disponibles pero no activados
-
/etc/nginx/sites-enabled/: Directorio que contiene las configuraciones de los bloques de servidor activados, normalmente enlazado desde el directorios de bloques de servidor disponibles
-
/etc/nginx/snippets: Directorio que contiene fragmentos configurables incluidos globalmente en la configuración de Nginx.
-
/var/log/nginx/access.log: Fichero que almacena un registro de las peticiones recibidas.
-
/var/log/nginx/error.log: Fichero que almacena un registro de los posibles errores.
Instalación de Servidor FTP
Ya tenemos nuestro servidor Web corriendo en nuestro sistema pro nos falta una manera de subir los ficheros de nuestro sitio Web hacia el directorio /var/www/html/.
Instalación de vsftpd
sudo apt install -y vsftpd
Verificamos si vsftpd esta corriendo en nuestro sistema
sudo systemctl status vsftpd
Configurando el fichero vsftpd.conf
Deshabilitando el usuario anonymous
anonymous_enable=No
Restringir que el usuario pueda ver datos de otros usuarios del sistema
chroot_local_user=YES
Indicarle el usuario y la ruta en donde el usuario podrá subir sus ficheros
user_sub_token=$USER
local_root=/var/www/html
Darle acceso a los usuarios del sistema:
userlist_enable=YES
userlist_fle=/etc/vsftpd.userlist
userlist_deny=NO
Configurando el Firewall
sudo ufw allow 21
Añadiendo usuarios a la lista de usuarios
echo $USER ! sudo tee -a /etc/vsftpd.userlist
Recuerda mantener el servidor actualizado
sudo apt update && sudo apt upgrade
Por si deseas desinstalar el servidor FTP
sudo apt autoremove --purge vsftpd*
Instalación de PHP
Hasta ahora nuestro server por Default solo interpreta ficheros HTML, para realizar pagina dinámicas vamos a instalar PHP y poder programar del lado del Servidor.
Instalando PHP
sudo apt install -y php-fpm php-mysql
**Configurando Nginx para la ejecución de nuestros Script PHP nos dirigimos hacia /etc/nginx/sites-available/prueba
Añadimos estas líneas…
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
Instalación de Mysql
Ahora que tenemos PHP instalado vamos a necesitar una base de datos donde guardar datos de nuestros usuarios.
sudo apt install mysql-server
Creación de usuario para mysql:
Creando usuario y contraseña
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
Añadiendo permisos
GRANT ALL ON example_database.* TO 'example_user'@'%';
Actualizando contraseña de usuario
**Verificando la contraseña si es necesario
SELECT User, Host, authentication_string FROM mysql.user WHERE User='root';
Cambiando la contraseña
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'nueva_contraseña';
Recuerda que la contraseña debe ser una contraseña alphanumerica (letras y numeros) de 10 o mas digitos. Por ejemplo: haxxor_2024_admin_server
Actualizar y salir
FLUSH PRIVILEGES;
EXIT;
Y Listo ya puedes crear tus bases de datos
CREATE DATABASE wordpress;
Listo!!, ya tenemos nuestro servidor LEMP (Linux, Nginx, Mysql y PHP) (se pronuncia “Engine-X” de hay sale la “E” :) ), Pero hace falta algo de seguridad, seguridad dura y agresiva al puro estilo Haxxor, en el siguiente Topic se tocara algo de Hardening para cada servicio de nuestro servidor.
Happy Hacking Haxxors!!!