💾 Archived View for sl1200.dystopic.world › art › noob.gmi captured on 2021-11-30 at 20:18:30. Gemini links have been rewritten to link to archived content

View Raw

More Information

➡️ Next capture (2022-01-08)

-=-=-=-=-=-=-

Dominio, VPS, servidor Agate y cápsula gemini para noobs

11-2021

He intentado en varias ocasiones crear mi propia web pero nunca he llegado a un resultado satisfactorio. Considero que la web está demasiado recargada, aprender de verdad html y css requiere demasiado tiempo o acudir a herramientas y servicios que te lo ponen "fácil", lo que al final te puede llevar a perder completamente el control del código y del comportamiento de la web. Es muy fácil hacer una web sobre una plantilla con algún software o dentro de un servicio pero el final lo que tienes es un churro lleno de código que desconoces, posiblemente demasiadas conexiones remotas que descontrolas y un formato, el html, poco legible desde un editor de texto. Esto siempre hablando como un usuario que lo que necesita es algo muy fácil, rápido y que no castigue al lector con vete a saber qué rastreo.

Al final he decidido dejar de lado la web convencional y he optado con el protocolo gemini, por su extrema sencillez de sintaxis, lu legibilidad desde cualquier editor de texto y completo control de las conexiones que se realizan, vamos, es que con gemini no es posible establecer ninguna conexión a recursos adicionales, la extracción de datos y segmentación del internauta no parece posible.

En este tutorial me dispongo a detallar de forma pormenorizada todos los pasos a seguir para a llegar a tener tu propio dominio, vps, servidor y cápsula gemini, por si a algún iniciado le sirve como ayuda y también para que a mi no se me olvide cómo lo he hecho.

Conocimientos previos necesarios

Saber meterse en el terminal de Linux y manejar mínimamente estos comandos:

1.-Contratar el VPS y tu dominio

2.- Información que te enviarán por email tras contratar dominio y VPS:

◽️Para acceder por primera vez a tu VPS, ya desde el terminal, ponemos este comando y después la contraseña que nos han facilitado:


       ssh root@ipvps

En mi caso el VPS venía con Debian preinstalado, que creo que es lo más usual.

3.-Cambia las contraseñas y habilita si lo deseas la autentificación por el método de llave pública.


       passwd


       ssh-keygen


       nano ~/.ssh/autorized_keys

4.- Cómo reiniciar el VPS


       reboot

Después volvemos a acceder desde ssh. También podemos reiniciar desde la web de panel de control del VPS que te facilitó el proveedor por email. Vale la pena que curiosees un poco las opciones y estadísticas que salen tanto en la web del panel de control de cliente como en la web del panel de control del VPS.

5.- Actualizar el sistema operativo de tu VPS, hay dos opciones:


       apt update
       apt upgrade


       sudo apt update && sudo apt upgrade -y

6.- Crear un nuevo usuario con privilegios para evitar acceder como root:


       adduser nuevousuario


       usermod -aG sudo nuevousuario


       ssh usuario@ipvps


       su root

7.- Cambiar el puerto de escucha SSH


       nano /etc/ssh/sshd_config


       systemctl restart sshd_config


       ssh username@ipvps -p númeropuerto

8.- Sigamos securizando, ahora impedimos el acceso al servidor como root desde fuera:


       nano /etc/ssh/sshd_config


9.- IPTABLES, configuración del firewall:

Es un tema muy extenso a estudiar, he optado por copiar las que deben las reglas mínimas más usuales que he visto. Te recomiendo que lo estudies.


       sudo iptables -F


       sudo iptables -A INPUT -i lo -j ACCEPT


       sudo iptables -A INPUT -p tcp --dport númeropuerto -j ACCEPT
       sudo iptables -A INPUT -p tcp --dport 1965 -j ACCEPT


       sudo iptables -A INPUT -j DROP


       sudo /sbin/iptables-save

Para ver puertos en uso desde el vps: netstat -tunlp

Para ver desde tu PC los puertos abiertos en la VPS: nmap IPdetuVPS

10.- Fail2ban, protección contra accesos no deseados a tu servidor

Ya hemos configurado qué puertos deben estar cerrados o abiertos con iptables, ahora necesitamos bloquear el acceso a nuestro servidor a los atacantes que intenten acceder por fuerza bruta, normalmente bots, y lo haremos utlizando fail2ban, que básicamente lo que hace es limitar las IPs desde las cuales intentan acceder. Si alguien o algo intenta acceder, tras un determinado número de intentos fallidos de introducir la contraseña, se bloquea esa IP y fail2ban se encarga de que ese bloqueo de IPs sea una nueva regla para iptables.

       apt install fail2ban
       [ssh]
       enabled  = true
       port     = ssh, numero puertossh
       filter   = sshd
       logpath  = /var/log/auth.log
       maxretry = 3
       bantime= 3600

Con esta configuración tras tres intentos de acceso infructuosos fail2ban baneará la IP atacante durante una hora.

       sudo systemctl enable fail2ban

       sudo systemctl start fail2ban

       sudo systemctl status fail2ban.service

➡️ Tutorial fail2ban

11.- SnapShots, copias de seguridad de tu VPS

12.- Instalando el servidor Agate para gemini:

➡️ Un tutorial bastante sencillo

➡️ Página de Agate en Github


       mkdir -p ~/gemini/{content,certificate,server}


       nano ~/gemini/content/index.gmi

➡️ Sintaxis gemini


       cd ~/gemini/certificate/

       openssl req -new -subj "/CN=tudominio.com" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 3650 -nodes -out cert.pem -keyout key.pem


       cd ~/gemini/server

       wget https://github.com/mbrubeck/agate/releases/download/v3.1.3/agate.x86_64-unknown-linux-gnu.gz


       gunzip agate.x86_64-unknown-linux-gnu.gz

       mv agate.x86_64-unknown-linux-gnu agate-server

       chmod +x agate-server


       nano /etc/systemd/system/agate.service


       [Unit]
       Description=agate
       After=network.target

       [Service]
       User=gemini
       Type=simple
       ExecStart=/home/usuario/gemini/server/agate-server --content /home/usuario/gemini/content --certs /home/usuario/gemini/certificate/ --hostname tudominio.com --lang es-ES

       [Install]
       WantedBy=default.target


       systemctl enable agate
       systemctl start agate

13.- Asignación de tu dominio a un VPS

................................

Un par de comandos para que puedas mover archivos entre PC y VPS y hacer copias de seguridad de tu cápsula:

Transferencia de archivos desde mi pc al VPS a través de SCP


       scp -P puerto nombrearchivo usuario@ipvps:~/gemini/content

Copia de seguridad remota de la cápsula a tu PC con RSYNC

Se debe instalar primero rsync en el PC y en el VPS.

Ubícate en el directorio donde quieras que se guarde, el punto final debe estar:


       rsync -avz -e "ssh -p puerto" usuario@ipvps:~/gemini .

Desde cualquier directorio para que guarde donde yo quiera:


       rsync -avz -e "ssh -p puerto" usuario@ipvps:~/gemini ~/ruta a tu directorio

◄◄ BACK