8612898 Manual de SSH

download 8612898 Manual de SSH

of 28

Transcript of 8612898 Manual de SSH

  • 8/8/2019 8612898 Manual de SSH

    1/28

    Instituto Profesional DUOC UCIngeniera de Ejecucin en Informtica.

    SSH

    Instalacin Configuracin

    Nicols Briceo

    Gonzalo Soto

  • 8/8/2019 8612898 Manual de SSH

    2/28

    Introduccin

    Conoceremos a grandes rasgos SSH, su funcionamiento, historia y seguridad.

    Realizaremos paso a paso la instalacin y configuracin incluyendo medios visuales para una mejorcomprensin.

    Finalmente concluiremos con pruebas de transferencia de archivos a travs de este protocolo.

    SSH

    Secure Shell, lo que podramos traducir como Interprete seguro de comandos. Es un protocolo dered que permite que el intercambio de datos entre dos dispositivos sea fiable, esto se logra pormedio del uso de un canal seguro.

    Es utilizado en Linux y sistemas Unix para tener acceso a las cuentas Shell.

    Funcionamiento

    SSH usa una llave criptogrfica pblica para autenticar la computadora remota y permitir que lacomputadora alejada autentifique al usuario.

    Se utiliza tpicamente para registrarse en una mquina remota y para ejecutar comandos, perotambin apoya el tunneling (creacin de tneles), remitiendo puertos del TCP y las conexiones X11;

    puede transferir archivos usando los protocolos asociados de SFTP o de SCP.

    Utiliza el modelo Servidor Cliente.

    Por defecto, escucha en el puerto estndar 22 de TCP.

  • 8/8/2019 8612898 Manual de SSH

    3/28

    Historia

    Al principio slo existan los r-commands, que eran los basados en el programa rlogin, el cualfunciona de una forma similar a telnet.

    La primera versin del protocolo y el programa eran libres y los cre un finlands llamado TatuYlnen, pero su licencia fue cambiando y termin apareciendo la compaa SSH CommunicationsSecurity, que lo ofreca gratuitamente para uso domstico y acadmico, pero exiga el pago a otrasempresas. En el ao 1997 (dos aos despus de que se creara la primera versin) se propuso como

    borrador en la IETF.

    A principios de 1999 se empez a escribir una versin que se convertira en la implementacin librepor excelencia, la de OpenBSD, llamada OpenSSH.

    Seguridad

    SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usatcnicas de cifrado que hacen que la informacin que viaja por el medio de comunicacin vaya demanera no legible y ninguna tercera persona pueda descubrir el usuario y contrasea de la conexinni lo que se escribe durante toda la sesin.

    Es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular as lainformacin entre destinos.

    Manos a la obra

    Instalando SSH

    Llegando a este paso slo tenemos 2 alternativas al momento de instalar SSH, usar su versinnormal llamada SSH en la cual su licencia se acaba en el momento de darle un uso comercial ydebemos comenzar a pagar para utilizarla -hay que recalcar que el uso tanto de usuario y como usouniversitarios estn exentas y pueden usarse gratuitamente-, o utilizar la variante OpenSSH, la cualtiene una licencia OpenBSD la cual es totalmente gratis y que se encuentra en constante desarrollo.

    Una ventaja en la instalacin de SSH es que durante la instalacin de CentOS o cualquierdistribucin de linux al momento de habilitar las reglas del Firewall puede activarse las del SSH einstalar lo necesario para que este funcione, si no se puede instalar mediante el administrador de

    paquetes para luego configurarlo manualmente. Lamentablemente esto no nos sirve para demostrar

    el proceso de instalacin ni configuracin ya que se encuentra instalado pero faltara configurarlo,en vez de eso utilizaremos OpeSSH, lo que nos da una ventaja de poder utilizar la consola paraobtener e instalar las dependencias y paquetes necesario para levantar nuestro servidor.

  • 8/8/2019 8612898 Manual de SSH

    4/28

    1. Vamos al gestor de paquetes.

    2. Coloquemos SSH y luego presionemos buscar.

  • 8/8/2019 8612898 Manual de SSH

    5/28

    3. Seleccionemos los paquetes que se muestran a continuacin.

    4. Instalamos y luego verificamos si estos tienen alguna actualizacin.

  • 8/8/2019 8612898 Manual de SSH

    6/28

    Configuracin SSH

    Una vez lista la instalacin y actualizados lo paquetes del servicio procederemos abrir una terminalpara levantar el servicio e ingresar como root a la conexin del local host mediante los siguientescomandos: service ssh start inicia el servidor y note que se crearan las llaves necesarias para que

    nos podamos autenticar en este. Luego ingrese ssh localhost para conectarnos localmente alservidor, note que la conexin dice que el servidor no puede ser establecida debido a que el servidorno se puede autenticar, como estamos haciendo nuestra primera prueba y la conexin es seguraescriba yes y luego presione enter.

    Note que luego de esto una llave (RSA) ha sido aadida a los host conocidos. Despus de estodeber entrar su password de root.

    Felicitaciones hemos logrado nuestra primera prueba exitosamente, si duda de esto observedetenidamente el la ultima linea antes del ultimo prompt. Esta le indica su ultimo log hecho con lahora especificada, a esto se le llama llavero.

    Ahora salga utilizando el comando logout y note que la conexin se ha cerrado.

  • 8/8/2019 8612898 Manual de SSH

    7/28

    Bien ahora como habr notado, o debe notar, que una conexin como root es potencialmentepeligrosa, tanto que tendr el poder para cambiar cualquier cosa en nuestro servidor, es por eso quedebemos editar el archivo /etc/ssh/sshd_config para hacer que nuestra conexin sea segura ycontenga algunas restricciones importantes.

    Primero que nada hagamos un respaldo y luego procederemos a configurarlo.

  • 8/8/2019 8612898 Manual de SSH

    8/28

    Luego procedamos a editar el archivo, nosotros utilizaremos el comando gedit. Una vez ah haycosas importantes que debe saber de archivo, como por ejemplo que el signo # representa uncomentario, no importa donde se encuentre, luego de sacarlo esta funcin se volver totalmentefuncional.

  • 8/8/2019 8612898 Manual de SSH

    9/28

    Puerto.

    Ya sabemos que como default el puerto de SSH es el 22, aun as por mas poderoso que sea nuestrocortafuegos dejarlo as representa una gran vulnerabilidad, ya que todos saben esto podran escaneareste y realizar o intentar un ataque que comprometa a nuestro servidor, por lo que debemoscambiarlo entre un rango de 1025 y 65535, recuerde que este protocolo trabaja por TCP.

    Nota: debido a problemas en nuestra red utilizaremos el puerto 22 y listenaddrses como defaultdebido a que la configuracin de las polticas del cortafuego de nuestro router no nos permitenconectarnos desde otros equipos, por favor tenga en cuenta esto antes de iniciar un servidor de estetipo.

    Protocol.

    Debido a que todos los nuevos servicios ocupan este protocolo lo dejaremos tal cual a menos quetrabaje con servicios antiguos. Considere que la versin 1 presenta serias vulnerabilidades para elservidor, use la con precaucin.

  • 8/8/2019 8612898 Manual de SSH

    10/28

  • 8/8/2019 8612898 Manual de SSH

    11/28

    ListenAddress.

    Por defecto, el servicio de SSH responder peticiones a travs de todas las interfaces del sistema. Enalgunos casos es posible que no se desee esto y se prefiera limitar el acceso slo a travs de unainterfaz a la que slo se pueda acceder desde la red local. Para tal fin puede establecerse losiguiente, considerando que el servidor a configurar posee la IP X.X.X.X

    HostKey.

    Estas son las llaves publicas para el servidor sshd, tanto para el protocolo 1 y 2 de ssh, y comoarriba ya pusimos que solo usaremos el protocolo versin 2, entonces unas lineas estn de ms, osea, las que son para el protocolo 1, y aqu aparte solo usaremos las llaves dsa de la versin 2,entonces eliminaremos unas lineas y des comentaremos otra, de manera que solo quede as:

    # HostKeys for protocol version 2

    HostKey /etc/ssh/ssh_host_dsa_key

  • 8/8/2019 8612898 Manual de SSH

    12/28

    Logging.

    Ahora sigue la parte en la que el servidor sshd guarda los registros de eventos (logs):

    # Logging

    #obsoletes QuietMode and FascistLogging

    #SyslogFacility AUTH

    #LogLevel INFO

    Como vemos estn comentadas, las haremos explicitas des comentando algunas para que quede as:

  • 8/8/2019 8612898 Manual de SSH

    13/28

    # Logging

    #obsoletes QuietMode and FascistLogging

    SyslogFacility AUTH

    LogLevel INFO

    Aqu se especifican los parmetros para el registro de eventos, SyslogFacility especifica el tipo deregistros que har, en este caso es AUTH, osea de las autenticaciones que se hacen contra elservidor, el parmetro AUTH es el predeterminado. En LogLevel INFO es el valor

    predeterminado, otros parmetros estn especificados en la pagina del manual de sshd_config (mansshd_config), los parmetros DEBUG2 y DEBUG3 cada uno especifican el nivel mas alto delogueo, guardar registros con el nivel DEBUG viola la privacidad de los usuarios y por lo tantono es recomendada.

  • 8/8/2019 8612898 Manual de SSH

    14/28

    Autenticacin.

    La primera opcin es: LoginGraceTime 2m, esto le dice al servidor sshd el tiempo en el quedesconectara a el usuario despus de que no ha podido iniciar sesin satisfactoriamente, si el valores 0, no hay limite de tiempo para que un usuario se autentique, lo cual no es recomendable ya que

    de esta manera podran hacer ataques de fuerza bruta, o usando mtodos de diccionario y asadivinar la contrasea (estos mtodos son muy comunes ltimamente, yo a diario recibo desde 300,500 y el mximo 2000 intentos a diario) por lo tanto no es recomendable dejar este parmetro a 0, elvalor predeterminado es: 2m, o sea 120 segundos.

    Se descomentar y se dejara por default:

    LoginGraceTime 2m

    PermitRootLogin.

    Establece si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir elacceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valorNO.

    Luego sigue: StrictModes yes, esto significa que sshd revisara los modos y permisos de losarchivos de los usuarios y el directorio $HOME de el usuario antes de aceptar la sesin. Esto esnormalmente deseable porque algunos novatos algunas veces dejan sus directorios accidentalmentecon permiso de escritura para cualquiera, el valor predeterminado es 'yes'. Por lo tanto lo dejaremoscon su valor predeterminado:

    StrictModes yes

    Y el ultimo de estas opciones es MaxAuthTries 6, esta opcin especifica el mximo numero deintentos de autenticacin permitidos por conexin. Una vez que la intentos alcanza la mita de estevalor, las conexiones fallidas siguientes sern registradas. El valor predeterminado es 6.

    MaxAuthTries 6

    Ej: PermitRootLogin no

  • 8/8/2019 8612898 Manual de SSH

    15/28

  • 8/8/2019 8612898 Manual de SSH

    16/28

    PubkeyAuthentication yes

    Y esta otra se usa en conjunto cuando se usa autenticacin por llave publica, que especifica dondese guardaran las llaves en el host remoto, el valor por default es ~/.ssh/authorized_keys esta ruta es

    por default para el protocolo 2 de ssh, entonces la des comentaremos para hacerla explicita, as:

    AuthorizedKeysFile .ssh/authorized_keys

  • 8/8/2019 8612898 Manual de SSH

    17/28

    Ahora proceda a dejar estas opciones tal cuales estn marcadas, sea cuidadoso:

  • 8/8/2019 8612898 Manual de SSH

    18/28

    X11Forwarding.

    Establece si se permite o no la ejecucin remota de aplicaciones grficas. Si se va a acceder hacia elservidor desde red local, este parmetro puede quedarse con el valorYES. Si se va a permitir elacceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valorNO.

    Ej: X11Forwarding yes

  • 8/8/2019 8612898 Manual de SSH

    19/28

    AllowUsers.

    Permite restringir el acceso por usuario y, opcionalmente, anfitrin desde el cual pueden hacerlo. Elsiguiente ejemplo restringe el acceso hacia el servidor SSH para que solo puedan hacerlo losusuarios fulano y mengano, desde cualquier anfitrin.

    Ej: AllowUsers fulano mengano

    Otra forma de restringir el acceso de estos es aadiendoles la direccin del anfitrin.

    Ej: AllowUsers [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 8/8/2019 8612898 Manual de SSH

    20/28

    Una vez hecho estos cambios debemos reiniciar el servicio, aun que es importante que sepa todaslas funciones de los comandos para este.

    Para ejecutar por primera vez el servicio, utilice:

    # service sshd start

    Para hacer que los cambios hechos a la configuracin surtan efecto, utilice:

    # service sshd restart

    Para detener el servicio, utilice:

    # service sshd stop

    Ahora es importante que el cortafuegos o Firewall tenga las excepciones correspondientes para queeste no bloque el servicio con nuestro servidor, por lo que deber agregar:

    Si se utiliza un cortafuegos con polticas estrictas, como por ejemplo Shorewall, es necesario abrirel puerto 22 por UDP (SSH).

    Las reglas para el fichero /etc/shorewall/rules de Shorewall correspondera a algo similar a losiguiente:

    ACCEPT net fw tcp 22

    Si la red de rea local (LAN) va a acceder hacia el servidor recin configurado, es necesario abrir elpuerto correspondiente.

    ACCEPT net fw tcp 22

    ACCEPT loc fw tcp 22

  • 8/8/2019 8612898 Manual de SSH

    21/28

    Y como nos conectamos al servicio?

    Para acceder a travs de intrprete de mandatos hacia el servidor, basta con ejecutar desde el

    sistema cliente el mandato ssh definiendo el usuario a utilizar y el servidor al cual conectar:

    ssh usuario@servidor

    Para acceder hacia un puerto en particular, se utiliza el parmetro -p. En el siguiente ejemplo,utilizando la cuanta del usuario juan, se intentar acceder hacia el servidor con direccin IP192.168.0.99, el cual tiene un servicio de SSH que responde peticiones a travs del puerto 52341.

    ssh -p [email protected]

    Otra forma de restringir el acceso de estos es aadindoles la direccin del anfitrin.

    Ej: AllowUsers [email protected]

    Una ves hecho estos cambios debemos reiniciar el servicio, aun que es importante que sepa todaslas funciones de los comandos para este.

    Para ejecutar por primera vez el servicio, utilice:

    mailto:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]:[email protected]
  • 8/8/2019 8612898 Manual de SSH

    22/28

    # service sshd start

    Para hacer que los cambios hechos a la configuracin surtan efecto, utilice:

    # service sshd restart

    Para detener el servicio, utilice:# service sshd stop

    Ahora es importante que el cortafuegos o Firewall tenga las excepciones correspondientes para queeste no bloque el servicio con nuestro servidor, por lo que deber agregar:

    Si se utiliza un cortafuegos con polticas estrictas, como por ejemplo Shorewall, es necesario abrir

    el puerto 22 por UDP (SSH).

    Las reglas para el fichero /etc/shorewall/rules de Shorewall correspondera a algo similar a losiguiente:

    ACCEPT net fw tcp 22

    Si la red de rea local (LAN) va a acceder hacia el servidor recin configurado, es necesario abrir el

    puerto correspondiente.

    ACCEPT net fw tcp 22

  • 8/8/2019 8612898 Manual de SSH

    23/28

    ACCEPT loc fw tcp 22

    Al igual que cuando nos logueamos la primera ves como root nos dir que al autenticidad del serverno puede ser establecida, nuevamente escriba yes y presione enter. Nuevamente nos hemosconectados, pero esta vez no hemos terminado nuestra configuracin.

    Se asume que actualmente se encuentran logueado como "cliente".

    El directorio $HOME de el usuario no debe de ser apto para escritura ni lectura por al-

    guien mas de el grupo al que pertenece el usuario u otros, solo ejecucin.

    chmod 711 /home/Dzier

    El directorio .ssh no debe de ser escribible y leible por alguien ms de el grupo al que pertenece elusuario u otros, solo ejecutable.

    chmod 700 /home/Dzier/.ssh

  • 8/8/2019 8612898 Manual de SSH

    24/28

    Los archivos dentro de el directorio .ssh de el usuario deben de ser solamente con permisos delectura y escritura para el usaurio (rw).

    cd .ssh

    chmod 600 *

    Bien, cumpliendo los requerimientos anteriores podemos seguir.

    Lo primero es crear un par de llaves (publica/privada) DSA.

    Como usuario ejecutar:

    $ cd .sshusuario@cliente:~/.ssh$ ssh-keygen -t dsa

  • 8/8/2019 8612898 Manual de SSH

    25/28

  • 8/8/2019 8612898 Manual de SSH

    26/28

    Entonces lo comprobaremos:

    $ ssh usuario@servidor

    Enter passphrase for key '/home/usuario/.ssh/id_dsa':

    Linux 2.4.31.

    usuario@servidor:~$

  • 8/8/2019 8612898 Manual de SSH

    27/28

  • 8/8/2019 8612898 Manual de SSH

    28/28

    Conclusin

    Vimos un paso a paso de la instalacin y configuracin de SSH, descubrimos su seguridad ysencilla utilizacin.

    Sirve para conectarnos con un ordenador ante el cual no estamos fsicamente, bien porque est en

    una sala de servidores refrigerada, bien porque no tiene teclado ni pantalla, por ejemplo los queestn apilados en un rack.

    Es parecido a Telnet, con la gran diferencia de que en el caso de ssh, la informacin viaja codificadacon lo cual es muchsimo ms segura, en el caso de conectarnos a un ordenador que est en nuestraLAN no es tan importante, pero si nos conectamos a travs de Internet es fundamental, casi diraque imprescindible, usar un protocolo seguro como SSH.

    Para ms informacion sobre ssh se recomienda leer la pagina del manual de sshd_config:

    $ man sshd_config