Protegiendo SSH con fail2ban

Cuando tenemos un servidor conectado directamente a internet, y el puerto 22 está abierto, veremos que los intentos de conexiones son interminables.

A parte de la diversión de ver como se intentan conectar con numerosos usuarios, veremos que el log del sistema crece mucho más de lo que nos gustaría.

La primera recomendación, por supuesto correr el servicio SSH en puerto distinto al 22, pero a veces eso no está permitido.

Lo siguiente es deshabilitar el login como usuario root, y utilizar únicamente sudo para las cosas que necesitemos, pero aun así, veremos cientos de intentos de conexiones.

El siguiente paso, es utilizar fail2ban, que escanea los logs, y bloquea a las direcciones IP que tienen demasiados fallos. Eso lo hace actualizando las reglas de iptables para rechazar las conexiones de esas IPs.

La configuración es la siguiente en /etc/fai2ban/jail.local. Podemos utilizar ignoreip para que nuestra dirección no sea bloqueada:

[sshd]
ignoreip = xxx.xxx.xxx.xxx
enabled = true

Después, habilitamos el servicio y lo iniciamos:

# systemctl enable fail2ban
# systemctl restart fail2ban

Y pasado un tiempo, comprobamos el estado

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 1480
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 1
|- Total banned: 135
`- Banned IP list: 125.88.177.87

Como acceder a directorios remotos mediante ssh

Una forma de acceder a los archivos de otro servido sin tener que montar un servidor FTP o NFS, es usando sshfs,. De esta forma, se puede interactuar sin problemas con archivos remotos que se sirven de forma segura a través de SSH como si fueran archivos locales.

Primero instalamos sshfs, que está incluido en el paquete  fuse-sshfs

# dnf install -y fuse-sshfs

El formato del comando es:

sshfs [usuario@]host:[dir] puntodemontaje [opciones]

Vamos a montar el directorio /home

# sshfs alexis@192.168.1.12:/home/ /mnt/remote/
alexis@192.168.1.12's password:
# ls /mnt/remote/
alexis test

Y por supuesto, sólo podemos acceder a los archivos a los que tenemos permiso:

# ls /mnt/remote/alexis/
Desktop  Documents  Downloads
# ls /mnt/remote/test/
ls: reading directory '/mnt/remote/test/': Permission denied

 

Como actualizar de Fedora 22 a Fedora 23 Beta

Fedup ha desaparecido, y ahora sólo es necesario utilizar dnf para las actulizaciones entre versiones de Fedora.

Primero nos aseguramos que todos los paquetes están completamente actualizado:

# dnf update -y

Y ahora seguimos los siguientes pasos:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-23-x86_64
# dnf upgrade
# dnf clean all
# dnf --releasever=23 --setopt=deltarpm=false distro-sync --nogpgcheck

En caso de que algún paquete no esté disponible todavía en Fedora 23 basta con eliminarlo, en caso contrario no podremos actualizar.
También se puede utilizar el parámetro “–alowerasing”, pero en mi caso no me dejaba actualizar porque la actualización tenía que eliminar el kernel.

Después de que se complete el proceso, al reiniciar el equipo el sistema iniciará con el kernel del Fedora 23.

Una vez iniciado el sistema, podemos comprobar la nueva configuración:

[alexis@z600 ~]$ hostnamectl 
   Static hostname: z600
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: 20a1cc44bf964f46b9e6b112f4b0df1a
           Boot ID: ea0c495b190e48fabb21f31a24644445
  Operating System: Fedora 23 (Server Edition)
       CPE OS Name: cpe:/o:fedoraproject:fedora:23
            Kernel: Linux 4.2.3-300.fc23.x86_64
      Architecture: x86-64

Como grabar un CD/DVD desde la línea de comandos

Las utilidades para grabar discos vienen en el paquete dvd+rw-tools:

# dnf install dvd+rw-tools

En caso de tener un CD/DVD regrabable, lo borramos primero:

# dvd+rw-format /dev/cdrom -force
* BD/DVD±RW/-RAM format utility by , version 7.1.
* 4.7GB DVD-RW media in Sequential mode detected.
* formatting 74.1%

Finalmente indicamos el dispositivo que identifica al CD/DVD, en este caso /dev/cdrom, y la imagen ISO a grabar:

# growisofs -dvd-compat -Z /dev/cdrom=/home/alexis/Fedora22.iso

Para grabar datos en un CD/DVD y dejar la sesión abierta para poder seguir grabando utilizamos el siguiente comando:

# growisofs -Z /dev/cdrom -R -J /data/Documentos

Y para añadir más datos al disco:

# growisofs -M /dev/cdrom -R -J /data/Pictures

Cómo configurar la autenticación con huella dactilar en Fedora 22

El primer paso es comprobar que el sistema detecta el lector.
En este caso mi portatil es un Lenovo T440s que tiene el lector integrado.

$ lsusb
Bus 003 Device 002: ID 8087:8000 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04ca:7035 Lite-On Technology Corp.
Bus 001 Device 003: ID 8087:07dc Intel Corp.
Bus 001 Device 005: ID 138a:0017 Validity Sensors, Inc. Fingerprint Reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

El siguiente paso es escanear la huella dactilar con el comando fprintd-enroll seguido del nombre de usuario:

$ fprintd-enroll alexis
Using device /net/reactivated/Fprint/Device/0
Enrolling right-index-finger finger.
Enroll result: enroll-completed

Comprobamos que la huella se ha registrado:

$ fprintd-list alexis
found 1 devices
Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
Fingerprints for user alexis on Validity VFS5011 (swipe):
- #0: right-index-finger

Y la verificamos escaneando de nuevo el dedo:

$ fprintd-verify alexis
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
- #0: right-index-finger
Verify result: verify-match (done)

En caso de que no se reconozca la huella veremos el siguiente mensaje:

$ fprintd-verify alexis
Using device /net/reactivated/Fprint/Device/0
Listing enrolled fingers:
- #0: right-index-finger
Verify result: verify-no-match (done)

Y ahora probamos a autenticarnos con la huella digital:

$ sudo ls /root
Swipe your finger across the fingerprint reader
anaconda-ks.cfg  Desktop  rpmbuild

En caso de que falle la autenticación, después de tres intentos, nos pedirá el password del usuario:

$ sudo ls /root
Swipe your finger across the fingerprint reader
Failed to match fingerprint
Swipe your finger across the fingerprint reader
Failed to match fingerprint
Swipe your finger across the fingerprint reader
Failed to match fingerprint
[sudo] password for alexis: