Diferencia entre revisiones de «Securizar Ubuntu Server»

De Wiki Castanedo.es
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 126: Línea 126:
AcceptEnv LANG LC_*
AcceptEnv LANG LC_*
Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem      sftp    /usr/lib/openssh/sftp-server
</syntaxhighlight>
* Desactivar acceso con contraseña:
Para desactivar el acceso con contraseña (sólo claves criptográficas) deberías bastar con la directiva: "PasswordAuthentication no".
Sin embargo, puede hacer alguna algún fichero adicional que lo contradiga:
<syntaxhighlight lang="Bash">vi /etc/ssh/sshd_config.d/50-cloud-init.conf</syntaxhighlight>
<syntaxhighlight lang="text">
#PasswordAuthentication yes
</syntaxhighlight>
</syntaxhighlight>



Revisión del 21:41 22 feb 2026

Securizar servidor con Ubuntu Server

El objetivo de esta nota es securizar un servidor con el sistema operativo Ubuntu Server.


Cambiar contraseña a usuario root

Todos los comandos se ejecutarán como root, a menos que se especifique lo contrario.

sudo -i

Establecer contraseña para root:

passwd root

Creación de nuevo usuario

Crear un grupo para el usuario:

groupadd guzman

Crear usuario para el usuario:

useradd -d /home/guzman -m -g guzman -s /bin/bash guzman

Establecer contraseña para el usuario:

passwd guzman

Establecer permisos al usuario:

usermod -a -G adm,cdrom,sudo,dip,lxd guzman

Borrar usuario por defecto

Se borran usuarios por defecto que puedan suponer un riesgo de ataques de diccionario.

userdel -r ubuntu

Cambiar hostname del servidor

hostnamectl set-hostname culturetas.net

Actualizar OS

Actualizar repositorios:

apt update

Actualizar OS:

apt dist-upgrade

Borrar paquetes sin uso:

apt autoremove

Limpiar cachés:

apt autoclean

Reiniar VM:

reboot

Instalar fail2fan

Instalar fail2fan para monitorizar logs y bloquear usuarios que intenten ataques de diccionario.

apt install fail2ban

Generar claves criptográficas

Generar clave

Características:

  • Tipo: Curva Elíptica
  • Curva: ed25519
  • Rondas: 512
ssh-keygen -t ed25519 -a 512 -C culturetas.net -f culturetas.net.key

Desplegar clave en usuario root

mkdir ~/.ssh
cp culturetas.net.key culturetas.net.key.pub /root/.ssh/
cat culturetas.net.key.pub >> /root/.ssh/authorized_keys
chmod 700 /root/.ssh/
chmod 600 /root/.ssh/culturetas.net.key
chmod 644 /root/.ssh/culturetas.net.key.pub
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh/

Desplegar clave en usuario guzman

mkdir /home/guzman/.ssh
cp culturetas.net.key culturetas.net.key.pub /home/guzman/.ssh/
cat culturetas.net.key.pub >> /home/guzman/.ssh/authorized_keys
chmod 700 /home/guzman/.ssh/
chmod 600 /home/guzman/.ssh/culturetas.net.key
chmod 644 /home/guzman/.ssh/culturetas.net.key.pub
chmod 600 /home/guzman/.ssh/authorized_keys
chown -R guzman:guzman /home/guzman/.ssh/

Crear grupo SSHallow

Este será el único grupo que puede conectar por SSH.

groupadd -r SSHallow

Añadir usuarios a grupo SSHallow

Realizar para todos los usuarios que van a conectar mediante SSH. Por ejemplo:

  • root
  • guzman
usermod -a -G SSHallow guzman
usermod -a -G SSHallow root

Comprobar que puedes acceder por SSH

Desde otra terminal:

ssh -i ~/.ssh/culturetas.net.key guzman@culturetas.net

Configurar servidor SSH

  • Backup fichero de configuració SSH:
cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.$(date +%Y%m%d)
  • Editar fichero de configuración SSH:
vi /etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.conf
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
MaxSessions 10
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
PasswordAuthentication no
PermitEmptyPasswords no
AllowGroups SSHallow
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
TCPKeepAlive yes
# Timeout 300 seg * 12 = 1 hour
ClientAliveInterval 300
ClientAliveCountMax 12
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server
  • Desactivar acceso con contraseña:

Para desactivar el acceso con contraseña (sólo claves criptográficas) deberías bastar con la directiva: "PasswordAuthentication no". Sin embargo, puede hacer alguna algún fichero adicional que lo contradiga:

vi /etc/ssh/sshd_config.d/50-cloud-init.conf
#PasswordAuthentication yes

Reiniciar VM

reboot

Personalizar alias

  • Manias mías
vi /root/.bashrc
[...]
# some more ls aliases
alias ll='ls -lh'
alias la='ls -A'
alias l='ls -CF'
[...]
vi /home/guzman/.bashrc
[...]
# some more ls aliases
alias ll='ls -lh'
alias la='ls -A'
alias l='ls -CF'
[...]