Ahora sí. Empiezo dar un poco de ... «clase»... El cómo hago yo con Linux. Veamos...el cómo se monta un servidor de mejores características.
Yo, tengo el VPS, debido a las circunstancias que hay aquí, en casa, que debo tener una corriente totalmente estable y las 24 horas del día (aunque ya lo tenemos, pero con energía solar. El sistema informático que tengo actualmente está protegido con un sistema de alimentación ininterrumpida para eso), pero sin sobresaltos, ni nada. Y...eso sí...con puertos abiertos y servidor web habilitado y más cosas que os contaré con más detalle. Pero vamos a lo básico para estas cosas. Ya que, es sencillo para tenerlo.
En primer lugar, vamos a ver lo que tenemos con el fichero que debemos crear en /etc/sysctl.d/99-configure.conf (da igual, se puede poner cualquier otro nombre que queráis, es una tontería, porque funciona todo con *.conf) tal como sigue:
kernel.printk = 3 4 1 3
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv4.icmp_echo_ignore_all = 0
vm.swappiness = 10
vm.vfs_cache_pressure = 50
Bueno...pues ya tenemos una parte del cómo. Para que surtan efectos, usamos el comando sysctl como: sysctl --system. Bien. Hecho esto ya tenemos los parámetros puestos y habilitados para tal efecto.
kernel.printk = 3 4 1 3
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv4.icmp_echo_ignore_all = 0
vm.swappiness = 10
vm.vfs_cache_pressure = 50
Bueno...pues ya tenemos una parte del cómo. Para que surtan efectos, usamos el comando sysctl como: sysctl --system. Bien. Hecho esto ya tenemos los parámetros puestos y habilitados para tal efecto.
Bien, vamos al servidor SSH, vamos a editar el fichero /etc/ssh/sshd.config:
Tenemos el puerto 22, por defecto en Port, lo cambiamos a 22222 (yo lo tengo en otro puerto, no pasa nada... Pero por seguridad no lo publico aquí), Bueno, antes de cerrar nada, debemos buscar esta otra línea que dice: PermitRootLogin, le indicamos con un no, para que nadie entre como root a la máquina en cuestión (que ya sabemos lo que quieren los atacantes de lo ajeno para robar máquinas y cosas así ¿No?). También debemos tener otra línea en dicho fichero que dice así como: KbdInteractiveAuthentication, a esta línea le decimos que no, si no la tenemos comentada. Las demás líneas que hay en dicho fichero (UserPAM; X11Forward, les indicamos que «yes» (si no tenemos entorno, entonces el «no» ya vale) y a la línea PrintMotd, le indicamos que «no») las debemos tener las indicadas en esta publicación para no tener problemas. Hay otras líneas más abajo, debemos dejarlas TAL como están.
Tenemos el puerto 22, por defecto en Port, lo cambiamos a 22222 (yo lo tengo en otro puerto, no pasa nada... Pero por seguridad no lo publico aquí), Bueno, antes de cerrar nada, debemos buscar esta otra línea que dice: PermitRootLogin, le indicamos con un no, para que nadie entre como root a la máquina en cuestión (que ya sabemos lo que quieren los atacantes de lo ajeno para robar máquinas y cosas así ¿No?). También debemos tener otra línea en dicho fichero que dice así como: KbdInteractiveAuthentication, a esta línea le decimos que no, si no la tenemos comentada. Las demás líneas que hay en dicho fichero (UserPAM; X11Forward, les indicamos que «yes» (si no tenemos entorno, entonces el «no» ya vale) y a la línea PrintMotd, le indicamos que «no») las debemos tener las indicadas en esta publicación para no tener problemas. Hay otras líneas más abajo, debemos dejarlas TAL como están.
Luego hacemos:
systemctl restart sshd
Ya con ello, tenemos el puerto al que queramos para que no entre nadie.
Debemos tener ufw en el sistema para hacerlo funcionar. Si no lo tenemos instalado... (como root):
apt install ufw
apt install ufw
Si editamos el fichero /etc/sudoers, debemos tener esta línea (la debemos tener debajo de la línea de %sudo):
tunombreusuariocreadosinroot ALL=(ALL:ALL) ALL
Con esto, ya podremos entrar con sudo a los parámetros sin entrar al root. Podremos hacer directamente:
sudo apt install ufw
Y ya. No pasa nada.
Yo, por regla general, no lo activo en un servidor remoto. Pues es para evitar que otra persona con otra cuenta haga el uso inadecuado con sudo.
Si ya tenemos el servidor SSH, pero con otro puerto, lo que debemos es, primeramente, tenemos que decirle que hemos habilitado un puerto no estándar, tal como ésto:
ufw allow 22222/tcp
Que en este caso, le decimos al firewall que abra ese puerto al aire del servidor SSH. Para comprobar que esté en funcionamiento el puerto como abierto:
ufw status numbered
ufw status numbered
Y nos ofrece:
[ 1] 22222/tcp ALLOW IN Anywhere
[ 2] 22222/tcp (v6) ALLOW IN Anywhere (v6)
Ya hecho, habremos comprobado que el servidor SSH tiene el puerto abierto y a la escucha.
[ 2] 22222/tcp (v6) ALLOW IN Anywhere (v6)
Ya hecho, habremos comprobado que el servidor SSH tiene el puerto abierto y a la escucha.
¿Porqué tengo ahí, el (v6)? Es porque, el servidor tiene también, conexión a Internet pero vía IPv6 que, según lo que tiene actualmente, tiene 2 IPs. Una IPv4 y la IPv6, que lleva emparejada en su servidor.
En otra entrada que lo haré próximamente, os daré el cómo montarse un servidor web con nginx que, por excelencia, me funciona bastante bien, y no ralentiza nada. Es mucho mejor que el apache Web Server, menos engorroso y menos problemas y, sobre todo, menos opciones tan latosas. El Apache Web Server tiene infinidad de opciones, pero para personas que quieren lo más rápido, pero sin montón de opciones, el nginx es el que mejor va a dar resultado, y es también seguro.
Dicho servidor, lo tengo instalado con FreshRSS, que da igual, funciona bien, tanto con la versión latest, como con la versión edge que tienen en su proyecto. A mí, hasta ahora, funcionando decentemente bien ¡Y con edge!
En él, tengo una infinidad de opciones que, si se quiere, se pueden añadir montón de opciones posibles para tener un servidor seguro para él, con certbot, que no es tan complicado para tener certificados Let's Encrypt, aunque se puede tener otro, por ejemplo, el de Google, o casi cualquier otro que permita la automatización de certificados sin intervención humana. Se actualiza, según lo que haga falta en cada momento, por cada 60 días, aproximadamente. Lo que yo no sé es, si sirve para otros registradores de certificados seguros diferentes (el certbot sirve, tanto para Let's Encrypt, como para Google, pero no conozco si sirve para otros, según he leído que sí, pero se ha de instalar ciertos paquetes para actualizarlos).
Os dejo la primera lección del cómo se puede tener el SSH de manera segura. Os detallaré lo que se hace con ufw, que es sencillo también...que por cierto... Tiene dos archivos para configurar y bloquear entrantes para eso. Os detallaré también lo que hacer con fail2ban, que tiene también montón de opciones del cómo manejar este proyecto.
Va a haber tema para rato...eh...para rato...
Con tiempo, que tengo millones de cosas pendientes.
No hay comentarios:
Publicar un comentario