Clase2- SSH HArdening

Embed Size (px)

Citation preview

  • 8/15/2019 Clase2- SSH HArdening

    1/30

    Facultad de Ciencias Exactas, Naturales y Agrimensura.

    Auditoria y Seguridad Informática

    Tema: Hardening SSH

    Profesor: Lic Juan Francisco Bosco

    2016

  • 8/15/2019 Clase2- SSH HArdening

    2/30

    Hardening

    •“Haciendo la vida mas dificil al atacante”

    •Hardening es una acción compuesta por un conjunto de

    actividades que son llevadas a cabo por el administrador de

    un sistemas para reforzar al máximo posible la seguridad de

    su equipo.

  • 8/15/2019 Clase2- SSH HArdening

    3/30

    SSH (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas através de una red.Permite manejar por completo la computadora mediante un intérprete de comandos, y

    también puede redirigir el tráfico de X para poder ejecutar programas gráficos sitenemos un Servidor X.Creador del protocolo el finalndes Tatu YlonenDe manera predeterminada, el protocolo SSH atiende peticiones por el puerto 22.

  • 8/15/2019 Clase2- SSH HArdening

    4/30

    OpenSSH (Open Secure Shell) es un conjunto deaplicaciones que permiten realizar comunicacionescifradas a través de una red, usando como base al

     protocolo SSH. Este proyecto es liderado actualmente por Theo de Raadt quien actualmente es fundador y

    líder de proyectos como OpenBSD.Además de la conexión a otros equipos, OpenSSH nos

     permite copiar datos de forma segura mediante laimplementación de dos herramientas estas son:

    •SCP

    •SFTP

  • 8/15/2019 Clase2- SSH HArdening

    5/30

    Instalación OpenSSH

    En las distribuciones basadas en Debian la instalación de OpenSSH

    se realiza mediante el comando aptitude (Leer sobre estecomando). Los paquetes a descargar son los siguientes.

    •Openssh

    •Openssh-clients

    •Openssh-server

    Instalación

    [root@localhost] # aptitude install openssh openssh-clients

    openssh-server

  • 8/15/2019 Clase2- SSH HArdening

    6/30

    Archivos de configuración - Server 

    OpenSSH tiene dos conjuntos diferentes de archivos deconfiguración: uno para los programas cliente (ssh, scp, y sftp) y

    otro para el daemon del servidor (sshd).

    La información de configuración SSH para todo el sistema está

    almacenada en el directorio /etc/ssh/.

    •ssh_config — El archivo de configuración del sistema clienteSSH por defecto que se sobreescribe si hay alguno ya presente

    en el directorio principal del usuario (~/.ssh/config).

    •sshd_config — El archivo de configuración para el demonio

    sshd.

    http://en.wikipedia.org/wiki/Daemon_(computing)http://en.wikipedia.org/wiki/Daemon_(computing)

  • 8/15/2019 Clase2- SSH HArdening

    7/30

    Archivos configuración - Cliente

    La información para la configuración SSH específica para el usuario

    está almacenada en el directorio principal ~/.ssh/:•authorized_keys — Este archivo que contiene una lista de claves

    públicas "autorizadas". Cuando un cliente se conecta al servidor, el

    servidor valida al cliente chequeando su clave pública firmada

    almacenada dentro de este archivo.

    •id_rsa — La clave RSA privada usada por ssh para la versión 2 del

    protocolo SSH.

    •id_rsa.pub — La clave pública RSA usada por ssh para la versión 2

    del protocolo SSH.

    •known_hosts — Este archivo contiene las claves de host DSA de los

    servidores SSH accedidos por el usuario. Es muy importante para

    asegurarse de que el cliente SSH está conectado al servidor SSH

    correcto.

  • 8/15/2019 Clase2- SSH HArdening

    8/30

    El Daemon puede ser manipulado desde el scrip /etc/init.d/sshd conlos siguientes parametros

  • 8/15/2019 Clase2- SSH HArdening

    9/30

    # ssh 200.58.xxx.xxx -l root –p 22

    The authenticity of host '[200.58.xxx.xx]:22 ([200.58.xxx.xxx]:22)'

    can't be established.

    RSA key fingerprint is

    2e:77:46:d6:db:bb:9c:76:c2:b4:46:29:d0:69:f9:90.Are you sure you want to continue connecting (yes/no)? yes

    Warning: Permanently added '[200.58.xxx.xx]:22' (RSA) to the list of

    known hosts.

  • 8/15/2019 Clase2- SSH HArdening

    10/30

    SSH tiene asignado por defecto el puerto 22Es buena practica cambiar el puerto para evitar escaneos y

    intentos de login automáticos. La configuración se encuentra

    en el arhivo /etc/ssh/sshd_config

    Port 34567

    ListenAddress 192.168.56.104

    Reiniciar server

    /etc/init.d/ssh start

    root@localhost #ssh 192.168.1.84 -l root -p 34567

    Puerto 34567

    Escuchar solamente en una

    interfaz especifica

    Cambiar Puerto

  • 8/15/2019 Clase2- SSH HArdening

    11/30

    Este es quizá el parámetro mas importante de seguridad que podemos

    indicar para blindar nuestro servidor. :

    PermitRootLogin no

    PermitEmptyPasswords no

    Reiniciar server  /etc/init.d/ssh start

    Desabilitar acceso root ypassword blancos

    No se permite acceso de root por SSH

    No se permite usuarios con claves en

    blanco

  • 8/15/2019 Clase2- SSH HArdening

    12/30

    Habilitar procolo v2

    Existen dos versiones del protocolo.Por seguridad se debe usar la versión 2 ya que la versión 1

    se encuentra en desuso y presenta varias vulnerabilidades.

    Protocolo 2Reiniciar server

    /etc/init.d/ssh start

    Protocolo v2

  • 8/15/2019 Clase2- SSH HArdening

    13/30

    Número máximo de intentos de que podemos equivocar el usuario y

    contraseña. Una vez superado este número la conexión se perdera

    Con esto evitaremos ataques de persistencia de la conexiónPara llevar a cabo estos cambios tendrá que editar la directiva

    MaxAuthTries

    MaxAuthTries 3

    Reiniciar server

    /etc/init.d/ssh start

    Otro parámetro es el MaxStartups que verifica el numero máximo de

    shell abiertas para el intento de login desde una misma IP

    MaxStartups 1Limitar a una única pantalla de logueo por IP,

    Un máximo de 3 intentos fallidos

  • 8/15/2019 Clase2- SSH HArdening

    14/30

    Podemos definir que usuarios y grupos están permitidos para conectarse por SSH, para ellodebemos configurar la directiva AllowUsers yAllowGroups.

    AllowUsers francisco juanAllowGroups adminsitradores

    Usuarios y Grupos

    Acceso al usuario losfrancisco y juan y al grupoadministradores

  • 8/15/2019 Clase2- SSH HArdening

    15/30

    Cuando conectas al server tienes un periordo

    de conexión, en caso de no conectarse en ese

    periodo la conexión se termina

    LoginGraceTime 30

    LoginGraceTime

  • 8/15/2019 Clase2- SSH HArdening

    16/30

    TCPWrapper

    Wikipedia

    TCP Wrapper ("Envoltorio de TCP") es un sistema de red ACL que trabajaen terminales y que se usa para filtrar el acceso de red a servicios de

     protocolos de Internet que corren en sistemas operativos (tipo UNIX), como

     Linux o BSD.

     /etc/hosts.deny

     sshd:ALL /etc/hosts.allow

     sshd:192.168.56.101

     /etc/hosts.allow

     sshd:190.156.1.45,192.168.0.0/24

    Se bloque a todos al servicio SSH

    Se permite solo una IP alservicio

    Se permite un rango de IP

     privada y una IP publica

  • 8/15/2019 Clase2- SSH HArdening

    17/30

    Restringir comando“su”

    En Linux podemos restringir a determinados usuarios el comando su

    1.Editar el archivo /etc/pam.d/su2.Descomentar alguna de lasla siguiente líneas

    auth sufficient pam_wheel.so trust

    auth required pam_wheel.so

    1.Crear el grupo wheel#groupadd wheel

    1.Asignar al usuario magno al grupo wheel

    #usermod –G wheel magno

    Cuando se ejcuta el comando“su” no se pide contraseña yautomaticamente se pasa alusuario root

    El usuario magno pasa aser parte del grupo wheel

    Cuando se ejcuta el comando“su” se pide contraseña

  • 8/15/2019 Clase2- SSH HArdening

    18/30

    Llave publica y privada

    La autenticación median llave publica nos permite poder ingresar a nuestro servidor a

    partir de un algoritmo simétrico de llave publica y privada.

    SSH nos permite usar dos tipos de algoritmos para definir nuestro par de llaves.

    •RSA : Es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la

    cual se distribuye y otra privada, guardada en secreto por su propietario. Su

    funcionamiento reside en el uso de expresiones exponenciales. El descifrado completo

    de un texto cifrado con RSA es computacionalmente intratable.

    •DSA :DSA – (Digital Signature Algorithm o Algoritmo Estándar de Firmado) es el

    algoritmo de firmado digital incluido en el DSS (Digital Signature Standard o Estándar

    de Firmas Digitales) del NIST Norteamericano. Unicamente puede emplearse para las

    firmas digitales.

  • 8/15/2019 Clase2- SSH HArdening

    19/30

    Configuración que debe existir en sshd_config

    Protocol 2

    PubkeyAuthentication yes

    Pasos

    1. Para poder crear nuestras llaves con el algoritmo RSA, ejecutamos

    el comando ssh-keygen en la computadora cliente, dentro de lacarpeta .ssh del $HOME del usuario. (si no existe la carpeta la

    creamos).

    $ssh-keygen -t rsa -b 1024

    •-t → Tipo de algoritmo, en este caso RSA

    •-b → Longitud de la clave, en este caso 1024 bits

    Llave publica y privada

  • 8/15/2019 Clase2- SSH HArdening

    20/30

    martinpalermo@bastard:~/.ssh$ ssh-keygen -t rsa -b 1024

    Generating public/private rsa key pair.Enter file in which to save the key (/home/martinpalermo/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/martinpalermo/.ssh/id_rsa.Your public key has been saved in /home/martinpalermo/.ssh/id_rsa.pub.

    The key fingerprint is:aa:b5:e6:42:12:1c:71:78:a7:56:98:47:0d:c6:85:4d martinpalermo@bastard The key's randomart image is:+--[ RSA 1024]----+| .o.=+BE || o.+.* o || . o = |

    | o o || o S || . . . || o o || .o.. || .+o |

    +-----------------+

  • 8/15/2019 Clase2- SSH HArdening

    21/30

    Autenticación mediante llave publica

    2. Archivos generados por el comando ssh-keygen dentro del

    /home/martinpalermo/.ssh/.•id_rsa → Llave privada

    •id_rsa.pub → Llave publica

    Paso siguiente es copiar nuestra llave publica del archivo id_rsa.pub en el

    $HOME del usuario del servidor donde queremos administrar, para elloutilizamos el comando ssh-copy-id de la suite del comando OpenSSH.

    $ ssh-copy-id "[email protected] -p 2346"

    3. Esto copiara la llave publica en el servidor dentro del $HOME de juan,

    precisamente en /home/juan/.ssh/authorized_keys del servidor.

    ¿Se podría hacer sin el comando ssh-copy-id?

  • 8/15/2019 Clase2- SSH HArdening

    22/30

    Autenticación mediante llave publica

    4. Si tenemos activado la directiva StrictModes en yes, debemos comprobar

    que el archivo  /home/juan/.ssh/authorized_keys tenga solo permiso delectura y escritura para juan. En caso contrario no nos dejara ingresar con lallave publica y nos pedirá la contraseña.Por seguridad la directiva StrictModes debe estar en yes.

    StrictModes yes

    -rw------- 1 juan juan 395 2014-05-01 12:58 authorized_keys

    PasswordAuthentication no

    Verifica que la llave publica en el servidor sea modicidad

    y leída por el usuario solamente

     No se permite el logue de usuarios por SSHcon contraseña, solamente es posible porllave publica/privada

  • 8/15/2019 Clase2- SSH HArdening

    23/30

    Con la version 2.0 de SSH, Tatu Ylonen introdujo una nueva característica SFTP.El soporte del lado del servidor para SFTP esta dentro del sshd. En otras palabras,no se tiene que hacer nada extra para utilizar sus posibilidades. SFTP es soportadoa partir del OpenSSH 2.9 si no se tendría que usar SCP.

    La diferencia en utilizar SCP (Shell ) y SFTP (Security FileTransfer Protocol) para copiar archivos, carpetas o archivos radica en que para SCP tenemos que

    conocer exactamente donde se encuentra el recurso que queremos copiar, de otraforma nunca lo descargara, en cambio SFTP nos deja navegar entre las carpetas locual hace mas sencillo la ubicación del recurso que deseamos copiar 

    SCP y SFTP

  • 8/15/2019 Clase2- SSH HArdening

    24/30

    SCP & SFTP

    SCP y SFTP

    SCP

    •Copiar archivo al servidor scp basic.php [email protected]:/home/juanscp -P 2346 basic.php [email protected]:/home/juan

    •Copiar carpetascp -P 2346 -r fm [email protected]:/home/juan

    scp -r fm [email protected]:/home/juan

    •Descargar archivo del servidor al clientescp -P 2346 [email protected]:/home/juan/basic.php descarga.php

    •Descargar carpeta del servidor al clientescp -P 2346 -r [email protected]:/home/juan/fm/ fmlocal/

  • 8/15/2019 Clase2- SSH HArdening

    25/30

    SCP & SFTP

    lSFTP

    lConectarse al servidor lsftp  [email protected] -o PORT=2346 [email protected]

    lDescargar algún archivo del servidor l get basic.phpl

    lSubir archivo al servidor lPut archivolocal.php

    mailto:[email protected]:[email protected]:[email protected]:[email protected]

  • 8/15/2019 Clase2- SSH HArdening

    26/30

    SCP & SFTP

    lComandos del SFTP

  • 8/15/2019 Clase2- SSH HArdening

    27/30

    SCP & SFTP

    DESABILITAR SCP y SFTP

    Desabilitamos la funcion de SFTP

    Subsystem sftp /bin/false

    Subsystem scp /bin/false

  • 8/15/2019 Clase2- SSH HArdening

    28/30

    CHROOT EN SFTP

    Comandos dentro de la Shell (usuario existente cristian)

    #usermod cristian -s /sbin/nologin  –

    g sftponly  –

    d /home/cristian#chown root:root /home/cristian#cd /home/cristian: mkdir public_html#chown cristian:cristian public_html

    OpenSSH (4.8p1 for the GNU/Linux port) features a new configuration option :

    ChrootDirectory.

    This has been made possible by a new SFTP subsystem statically linked to sshd.

    This makes it easy to replace a basic FTP service without the hassle of configuring encryption

    and/or bothering with FTP passive and active modes when operating through a NAT router.

  • 8/15/2019 Clase2- SSH HArdening

    29/30

    CHROOT EN SFTP

    /etc/ssh/sshd_config

    Subsystem sftp internal-sftp

    Match User cristianChrootDirectory /home/cristianForceCommand internal-sftp

    X11Forwarding no AllowTcpForwarding no

    Match Group sftponly

    Puede ser remplazado por %h

    Fuerza solo comandos internos deSFTP

    En caso de queres implementar

    para un grupo de usuarios

    Estas líneas al final del

     Archivo.

    Ojo con AllowUsers y AllowGroup

  • 8/15/2019 Clase2- SSH HArdening

    30/30

    Blibiografia•http://es.kioskea.net/contents/140-criptografia-caparazon-seguro-protocolo-ssh•http://www.thegeekstuff.com/2011/05/openssh-options/•https://wiki.debian.or g/WHEEL/PAM•https://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny

    •https://wiki.archlinux.org/index.php/SFTP_chroot

    http://es.kioskea.net/contents/140-criptografia-caparazon-seguro-protocolo-sshhttp://es.kioskea.net/contents/140-criptografia-caparazon-seguro-protocolo-sshhttp://www.thegeekstuff.com/2011/05/openssh-options/http://www.thegeekstuff.com/2011/05/openssh-options/https://wiki.debian.org/WHEEL/PAMhttps://wiki.debian.org/WHEEL/PAMhttps://wiki.debian.org/WHEEL/PAMhttps://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lennyhttps://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lennyhttps://wiki.archlinux.org/index.php/SFTP_chroothttps://wiki.archlinux.org/index.php/SFTP_chroothttps://wiki.archlinux.org/index.php/SFTP_chroothttps://wiki.archlinux.org/index.php/SFTP_chroothttps://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lennyhttps://wiki.debian.org/WHEEL/PAMhttp://www.thegeekstuff.com/2011/05/openssh-options/http://es.kioskea.net/contents/140-criptografia-caparazon-seguro-protocolo-ssh