ASEGURANDO UN SERVIDOR OPENSSH EN CENTOS
Presentado por:DANIEL COLORADO PEREZ
ANDRES FELIPE ECHAVARRIAANDRES FELIPE ARBOLEDAHONEY FELIPE
AGUDELO
Instructor:ALEXANDER AUGUSTO ALVAREZ HIGUITA
HARDENING OPENSSH
SERVICIO NACIONAL DE APRENDIZAJE SENA
REA: GESTIN DE REDES DE DATOS
FICHA: 600088
COLOMBIA2015
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 (arrancamos el servicio)# service sshd stop
(detenemos el servicio)# service sshd restart (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
[email protected]
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 [email protected]
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
defectoDonde dice #port 22 Lo des comentamos y agregamos un puerto
diferente para este caso usaremos el 52134 y quedara asiPort 52134
Para que esto funcione por completo tambin tenemos que editar el
puerto de las iptables y lo hacemos de la siguiente maneraEntramos
a la ruta /etc/sysconfig/iptables con nuestro editor de texto
preferido# gedit /etc/sysconfig/iptablesVeremos 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 restart6.2 Es 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
6Para nuestro ejemplo la dejaremos de la siguiente manera
6.4 hay 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.5 vamos 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.6 Con 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.7 esta 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 denyhostsO# yum install
denyhosts
Configuracin DenyHosts para lista blanca de direcciones IPUna
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.allowA
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 electrnicoEl 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.confBusque 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/secureHOSTS_DENY = /etc/hosts.denyBLOCK_SERVICE =
sshdDENY_THRESHOLD_INVALID = 5DENY_THRESHOLD_VALID =
10DENY_THRESHOLD_ROOT = 1DENY_THRESHOLD_RESTRICTED = 1WORK_DIR =
/var/lib/denyhostsSUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YESHOSTNAME_LOOKUP=YESLOCK_FILE
= /var/lock/subsys/denyhosts
############ DENYHOSTS OPTIONAL SETTINGS ############ADMIN_EMAIL
= [email protected]_HOST = localhostSMTP_PORT = 25SMTP_FROM =
DenyHosts SMTP_SUBJECT = DenyHosts Daily Report
############ DENYHOSTS OPTIONAL SETTINGS ############DAEMON_LOG
= /var/log/denyhostsDAEMON_SLEEP = 30sDAEMON_PURGE = 1hReiniciar
Servicio DenyHostsUna 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
startVer Logs DenyHostsPara 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/secureNov 28 15:01:43 tecmint sshd[25474]: Accepted
password for root from 172.16.25.125 port 4339 ssh2Nov 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 rootNov 29 11:08:56
tecmint sshd[31669]: Accepted password for root from 172.16.25.125
port 2957 ssh2Nov 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 rootNov 29 11:26:42
tecmint sshd[31669]: pam_unix(sshd:session): session closed for
user rootNov 29 12:54:17 tecmint sshd[7480]: Accepted password for
root from 172.16.25.125 port 1787 ssh2es IP no permitidas de
DenyHostsSi alguna vez ha bloqueado accidentalmente y desea
eliminar la direccin IP baneada de las denyhosts. Es necesario
detener el servicio. # /etc/init.d/denyhosts stopPara 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-hostsDespus de quitar la direccin IP
prohibida, reinicie el servicio de nuevo. # /etc/init.d/denyhosts
startLa 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 DenyHostsSi tienes la lista de direcciones IP estticas podr
usarla como lista blanca de forma permanente. Abra el archivo de
archivo /var/lib/DenyHosts/allowed-hosts. 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-hostsY 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
Bibliografahttp://www.linux-party.com/index.php/57-seguridad/8971-instalar-denyhosts-para-bloquear-ataques-al-servidor-ssh-ataques-de-fuerza-bruta#
posibles ataques a open sshpor 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 educaticoCreo 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
[email protected] 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