Date post: | 05-Jul-2018 |
Category: |
Documents |
Upload: | julio-somma |
View: | 219 times |
Download: | 0 times |
of 30
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