Vous êtes sur la page 1sur 15

ASEGURANDO UN SERVIDOR OPENSSH EN CENTOS

Presentado por:
DANIEL COLORADO PEREZ

ANDRES FELIPE ECHAVARRIA


ANDRES FELIPE ARBOLEDA
HONEY FELIPE AGUDELO

Instructor:
ALEXANDER AUGUSTO ALVAREZ HIGUITA

HARDENING OPENSSH

SERVICIO NACIONAL DE APRENDIZAJE SENA

REA: GESTIN DE REDES DE DATOS

FICHA: 600088

COLOMBIA
2015

OpenSSH
(Open Secure Shell) es un conjunto
de aplicaciones que permiten realizar
comunicaciones cifradas a travs de
una red, usando el protocolo SSH. Fue
creado como una alternativa libre y
abierta al programa Secure Shell, que
es software propietario. El proyecto
est liderado por Theo de Raadt,
residente en Calgary.

1. Verificar actualizaciones, primero que todo en nuestro servidor centos


podemos verificar si hay actualizaciones disponibles de la siguiente
manera
# Yum update
En el transcurso de la instalacin nos van a hacer dos preguntas, la
primera es si deseamos descargar ya las actualizaciones copiamos yes
la segunda es si las deseamos instalar y le decimos yes esperamos
que descarguen y reiniciamos.

2. Ahora instalamos o verificamos los paquetes de openssh de la siguiente


forma
# yum install openssh-server openssh-clientss
Si usted ya actualizo debe tener ya los paquetes disponibles para
empezar a configurar

3. Con los siguientes comandos arrancamos paramos o reiniciamos el


servicio
# service sshd start
# service sshd stop
# service sshd restart

(arrancamos el servicio)
(detenemos el servicio)
(reiniciamos el servicio)

4. Del siguiente modo agregamos el servicio al arranque del sistema y no


tenemos que estar arrancando el servicio cada que reiniciamos el
servidor
# chkconfig level 345 sshd on

5. El servicio de ssh ya viene prcticamente listo para su uso y lo podemos


comprobar conectndonos de la siguiente manera
# ssh [usuario]@[ip del servidor]
Ejemplo: # ssh felipe@192.168.1.1
Si se ha modificado el puerto defecto de ssh por otro (ms adelante
veremos cmo hacerlo) se logearia de la siguiente manera
# ssh p [puerto] [usuario]@[ip del servidor]

Ejemplo: # ssh p 23115 felipe@192.168.1.1

6. Ahora vamos a seguir unos pasos para hacer nuestro servidor ssh ms
seguro, entramos a la ruta /etc/ssh/ en la cual tendremos los archivos
de configuracin, el primer archivo que vamos a editar es el sshd_conf, lo
abrimos con nuestro editor de texto preferido y cambiamos o
configuramos las siguientes variables
#gedit sshd_conf (abrimos el archivo)
6.1 cambio de puerto de escucha por defecto
Donde dice
#port 22

Lo des comentamos y agregamos un puerto diferente para este caso


usaremos el 52134 y quedara asi
Port 52134

Para que esto funcione por completo tambin tenemos que editar el
puerto de las iptables y lo hacemos de la siguiente manera
Entramos a la ruta /etc/sysconfig/iptables con nuestro editor de texto
preferido
# gedit /etc/sysconfig/iptables
Veremos lo siguiente, donde dice 22 es la regla que permite el puerto
ssh lo cambiamos a 52134

Y la regla queda de la siguiente manera

Guardamos y reiniciamos los servicios de iptables y de sshd de la


siguiente manera
# service iptables restart
# service sshd restart
6.2Es indispensable que el usuario root no pueda acceder via SSH. Siempre
podremos escalar privilegios, una vez hayamos accedido al servidor, a
travs de su o sudo, pero es importante que el usuario root no pueda
acceder directamente desde el servidor SSH. Buscamos en el mismo
archivo sshd_conf donde dice PermitRootLogin lo descomentamos y
negamos la sentencia cambiando el yes por un no

Y quedara algo como esto

6.3 Limitar el intento de conexiones fallidas y cortar la conexin Esta opcin

si la descomentamos y la ponemos en funcionamiento nos indica el


nmero de intentos que tiene el usuario para hacer login, es decir el
usuario se conecta, hace login y se equivoca, entonces vuelve y pone la
contrasea y se quivoca se corta la conexin segn la regla si ponemos
maxauthtries 2 nos indica que luego de dos intentos fallidos se cortara
la conexin
#MaxAuthTries 6

Para nuestro ejemplo la dejaremos de la siguiente manera

6.4hay otra opcin que define el nmero mximo de usuarios conectados


simultneamente a tu mquina. Esto ha de adaptarse a tus propias
necesidades y es maxsessions para nuestro servidor solo vamos a
permitir el mximo de 4 sesiones activas

6.5vamos a limitar el tiempo maximo de inactividad de una session, ya que


por seguridad que un terminal olvidado y abierto pueda caer en malas
manos, buscamos las directivas

#ClientAliveInterval 0 (especificamos el contador de segundos de


inactividad para la desconexion)
#ClientAliveCountMax 0 (cada cuanto chequea si la cuenta esta activa )
Luego de esto en nuestro ejemplo vamos a especificar que luego de 5
min de inactividad y quedaria de la siguiente manera

6.6Con la opcin MaxStartups conseguimos limitar el nmero de


sesiones abiertas desde una misma IP. Por ejemplo si queremos
limitar a 3 sesiones por IP emplearemos la siguiente linea de
configuracin:
MaxStartups 3
Asi lo encontramos en el archivo

Solo vamos a permitir 2 sessiones por ip entonces quedara de la


siguiente manera

6.7esta configuracin no es tan prescindible pero podremos advertir a un


posible atacante que la piense dos veces, aca configuraremos un banner
para que en el momento de logueo aparezca un mensaje donde
podremos poner lo deseado por ejemplo advirtiendo las cuestiones
legales si se accede de forma forzosa
en el archivo ubicamos la sentencia

Lo editamos de la siguiente manera

Luego de esto guardamos reiniciamos y en el archivo issue.net es donde


pondremos el mensaje que queremos que salga en el inicio de sesin
#gedit /etc/issue.net

Otro punto importante es asegurarte que se utilice nicamente la versin 2


del protocolo pero esta configuracin la encontraremos en otro archivo,
recordemos que estamos en el sshd_conf guardamos cerramos y salimos
para abrir el archivo ssh_conf que esta ubicado en la misma ruta donde
estamos que es /etc/ssh/ ahora abrimos el ssh_conf y buscamos la lnea
#protocol 2,1 aparte de ahora vamos a hacer las configuraciones en este
archivo

Descomentamos y dejamos solo el 2 y queda de la siguiente manera

Implementaremos denyhost para la prevencin de intrusos

DenyHosts es un programa de cdigo abierto y programa de seguridad de


prevencin de intrusiones para servidores SSH desarrollados en lenguaje
Python por Phil Schwartz. Su objetivo es controlar y analizar los registros del
servidor SSH para los intentos de login fallidos, ataques basados en diccionario
y ataques de fuerza bruta mediante el bloqueo de las direcciones IP que se
originan por la adicin de una entrada al archivo /etc/hosts.deny en el servidor
y evita que la direccin IP inicie de sesin.

Por instrumento DenyHosts predeterminada no est incluida en los sistemas


Linux, tenemos que instalarlo mediante terceros repositorio EPEL . Una vez
aadido repositorio, instalar el paquete usando los siguientes comandos YUM.
# yum --enablerepo=epel install denyhosts
O
# yum install denyhosts

Configuracin DenyHosts para lista blanca de direcciones IP


Una vez que DenyHosts est instalado, asegrese de que en la lista blanca
est su propia direccin IP, para que nunca se le cierre la puerta. Para ello,
abra un archivo /etc/hosts.allow.
# vi /etc/hosts.allow
A continuacin la descripcin, agregue la direccin IP en una lnea separada,
que nunca desea bloquear. El formato debe ser de la siguiente manera.
#
# Hosts.allow Este archivo contiene reglas de acceso que se utilizan para
# Permitir o denegar la conexin a los servicios de red que

# Utilizar la biblioteca tcp_wrappers o que han sido


# Iniciado a travs de un xinetd tcp_wrappers habilitado.
#
# Vase 'man 5 hosts_options "y" man 5 hosts_access'
# Para informacin sobre la sintaxis de la regla.
# Vase 'man tcpd' para obtener informacin sobre tcp_wrappers
#
sshd: 172.16.25.125
sshd: 172.16.25.126
sshd: 172.16.25.127
Configuracin DenyHosts para alertas por correo electrnico
El archivo de configuracin se encuentra en /etc/denyhosts.conf. Este
archivo se utiliza para enviar alertas por correo electrnico acerca de los inicios
de sesin sospechosos y los host restringidas. Abra el archivo utilizando el
editor vi.
vi /etc/denyhosts.conf
Busque el "ADMIN_EMAIL 'y aada su direccin de correo electrnico para
recibir alertas por email acerca logins sospechosos (para mltiples alertas,
utilizar comas para separar destinatarios). Por favor, eche un vistazo en el
archivo de configuracin de mi servidor CentOS 6.3. Cada variable est bien
documentada para configurarlo de acuerdo a su gusto.
############ DENYHOSTS REQUIRED SETTINGS ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
BLOCK_SERVICE = sshd
DENY_THRESHOLD_INVALID = 5
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 1
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts

############ DENYHOSTS OPTIONAL SETTINGS ############


ADMIN_EMAIL = ravisaive@host.com

SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <user@host.com>
SMTP_SUBJECT = DenyHosts Daily Report

############ DENYHOSTS OPTIONAL SETTINGS ############


DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
Reiniciar Servicio DenyHosts
Una vez que haya terminado con la configuracin, reinicie el servicio
denyhosts para hagan efectos los nuevos cambios. Tambin vamos a aadir el
servicio denyhosts para el arranque del sistema.
# chkconfig denyhosts on
# service denyhosts start
Ver Logs DenyHosts
Para ver los registros de cuantos atacantes por ssh trataron de obtener acceso
a su servidor ssh, Utilice el comando siguiente para ver los registros en tiempo
real.
tail -f /var/log/secure
Nov 28 15:01:43 tecmint sshd[25474]: Accepted password for root from
172.16.25.125 port 4339 ssh2
Nov 28 15:01:43 tecmint sshd[25474]: pam_unix(sshd:session): session opened
for user root by (uid=0)
Nov 28 16:44:09 tecmint sshd[25474]: pam_unix(sshd:session): session closed
for user root
Nov 29 11:08:56 tecmint sshd[31669]: Accepted password for root from
172.16.25.125 port 2957 ssh2
Nov 29 11:08:56 tecmint sshd[31669]: pam_unix(sshd:session): session opened
for user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session opened for
user root by (uid=0)
Nov 29 11:12:00 tecmint atd[3417]: pam_unix(atd:session): session closed for
user root
Nov 29 11:26:42 tecmint sshd[31669]: pam_unix(sshd:session): session closed
for user root
Nov 29 12:54:17 tecmint sshd[7480]: Accepted password for root from
172.16.25.125 port 1787 ssh2es IP no permitidas de DenyHosts

Si alguna vez ha bloqueado accidentalmente y desea eliminar la direccin IP


baneada de las denyhosts. Es necesario detener el servicio.
# /etc/init.d/denyhosts stop
Para quitar o eliminar direcciones IP prohibido completamente. Hay que
editar los siguientes archivos y eliminar la direccin IP.
# vi /etc/hosts.deny
# vi /var/lib/denyhosts/hosts
# vi /var/lib/denyhosts/hosts-restricted
# vi /var/lib/denyhosts/hosts-root
# vi /var/lib/denyhosts/hosts-valid
# vi /var/lib/denyhosts/users-hosts
Despus de quitar la direccin IP prohibida, reinicie el servicio de nuevo.
# /etc/init.d/denyhosts start
La direccin IP infractora, es aadida a todos los ficheros en el directorio /
var/lib/denyhosts, as que se hace muy difcil determinar los archivos que
contienen la direccin IP infractora. La mejor manera de averiguar la direccin
IP es con el comando grep. Por ejemplo, para averiguar la direccin IP
172.16.25.125, hacer.
cd /var/lib/denyhosts
grep 172.16.25.125 *
Lista blanca de direcciones IP en DenyHosts
Si tienes la lista de direcciones IP estticas podr usarla como lista blanca de
forma permanente. Abra el archivo de archivo /var/lib/DenyHosts/allowedhosts. Sea cual sea la direccin IP incluida en este archivo no ser prohibido
de forma predeterminada (considere esto como una lista blanca).
# vi /var/lib/denyhosts/allowed-hosts
Y aadir la direccin IP de cada lnea por separado. Guarde y cierre el archivo.
# No debemos bloquear localhost
127.0.0.1
172.16.25.125
172.16.25.126
172.16.25.127

Bibliografa
http://www.linux-party.com/index.php/57-seguridad/8971-instalar-denyhostspara-bloquear-ataques-al-servidor-ssh-ataques-de-fuerza-bruta#

posibles ataques a open ssh


por medio de la aplicacin hydra en este caso instalada en kali Linux realice un
ataque hecho por medio de fuerza bruta en la cual se crea un diccionario de
posibles cables y posibles usuarios ( si se conoce el usuario no es necesario
crear un diccionario en el caso), este servidor ssh fue creado sin ningn tipo de
proteccin a continuacin doy el paso paso a seguir y el resultado satisfactorio,
vale aclarar que segn el grado de complejidad del password y/o la contrasea
se dificultara mas el proceso o se tardara mas espero les sea de provecho va le
aclarar que este proceso es meramente educatico
Creo un diccionario

El genera las posibles contraseas y convinaciones segn letras que nos le


dimos

Lanzamos en ataque de fuerza bruta que buscara las posibles claves

De las posibles 46656 posibles claves acaba de encontrar la contrasea

Realizamos la prueba con el usuario en este caso es root el comando seria


Ssh root@ip de la victima ---

ssh root@192.168.81.131

El nos preguntara si queremos continuar con la coneccion le damos yes y ya


ingresamos al equipo victima

Ya vemos lo que tiene la maquina victima

Creamos una carpeta

Ya quedo creada en la otra maquina

Vous aimerez peut-être aussi