SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
1
Universidad Tecnológica de Panamá
Facultad de Ingeniería de Sistemas Computacionales
Maestría en Seguridad Informática
Seguridad en sistemas operativos
Hardening en Nix: Asegurar un FTP Server
Profesora: Mildred Echezano
Elaborado por:
Montenegro, Jesús - Cédula: 8-843-89
Moreno, José - Cédula: 8-794-402
Rodríguez, Carlos - Cédula: 8-814-1930
Lunes, 23 de noviembre de 2015
2
Contenido
Introducción ________________________________________________________________________3
Contenido __________________________________________________________________________4
Procesos que se deben tomar en cuenta antes de iniciar nuestro hardening________________________4
Instrucciones línea Base: mejores prácticas para el Hardening de un Servidor FTP ______________7
Instalación, configuración SSH ___________________________________________________7
Instalación de fail2ban _________________________________________________________18
Instalación del postfix para envío de correos ________________________________________22
Instalación y edición del figlet ___________________________________________________26
Instalación de jailkit y sus dependencias ___________________________________________30
Configuración de las cuotas para limitar la cantidad de almacenamiento por usuario ________42
Uso de scripts para creación de usuarios y enjaularlos a las carpetas específicas ____________46
Conclusión ________________________________________________________________________51
Bibliografía _______________________________________________________________________52
3
Introducción
Hardening o endurecimiento al sistema operativo, son las configuraciones que por seguridad de nuestro
sistema operativo, es necesario configurar algunos parámetros que por defecto trae nuestro servidor y las
aplicaciones que vamos a instalar, para así reducir la cantidad de vulnerabilidades en el mismo, esto lo
podemos lograr eliminando aplicaciones, servicios, usuarios innecesarios en el sistema así como cerrando
puertos que tampoco estén en uso, además de otros métodos que pueden ayudarnos a proteger nuestros
servidores.
El principal motivo para endurecer la seguridad de nuestro servidor FTP, es ganar tiempo frente a un
ataque, pues entre más configuraciones y otros métodos de seguridad implementemos, nunca lograremos
evitar por completo, que un atacante logre su objetivo si no le agregamos a nuestra seguridad, un
monitoreo de todos los equipos, por medio de alertas.
Cabe aclarar que el hardening de un equipo aunque es un elemento importante, no es el único factor de
protección que se debe implementar para proteger los servidores y equipos dentro de nuestra red, es
importante implementar protección externa a nuestros equipos, por medio de Firewall, IPS, IDS,
HoneyPots. Dentro de este trabajo solo nos limitaremos a la protección de nuestro servidor FTP, por medio
de configuraciones al sistema operativo, y apoyándonos en aplicaciones externas de sistema operativo,
para limitar el acceso que cada usuario pueda tener dentro del directorio de nuestro servidor.
4
Procesos que se deben tomar en cuenta antes de iniciar nuestro hardening
 Configuraciones necesarias para protegerse de posibles ataques físicos o de hardware de la
máquina. Entre otras actividades, destacan la actualización de firmware, el establecimiento de
contraseñas complejas para el arranque del equipo y la configuración de la BIOS, la des habilitación
de inicio de sistema para cualquier unidad que no sea el disco duro principal, y en casos de servidores,
la des habilitación de dispositivos ópticos, usb o similares, para evitar cualquier entrada de malware
desde un medio de almacenamiento externo.
 Instalación segura del sistema operativo. Esto implica, entre otras cosas, el considerar al menos
dos particiones primarias (una para el sistema operativo en sí y otra para carpetas y archivos de
importancia), el uso de un sistema de archivos que tenga prestaciones de seguridad, y el concepto de
instalación mínima, es decir, evitando la instalación de cualquier componente de sistema que no sea
necesario para el funcionamiento del sistema.
 Activación y/o configuración adecuada de servicios de actualizaciones automáticas, para
asegurar que el equipo tendrá todos los parches de seguridad que entrega el proveedor al día. En caso
de que se encuentre dentro de una corporación, es adecuado instalar un servidor de actualizaciones,
que deberá probar en un entorno de laboratorio el impacto de la instalación de actualizaciones antes
de instalarlas en producción.
 Instalación, configuración y mantención de programas de seguridad tales como Antivirus,
Antispyware, y un filtro Antispam según las necesidades del sistema.
 Configuración de la política local del sistema, considerando varios puntos relevantes:
 Política de contraseñas robusta, con claves caducables, almacenamiento histórico de contraseñas
(para no usar contraseñas cíclicas), bloqueos de cuentas por intentos erróneos y requisitos de
complejidad de contraseñas.
5
 Renombramiento y posterior des habilitación de cuentas estándar del sistema, como
administrador e invitado.
 Asignación correcta de derechos de usuario, de tal manera de reducir las posibilidades de elevación
de privilegios, y tratando siempre de limitar al mínimo los privilegios y/o derechos de los usuarios
activos.
 Configuración de opciones de seguridad generales, como aquellas relacionadas con rutas de acceso
compartido, apagado de sistema, inicio y cierre de sesión y opciones de seguridad de red.
 Restricciones de software, basado en lo posible en el uso de listas blancas de software permitido
más que en listas negras del mismo.
 Activación de auditorías de sistema, claves para tener un registro de algunos intentos de ataque
característicos como la adivinación de contraseñas.
 Configuración de servicios de sistema. En este punto es necesario tratar siempre de deshabilitar
todos aquellos servicios que no vayan a prestar una funcionalidad necesaria para el funcionamiento
del sistema. Por ejemplo, si su equipo no posee tarjetas de red inalámbrica, el servicio de redes
inalámbricas debería estar deshabilitado.
 Configuración de los protocolos de Red. En la medida de lo posible, es recomendable usar sistemas
de traducción de direcciones (NAT) para direccionar los equipos internos de una organización.
Deshabilitar todos aquellos protocolos de red innecesarios en el sistema y limitar el uso de los mismos
al mínimo. TCP/IP es un protocolo que no nació pensando en seguridad, por lo que limitar su uso al
estrictamente necesario es imperativo.
 Configuración adecuada de permisos de seguridad en archivos y carpetas del sistema. En la
medida de lo posible, denegar explícitamente cualquier permiso de archivo a las cuentas de acceso
anónimos o que no tengan contraseña. Un correcto set de permisos a nivel de carpetas y archivos es
clave para evitar acceso no deseado al contenido de los mismos.
6
 Configuración de opciones de seguridad de los distintos programas, como clientes de correo
electrónico, navegadores de internet y en general de cualquier tipo de programa que tenga interacción
con la red.
 Configuración de acceso remoto. En caso de no ser estrictamente necesario, es bueno deshabilitar
el acceso remoto. Sin embargo, cuando es necesario tener control remoto de la máquina, es preciso
configurarlo de manera adecuada, restringiendo el acceso a un número muy limitado de usuario,
restringiendo al mínimo las conexiones concurrentes, tomando cuidado en la desconexión y cierre de
sesión y estableciendo un canal cifrado de comunicaciones para tales propósitos, como SSH.
 Configuración adecuada de cuentas de usuario, tratando de trabajar la mayor parte del tiempo con
cuentas de acceso limitado y deshabilitando las cuentas de administrador. Es absolutamente
recomendable usar la impersonificación de usuarios para realizar labores administrativas en vez de
iniciar sesión como administradores.
 Cifrado de archivos o unidades según las necesidades del sistema, considerando un
almacenamiento externo para las llaves de descifrado. Considerar además la opción de trabajar con
sistemas de cifrado de mensajería instantánea y correo electrónico.
 Realizar y programar un sistema de respaldos frecuente a los archivos y al estado de sistema.
En la medida de lo posible, administrar los respaldos vía red o llevar los respaldos a unidades físicas
que estén alejadas del equipo que las origina.
7
Instrucciones línea Base: mejores prácticas para el Hardening de un Servidor FTP
Por lo amplio que iba ser este manual, decidimos omitir la instalación del sistema operativo, pero como
pre-requisitos para iniciar este hardening, necesitaremos instalar Debian 8, ya sea en una maquina física
o virtual, instalamos los servicios básicos, y el servicio SSH solamente, es decir deshabilitamos los demás
servicios que aparezcan seleccionados por defecto.
Antes de iniciar con la configuración del SSH, repacemos que es y para que nos servirá esto en nuestro
servidor FTP.
SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y
del programa que lo implementa, y sirve para acceder a máquinas remotas a travé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 si tenemos ejecutando un Servidor X (en
sistemas Unix y Windows).
Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto archivos
sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a
los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante
SSH.
SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa técnicas
de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no
legible, evitando que terceras personas puedan descubrir el usuario y contraseña de la conexión ni lo que
se escribe durante toda la sesión; aunque es posible atacar este tipo de sistemas por medio de ataques de
REPLAY y manipular así la información entre destinos.
Ahora que ya sabemos que es el SSH y para que lo necesitamos, vamos a iniciar dar inicio con la
configuración de seguridad de nuestro servidor FTP, basándonos en las mejores prácticas para endurecer
nuestro servidor, iniciaremos con las configuraciones del servicio SSH.
1. Instalación, configuración SSH.
Vamos a editar algunos parámetros en el archivo /etc/ssh/sshd_config:
8
Primero escribiremos la siguiente línea para abrir el archivo sshd_config:
nano /etc/ssh/sshd_config
1.2 Uso del Protocolo ssh2, verificaremos que en la configuración este habilitado la versión 2 del SSH:
Protocol 2
9
1.3 Limitaremos el acceso a los usuarios o grupos con el siguiente parámetro:
AllowGroups sshaccess
10
1.4 Configuraremos el tiempo de inactividad
ClientAliveInterval 300
ClientAliveCountMax 0
11
1.5 Verificamos que están los siguientes parámetros:
IgnoreRhosts yes
HostbasedAuthentication no
12
1.6 Deshabilitaremos el acceso de root por ssh:
PermitRootLogin no
13
1.7 Cambiaremos el puerto ssh por defecto por el puerto que queramos, nosotros elegimos el puerto 1022:
Port 1022
14
1.8 Deshabilitamos la contraseña en blanco
PermitEmptyPasswords no
15
1.9 Habilitaremos el banner de advertencia quitándole el signo de #:
Por defecto #Banner /etc/issue.net
Quitamos el #, nos debe quedar: Banner /etc/issue.net
16
Guardamos las configuraciones del archivo sshd_config, si usamos nano como nuestro interprete de
comandos, entonces presionamos la tecla control + la tecla O, luego presionamos la tecla Enter y por
último presionamos la tecla X, para salir del archivo.
1.10 Podemos editar el banner y su información en el siguiente archivo:
nano /etc/issue.net
Reiniciamos el servicio SSH con el siguiente comando:
17
/etc/init.d/ssh restart
Ahora que ya tenemos configurado nuestro servicio SSH, vamos a instalar y configurar nuestra siguiente
aplicación, llamada fail2ban.
Fail2ban es una aplicación escrita en Python para la prevención de intrusos en un sistema, que actúa
penalizando o bloqueando las conexiones remotas que intentan accesos por fuerza bruta. Se distribuye
bajo licencia GNU y típicamente funciona en sistemas POSIX que tengan interfaz con un sistema de
control de paquetes o un firewall local (como iptables o TCP Wrapper).
Habitualmente las computadoras sufren ataques de fuerza bruta (especialmente servidores SSH, FTP, etc)
con el fin de descifrar las contraseñas y acceder a ellas. En este punto es indispensable una buena política
de contraseñas. Sin embargo, los ataques por fuerza bruta también consumen un gran ancho de banda,
disparan el volumen de los archivos de registro (logs) de nuestro sistema y ocupan ciclos de CPU que
podrían dedicarse a tareas útiles.
Fail2ban busca en los registros (logs) de los programas que se especifiquen las reglas que el usuario decida
para poder aplicar una penalización. La penalización puede ser bloquear la aplicación que ha fallado en
un determinado puerto, bloquearla para todos los puertos, etc. Las penalizaciones, así como las reglas, son
definidas por el usuario.
Habitualmente, si las IP de ataque se prohíben por un lapso prudencial de tiempo, la sobrecarga de red
provocada por los ataques baja, y también se reduce la probabilidad de que un ataque de fuerza bruta
basada en diccionarios tenga éxito.
Ante una cantidad predefinida (por el usuario) de intentos fallidos, fail2ban determina la acción a tomar
sobre la IP que originó el problema. Puede simplemente notificar por e-mail del suceso, denegar el acceso
a la IP atacante, bloquearla en determinado puerto y habilitarla en otros (modificando las entradas
correspondientes en iptables, o el firewall local que corresponda), etc. Puede asimismo levantar las
prohibiciones después de un determinado periodo, por si el problema no obedeciera a un ataque sino
simplemente a errores del usuario intentando loguearse. Las acciones son configurables
mediante scripts de Python.,
18
Ahora que ya sabemos para qué sirve Fail2ban, vamos a iniciar con la instalación y configuración de esta
útil aplicación para evitar ataques de fuerza bruta.
2. Instalación de fail2ban:
apt-get install fail2ban
2.1 Editamos el archivo de configuración con los siguientes parámetros:
nano /etc/fail2ban/jail.conf
[ssh]
enabled = true
port = 1022
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
19
2.2 Si queremos habilitar el envío de informes usamos o instalamos el SMTP y editamos los siguientes
parámetros:
Reemplazamos el correo por el correo de nosotros:
destemail = root@localhost
20
Buscamos la línea action = %(action_)s
Y la reemplazamos por: action = %(action_mwl)s
21
Reiniciamos el Fail2ban:
/etc/init.d/fail2ban restart
Algunas alerta realizadas por el Fail2Ban y cómo podemos ver, nos realiza una notificación en nuestro
correo.
22
La siguiente aplicación que instalaremos es el Postfix, para poder recibir las alertas que aplicaciones como
el Fail2ban generaran y que necesitamos recibir, para poder estar alertado de cualquier evento sospechoso.
Postfix es un servidor de correo de software libre / código abierto, un programa informático para el
enrutamiento y envío de correo electrónico, creado con la intención de que sea una alternativa más rápida,
fácil de administrar y segura al ampliamente utilizado Sendmail.
3. Instalación del postfix para envío de correos:
apt-get install mailutils
apt-get update
23
3.1 Instalamos nuestro servidor de correo, el postfix:
apt-get install postfix
24
3.1 Seleccionamos "Internet Site"
25
3.2 Luego introducimos el dominio.
System mail name:
Ejemplo: serpruebas.com
3.3 Reiniciamos el servicio Postfix:
service postfix restart
3.4 Probamos enviando un correo con el siguiente comando:
echo "This is the body of the email" | mail -s "This is the subject line" user@example.com
26
Ahora vamos a instalar FIGlet, una aplicación informática que genera banners de texto, en varias
tipografías, formadas por letras compuestas por conglomerados de caracteres ASCII más pequeños.
4 Instalación y edición del figlet.
4.1 Instalamos el banner de manera dinámica
apt-get install figlet
27
4.2 Creamos la carpeta
mkdir /etc/update-motd.d/
4.3 Entramos a la carpeta
cd /etc/update-motd.d/
28
4.4 Creamos los archivos de información
touch 00-header && touch 10-sysinfo && touch 90-footer
4.5 Removemos el banner anterior
rm /etc/motd
4.6 Creamos un enlace directo
ln -s /var/run/motd /etc/motd
4.7 Dentro de la carpeta creada /etc/update-motd.d:
Editamos los archivos de información: 00-header, 10-sysinfo,y 90-footer.
29
4.7.1 Abrimos el archivo 00-header:
nano 00-header
Luego copiamos lo siguiente dentro de este archivo:
[ -r /etc/lsb-release ] && . /etc/lsb-release
if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
# Fall back to using the very slow lsb_release utility
DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
figlet $(hostname)
printf "n"
printf "Welcome to %s (%s).n" "$DISTRIB_DESCRIPTION" "$(uname -r)"
printf "n"
4.7.2 Abrimos el archivo 10-sysinfo:
nano 10-sysinfo
Luego copiamos lo siguiente dentro de este archivo:
date=`date`
load=`cat /proc/loadavg | awk '{print $1}'`
root_usage=`df -h / | awk '/// {print $(NF-1)}'`
memory_usage=`free -m | awk '/Mem:/ { total=$2 } /buffers/cache/ { used=$3
} END { printf("%3.1f%%", used/total*100)}'`
swap_usage=`free -m | awk '/Swap/ { printf("%3.1f%%", "exit !$2;$3/$2*100")
}'`
users=`users | wc -w`
time=`uptime | grep -ohe 'up .*' | sed 's/,/ hours/g' | awk '{ printf $2"
"$3 }'`
processes=`ps aux | wc -l`
ip=`ifconfig $(route | grep default | awk '{ print $8 }') | grep "inet addr"
| awk -F: '{print $2}' | awk '{print $1}'`
echo "System information as of: $date"
echo
printf "System load:t%stIP Address:t%sn" $load $ip
printf "Memory usage:t%stSystem uptime:t%sn" $memory_usage "$time"
printf "Usage on /:t%stSwap usage:t%sn" $root_usage $swap_usage
printf "Local Users:t%stProcesses:t%sn" $users $processes
echo
30
4.7.3 Abrimos el archivo 90-footer:
nano 90-footer
Luego copiamos lo siguiente dentro de este archivo:
[ -f /etc/motd.tail ] && cat /etc/motd.tail || true
4.8 Damos permisos de ejecución
chmod +x /etc/update-motd.d/*
Ahora necesitamos que cada usuario no pueda salir de un directorio es decir, ese usuario no podrá navegar
por el sistema de archivos y se le podrán definir los programas que queramos. ¿En qué situación se puede
utilizar esto? Cuando tenemos un servidor que es compartido por varios usuarios o se quieren tener
diferentes hostings.
Para conseguir esto hay un programa llamado jailkit que cumple perfectamente la función de enjaular
usuarios.
5. Instalación de jailkit y sus dependencias:
apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
31
5.1 Vamos a la carpeta temporal y descargamos el paquete:
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
32
Posiblemente nos saldrá un error pidiendo ingresar un disco en el cd-rom para continuar la instalación,
para solucionar este error editaremos el siguiente archivo:
nano /etc/apt/sources.list
Modificamos el archivo hasta que nos quede igual al archivo de la siguiente imagen:
33
5.2 Una vez solucionado el error anterior, vamos a descomprimir el archivo que habíamos descargado:
tar xvfz jailkit-2.17.tar.gz
5.3 Entramos en la carpeta de jailkit y ejecutamos el binario
cd jailkit-2.17
./debian/rules binary
34
5.4 Instalamos los paquetes
cd ..
dpkg -i jailkit_2.17-1_*.deb
35
Configuración del jailkit
5.6 Creamos la carpeta de jaula o jail
mkdir /home/chrootusers
5.7 Asignamos el dueño de la carpeta el usuario root:
chown root:root /home/chrootusers
36
5.8 Creamos la jaula con los programas básicos
jk_init -v /home/chrootusers netutils basicshell jk_lsh openvpn ssh sftp
5.9 Creamos el usuario
adduser jose
Ejemplo: adduser jose
37
5.10 Probamos la creación del usuario entramos al directorio
cd /home
Verificamos con el comando y vemos la carpeta de usuario
ls
38
5.11 Vamos a enjaular el usuario
jk_jailuser -m -j /home/chrootusers/ usuario
Ejemplo: jk_jailuser -m -j /home/chrootusers/ jose
5.12 Vamos a /home/chrootusers
cd /home/chrootusers
39
Verificamos el usuario debe estar en la siguiente ruta
cd /home/chrootusers/home
Si usamos ls debemos ver el usuario creado
40
5.13 Vamos editar el jail de los usuarios para que puedan acceder
nano /home/chrootusers/etc/passwd
5.14 Buscamos la línea del usuario y le borramos la última línea de "/usr/sbin/jk_lsh", reemplazamos por
"/bin/bash"
Ejemplo:
arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh
arun:x:1006:1005:,,,:/home/arun:/bin/bash
41
5.15 Probamos accediendo por ssh al servidor solo debemos tener acceso a la jaula
ssh jose@192.168.0.1
También podemos acceder desde el FireZilla para verificar el usuario creado, y la carpeta a la que este
tiene acceso dentro de nuestro servidor.
42
6 Configuración de las cuotas para limitar la cantidad de almacenamiento por usuario.
Necesitamos que los usuarios de nuestro sistema no consuman más recursos de los disponibles, resulta
indispensable habilitar un límite de ocupación de espacio en el disco duro.
6.1 Primero instalamos nuestro administrador de cuotas con el siguiente comando:
apt-get install quota quotatool
43
6.2 Configuración de las cuotas
nano /etc/fstab
6.3 Añadimos la siguiente línea "usrquota" al directorio raíz "/":
LABEL=DOROOT / ext4 errors=remount-ro,usrquota 0 1
El archivo fstab nos debería quedar de la siguiente manera:
44
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-
ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
6.4 Volvemos a cargar la partición
mount -o remount /
6.5 Configuramos las cuotas:
quotacheck -avugm
quotaon -avug
6.6 Creación de cuotas por usuario:
edquota usuario
Ejemplo: edquota jose
45
**Los parámetros que vamos a editar son donde la tercera y la cuarta columna de izquierda a derecha soft
y hard y le ponemos
10M=10000
15M=10240
Estamos limitando el espacio de almacenamiento del usuario jose a 10 MB como tamaño máximo por
archivo, y 15 MB como tamaño total de almacenamiento en el disco.
6.7 Verificamos las cuotas con el comando
quota ftpuser
46
Ejemplo:
quota jose
Nos aparecerá en pantalla lo siguiente:
Disk quotas for user jose (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/disk/by-label/DOROOT 8 10000 10240 2 0 0
6.8 Comprobamos las cuotas de todos los usuarios:
repquota –a
7 Uso de scripts para creación de usuarios y enjaularlos a las carpetas específicas:
7.1 Creamos el grupo
groupadd sshaccess
47
7.2 El siguiente script asume que hemos creado la carpeta del jail en /home/chrootusers y el grupo
sshaccess. Creación del script
touch chroot-jail.sh
7.3 La información del script que debemos poner dentro del archivo chroot-jail.sh:
## sanity checks
if [ "$#" -ne 2 ]; then
echo "This application requires two arguments: username 'passwdhash' (single-quotes required)"
exit 1
fi
if [ ! -d /home/chrootusers/./home/ ]; then
echo "This application assumes installation to /home/chrootusers"
exit 1
fi
getent passwd $1 &>/dev/null
if [ $? -eq 0 ]; then
echo "User $1 already exists on host system. Please remove and re-create using this tool."
exit 1
fi
getent group sshaccess &>/dev/null
if [ $? -ne 0 ]; then
echo "This application assumes 'AllowGroups sshaccess' restriction in /etc/ssh/sshd_config. sshaccess
group missing"
exit 1
fi
## creation
echo
echo "Creating User and Jailed Home Directory"
echo
useradd -m -d /home/chrootusers/./home/$1 -s /usr/sbin/jk_chrootsh -p $2 $1
echo "Adding User to 'sshaccess' Group"
echo
gpasswd -a $1 sshaccess &>/dev/null
JAILUID=$(id -u $1)
JAILGID=$(id -g $1)
48
echo "Creating Required Internal Jail Passwd and Group Files"
echo
echo "$1:x:${JAILUID}:${JAILUID}::/home/$1:/bin/bash" >> /home/chrootusers/etc/passwd
echo "$1:x:${JAILGID}:" >> /home/chrootusers/etc/group
echo "Applying Quota Restrictions"
setquota -u $1 10240 15360 0 0 / || echo "Unable to Apply Quota Restrictions. Are Quotas enabled?"
7.4 Para usar el script debemos darle permisos de ejecución el siguiente comando:
chmod +x chroot-jail.sh
7.5 Ejecutamos el script, donde reemplazamos la variable entre comillas con la contraseña
./chroot-jail.sh username 'passwdhash'
Ejemplo: ./chroot-jail.sh jose 'EstaEsMiContraseña'
passwd username
7.6 Verificamos o añadimos al grupo
adduser usuario sshaccess
Ejemplo: adduser jose sshaccess
7.7 comprobamos con el comando cat que el usuario está en el grupo sshaccess
cat /etc/passwd
Nota: el script funciona sin problemas a la hora de crear los usuarios, y asignarlos al grupo con permiso
para usar el ssh, sin embargo el único problema es a la hora de usar la contraseña, la misma no funciona
por lo que debemos volver a cambiar la contraseña para que funcione.
 En caso de necesitar borrar un usuario, ejecutamos el siguiente commando:
userdel -r username
49
Ejemplo: userdel -r jose
 Posiblemente también tendremos que eliminar la carpeta del usuario:
rm -rf /home/chrootusers/home/usuario
Ejemplo: rm -rf /home/chrootusers/home/jose
8- Vamos a desbloquear cualquier IP que este banneada:
8.1 Verificamos que programa se encuentra activado el fail2ban.
fail2ban-client status
8.2 Verificamos el IP bloqueado.
iptables -L –n
50
8.3 Desbloqueamos el IP que este banneado con el siguiente comando:
fail2ban-client set ssh unbanip ipaddress
Ejemplo:
fail2ban-client set ssh unbanip 192.168.1.50
51
Conclusión
El hardenig o endurecimiento de un servidor es importante, para reducir el riesgo de un ataque, pues
recordemos que el principal motivo para endurecer la seguridad en nuestros servidores, es ganar tiempo
frente a un ataque, ya sea para reaccionar a tiempo y poder evitarlo, o hacer que la perdida de información
sea lo más mínimo posible, y para lograr esto es importante agregar un monitoreo a todos los equipos de
nuestra red, por medio de alertas.
Es importante implementar protección adicional a nuestros equipos y no limitar la protección de estos con
el solo uso de características de seguridad que por defecto trae cada sistema operativo, por medio de
Firewall, IPS, IDS, HoneyPots.
Como pudimos ver en el hardening que le realizamos a nuestro servidor FTP, podemos hacer más seguro
la comunicación que tenemos con nuestro servidor, de esa forma evitar que las contraseñas puedan ser
vistas por un atacante mediante la interceptación de una comunicación con nuestro servidor, si usáramos
por ejemplo, telnet para esto y no el protocolo SSH, tendríamos esta vulnerabilidad, también podemos
configurar la información que despliega nuestro servidor cuando un usuario, o como también pudiera ser
un posible atacante intenta iniciar sesión, modificando la información que por defecto aparece.
También vimos lo importante que es configurar los intentos que un usuario puede hacer para iniciar sesión,
y así evitar un ataque de fuerza bruta, que nos pudiera causar gastar recursos de nuestro sistema,
procesando estos intentos de iniciar sesión, y que en realidad necesitamos para el buen funcionamiento de
nuestro servidor, sin decir que estos tipos de ataque pueden causar hasta una denegación de servicios.
Controlamos también el acceso que tiene cada usuario dentro de nuestro servidor FTP, de esa forma evitar
que un usuario navegue a cada directorio de nuestro servidor, y poder ver o modificar las configuraciones,
y las aplicaciones que tengamos dentro.
52
Bibliografía
 ¿Qué es Hardening?, Consultado el 15 de noviembre de 2015. Disponible en:
http://blog.smartekh.com/%C2%BFque-es-hardening/
 Secure Shell, Consultado el 15 de noviembre de 2015. Disponible en:
https://es.wikipedia.org/wiki/Secure_Shell
 Fail2ban, Consultado el 15 de noviembre de 2015. Disponible en:
https://es.wikipedia.org/wiki/Fail2ban
 Postfix, Consultado el 15 de noviembre de 2015. Disponible en:
https://es.wikipedia.org/wiki/Postfix
 FIGlet, Consultado el 15 de noviembre de 2015. Disponible en:
https://es.wikipedia.org/wiki/FIGlet
 Enjaular usuarios en Linux, Consultado el 16 de noviembre de 2015. Disponible en:
https://operativoslinux.wordpress.com/2015/02/21/enjaular-usuarios-en-linux/
 Cuotas de disco. linux, Consultado el 16 de noviembre de 2015. Disponible en:
https://claudiooq.wordpress.com/quotas-de-disco-linux/

Más contenido relacionado

La actualidad más candente

REST Enabling your Oracle Database (2018 Update)
REST Enabling your Oracle Database (2018 Update)REST Enabling your Oracle Database (2018 Update)
REST Enabling your Oracle Database (2018 Update)Jeff Smith
 
Timings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerTimings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerStacy Devino
 
A Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiA Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiJian-Hong Pan
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkRiyaj Shamsudeen
 
Polymorphic Table Functions in SQL
Polymorphic Table Functions in SQLPolymorphic Table Functions in SQL
Polymorphic Table Functions in SQLChris Saxon
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking ExplainedThomas Graf
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyTelefónica
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
Oracle Drivers configuration for High Availability
Oracle Drivers configuration for High AvailabilityOracle Drivers configuration for High Availability
Oracle Drivers configuration for High AvailabilityLudovico Caldara
 
OOW15 - managing oracle e-business suite auditing and security
OOW15 - managing oracle e-business suite auditing and securityOOW15 - managing oracle e-business suite auditing and security
OOW15 - managing oracle e-business suite auditing and securityvasuballa
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory modelSeongJae Park
 
Windows Szerver kiadások.
Windows Szerver kiadások.Windows Szerver kiadások.
Windows Szerver kiadások.Attila Nagy
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformSZ Lin
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Linaro
 

La actualidad más candente (20)

BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
REST Enabling your Oracle Database (2018 Update)
REST Enabling your Oracle Database (2018 Update)REST Enabling your Oracle Database (2018 Update)
REST Enabling your Oracle Database (2018 Update)
 
Timings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerTimings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical Hacker
 
A Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiA Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry Pi
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: Network
 
Polymorphic Table Functions in SQL
Polymorphic Table Functions in SQLPolymorphic Table Functions in SQL
Polymorphic Table Functions in SQL
 
Server pac 101
Server pac 101Server pac 101
Server pac 101
 
Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs AcademyBootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
BootCamp Online en DevOps (and SecDevOps) de GeeksHubs Academy
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
Kernel Debugging & Profiling
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & Profiling
 
Oracle Drivers configuration for High Availability
Oracle Drivers configuration for High AvailabilityOracle Drivers configuration for High Availability
Oracle Drivers configuration for High Availability
 
Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
Linux Booting Steps
Linux Booting StepsLinux Booting Steps
Linux Booting Steps
 
OOW15 - managing oracle e-business suite auditing and security
OOW15 - managing oracle e-business suite auditing and securityOOW15 - managing oracle e-business suite auditing and security
OOW15 - managing oracle e-business suite auditing and security
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Bootloaders
BootloadersBootloaders
Bootloaders
 
Windows Szerver kiadások.
Windows Szerver kiadások.Windows Szerver kiadások.
Windows Szerver kiadások.
 
Embedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 PlatformEmbedded Linux/ Debian with ARM64 Platform
Embedded Linux/ Debian with ARM64 Platform
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 

Similar a Hardening en-nix-asegurar-un-ftp-server

Similar a Hardening en-nix-asegurar-un-ftp-server (20)

Ssh, registro de acceso remoto y backup
Ssh, registro de acceso remoto y backupSsh, registro de acceso remoto y backup
Ssh, registro de acceso remoto y backup
 
Presentación
PresentaciónPresentación
Presentación
 
Seguridad en linux
Seguridad en linuxSeguridad en linux
Seguridad en linux
 
Seminario de Tecnologia Aplicada
Seminario de Tecnologia AplicadaSeminario de Tecnologia Aplicada
Seminario de Tecnologia Aplicada
 
2.3 Recoleccion de Información
2.3 Recoleccion de Información2.3 Recoleccion de Información
2.3 Recoleccion de Información
 
Presentación2
Presentación2Presentación2
Presentación2
 
Cybersecurity
CybersecurityCybersecurity
Cybersecurity
 
Configuración y administración del sistema operativo
Configuración y administración del sistema operativoConfiguración y administración del sistema operativo
Configuración y administración del sistema operativo
 
Publicación2
Publicación2Publicación2
Publicación2
 
Seguridad en servidores
Seguridad en servidoresSeguridad en servidores
Seguridad en servidores
 
43 aseguramiento de su red
43  aseguramiento de su red43  aseguramiento de su red
43 aseguramiento de su red
 
Seguridad de los dispositivos de red
Seguridad de los dispositivos de redSeguridad de los dispositivos de red
Seguridad de los dispositivos de red
 
Configuracinyadministracindelsistemaoperativo
ConfiguracinyadministracindelsistemaoperativoConfiguracinyadministracindelsistemaoperativo
Configuracinyadministracindelsistemaoperativo
 
Definiciones seguridad informatica
Definiciones seguridad informaticaDefiniciones seguridad informatica
Definiciones seguridad informatica
 
Sistemas
SistemasSistemas
Sistemas
 
Expo de servidor de archivos
Expo de servidor de archivosExpo de servidor de archivos
Expo de servidor de archivos
 
Reporte final
Reporte finalReporte final
Reporte final
 
Seguridad cap 2
Seguridad cap 2Seguridad cap 2
Seguridad cap 2
 
Politicas de seguridad
Politicas de seguridadPoliticas de seguridad
Politicas de seguridad
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 

Más de José Moreno

Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdfJosé Moreno
 
Ransomware Hidden Tear
Ransomware Hidden TearRansomware Hidden Tear
Ransomware Hidden TearJosé Moreno
 
Seguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *NixSeguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *NixJosé Moreno
 
Seguridad Perimetral
Seguridad PerimetralSeguridad Perimetral
Seguridad PerimetralJosé Moreno
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMJosé Moreno
 
Forensia en movil
Forensia en movil Forensia en movil
Forensia en movil José Moreno
 
Backbox Distribución deriva de Ubuntu
Backbox Distribución deriva de UbuntuBackbox Distribución deriva de Ubuntu
Backbox Distribución deriva de UbuntuJosé Moreno
 
Seguridad Base de Datos sql injection v1.0
Seguridad Base de Datos sql injection v1.0Seguridad Base de Datos sql injection v1.0
Seguridad Base de Datos sql injection v1.0José Moreno
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Hardening Telnet ssh final
Hardening Telnet ssh finalHardening Telnet ssh final
Hardening Telnet ssh finalJosé Moreno
 
Protección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF LógicoProtección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF LógicoJosé Moreno
 
Laboratorio 7 mod security - evasive - qos
Laboratorio 7   mod security - evasive - qosLaboratorio 7   mod security - evasive - qos
Laboratorio 7 mod security - evasive - qosJosé Moreno
 
Lab 3 cifrado criptografia
Lab 3   cifrado criptografiaLab 3   cifrado criptografia
Lab 3 cifrado criptografiaJosé Moreno
 

Más de José Moreno (18)

Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdf
 
Ransomware Hidden Tear
Ransomware Hidden TearRansomware Hidden Tear
Ransomware Hidden Tear
 
Bash Ransomware
Bash RansomwareBash Ransomware
Bash Ransomware
 
Seguridad Móvil
Seguridad MóvilSeguridad Móvil
Seguridad Móvil
 
Seguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *NixSeguridad en SIstemas Operativos *Nix
Seguridad en SIstemas Operativos *Nix
 
Honey Pots
Honey PotsHoney Pots
Honey Pots
 
Seguridad Perimetral
Seguridad PerimetralSeguridad Perimetral
Seguridad Perimetral
 
Correlacionador de Eventos OSSIM
Correlacionador de Eventos OSSIMCorrelacionador de Eventos OSSIM
Correlacionador de Eventos OSSIM
 
Forensia en movil
Forensia en movil Forensia en movil
Forensia en movil
 
Artefactos linux
Artefactos linuxArtefactos linux
Artefactos linux
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Backbox Distribución deriva de Ubuntu
Backbox Distribución deriva de UbuntuBackbox Distribución deriva de Ubuntu
Backbox Distribución deriva de Ubuntu
 
Seguridad Base de Datos sql injection v1.0
Seguridad Base de Datos sql injection v1.0Seguridad Base de Datos sql injection v1.0
Seguridad Base de Datos sql injection v1.0
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Hardening Telnet ssh final
Hardening Telnet ssh finalHardening Telnet ssh final
Hardening Telnet ssh final
 
Protección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF LógicoProtección de Sitios Web con WAF Lógico
Protección de Sitios Web con WAF Lógico
 
Laboratorio 7 mod security - evasive - qos
Laboratorio 7   mod security - evasive - qosLaboratorio 7   mod security - evasive - qos
Laboratorio 7 mod security - evasive - qos
 
Lab 3 cifrado criptografia
Lab 3   cifrado criptografiaLab 3   cifrado criptografia
Lab 3 cifrado criptografia
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (13)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Hardening en-nix-asegurar-un-ftp-server

  • 1. 1 Universidad Tecnológica de Panamá Facultad de Ingeniería de Sistemas Computacionales Maestría en Seguridad Informática Seguridad en sistemas operativos Hardening en Nix: Asegurar un FTP Server Profesora: Mildred Echezano Elaborado por: Montenegro, Jesús - Cédula: 8-843-89 Moreno, José - Cédula: 8-794-402 Rodríguez, Carlos - Cédula: 8-814-1930 Lunes, 23 de noviembre de 2015
  • 2. 2 Contenido Introducción ________________________________________________________________________3 Contenido __________________________________________________________________________4 Procesos que se deben tomar en cuenta antes de iniciar nuestro hardening________________________4 Instrucciones línea Base: mejores prácticas para el Hardening de un Servidor FTP ______________7 Instalación, configuración SSH ___________________________________________________7 Instalación de fail2ban _________________________________________________________18 Instalación del postfix para envío de correos ________________________________________22 Instalación y edición del figlet ___________________________________________________26 Instalación de jailkit y sus dependencias ___________________________________________30 Configuración de las cuotas para limitar la cantidad de almacenamiento por usuario ________42 Uso de scripts para creación de usuarios y enjaularlos a las carpetas específicas ____________46 Conclusión ________________________________________________________________________51 Bibliografía _______________________________________________________________________52
  • 3. 3 Introducción Hardening o endurecimiento al sistema operativo, son las configuraciones que por seguridad de nuestro sistema operativo, es necesario configurar algunos parámetros que por defecto trae nuestro servidor y las aplicaciones que vamos a instalar, para así reducir la cantidad de vulnerabilidades en el mismo, esto lo podemos lograr eliminando aplicaciones, servicios, usuarios innecesarios en el sistema así como cerrando puertos que tampoco estén en uso, además de otros métodos que pueden ayudarnos a proteger nuestros servidores. El principal motivo para endurecer la seguridad de nuestro servidor FTP, es ganar tiempo frente a un ataque, pues entre más configuraciones y otros métodos de seguridad implementemos, nunca lograremos evitar por completo, que un atacante logre su objetivo si no le agregamos a nuestra seguridad, un monitoreo de todos los equipos, por medio de alertas. Cabe aclarar que el hardening de un equipo aunque es un elemento importante, no es el único factor de protección que se debe implementar para proteger los servidores y equipos dentro de nuestra red, es importante implementar protección externa a nuestros equipos, por medio de Firewall, IPS, IDS, HoneyPots. Dentro de este trabajo solo nos limitaremos a la protección de nuestro servidor FTP, por medio de configuraciones al sistema operativo, y apoyándonos en aplicaciones externas de sistema operativo, para limitar el acceso que cada usuario pueda tener dentro del directorio de nuestro servidor.
  • 4. 4 Procesos que se deben tomar en cuenta antes de iniciar nuestro hardening  Configuraciones necesarias para protegerse de posibles ataques físicos o de hardware de la máquina. Entre otras actividades, destacan la actualización de firmware, el establecimiento de contraseñas complejas para el arranque del equipo y la configuración de la BIOS, la des habilitación de inicio de sistema para cualquier unidad que no sea el disco duro principal, y en casos de servidores, la des habilitación de dispositivos ópticos, usb o similares, para evitar cualquier entrada de malware desde un medio de almacenamiento externo.  Instalación segura del sistema operativo. Esto implica, entre otras cosas, el considerar al menos dos particiones primarias (una para el sistema operativo en sí y otra para carpetas y archivos de importancia), el uso de un sistema de archivos que tenga prestaciones de seguridad, y el concepto de instalación mínima, es decir, evitando la instalación de cualquier componente de sistema que no sea necesario para el funcionamiento del sistema.  Activación y/o configuración adecuada de servicios de actualizaciones automáticas, para asegurar que el equipo tendrá todos los parches de seguridad que entrega el proveedor al día. En caso de que se encuentre dentro de una corporación, es adecuado instalar un servidor de actualizaciones, que deberá probar en un entorno de laboratorio el impacto de la instalación de actualizaciones antes de instalarlas en producción.  Instalación, configuración y mantención de programas de seguridad tales como Antivirus, Antispyware, y un filtro Antispam según las necesidades del sistema.  Configuración de la política local del sistema, considerando varios puntos relevantes:  Política de contraseñas robusta, con claves caducables, almacenamiento histórico de contraseñas (para no usar contraseñas cíclicas), bloqueos de cuentas por intentos erróneos y requisitos de complejidad de contraseñas.
  • 5. 5  Renombramiento y posterior des habilitación de cuentas estándar del sistema, como administrador e invitado.  Asignación correcta de derechos de usuario, de tal manera de reducir las posibilidades de elevación de privilegios, y tratando siempre de limitar al mínimo los privilegios y/o derechos de los usuarios activos.  Configuración de opciones de seguridad generales, como aquellas relacionadas con rutas de acceso compartido, apagado de sistema, inicio y cierre de sesión y opciones de seguridad de red.  Restricciones de software, basado en lo posible en el uso de listas blancas de software permitido más que en listas negras del mismo.  Activación de auditorías de sistema, claves para tener un registro de algunos intentos de ataque característicos como la adivinación de contraseñas.  Configuración de servicios de sistema. En este punto es necesario tratar siempre de deshabilitar todos aquellos servicios que no vayan a prestar una funcionalidad necesaria para el funcionamiento del sistema. Por ejemplo, si su equipo no posee tarjetas de red inalámbrica, el servicio de redes inalámbricas debería estar deshabilitado.  Configuración de los protocolos de Red. En la medida de lo posible, es recomendable usar sistemas de traducción de direcciones (NAT) para direccionar los equipos internos de una organización. Deshabilitar todos aquellos protocolos de red innecesarios en el sistema y limitar el uso de los mismos al mínimo. TCP/IP es un protocolo que no nació pensando en seguridad, por lo que limitar su uso al estrictamente necesario es imperativo.  Configuración adecuada de permisos de seguridad en archivos y carpetas del sistema. En la medida de lo posible, denegar explícitamente cualquier permiso de archivo a las cuentas de acceso anónimos o que no tengan contraseña. Un correcto set de permisos a nivel de carpetas y archivos es clave para evitar acceso no deseado al contenido de los mismos.
  • 6. 6  Configuración de opciones de seguridad de los distintos programas, como clientes de correo electrónico, navegadores de internet y en general de cualquier tipo de programa que tenga interacción con la red.  Configuración de acceso remoto. En caso de no ser estrictamente necesario, es bueno deshabilitar el acceso remoto. Sin embargo, cuando es necesario tener control remoto de la máquina, es preciso configurarlo de manera adecuada, restringiendo el acceso a un número muy limitado de usuario, restringiendo al mínimo las conexiones concurrentes, tomando cuidado en la desconexión y cierre de sesión y estableciendo un canal cifrado de comunicaciones para tales propósitos, como SSH.  Configuración adecuada de cuentas de usuario, tratando de trabajar la mayor parte del tiempo con cuentas de acceso limitado y deshabilitando las cuentas de administrador. Es absolutamente recomendable usar la impersonificación de usuarios para realizar labores administrativas en vez de iniciar sesión como administradores.  Cifrado de archivos o unidades según las necesidades del sistema, considerando un almacenamiento externo para las llaves de descifrado. Considerar además la opción de trabajar con sistemas de cifrado de mensajería instantánea y correo electrónico.  Realizar y programar un sistema de respaldos frecuente a los archivos y al estado de sistema. En la medida de lo posible, administrar los respaldos vía red o llevar los respaldos a unidades físicas que estén alejadas del equipo que las origina.
  • 7. 7 Instrucciones línea Base: mejores prácticas para el Hardening de un Servidor FTP Por lo amplio que iba ser este manual, decidimos omitir la instalación del sistema operativo, pero como pre-requisitos para iniciar este hardening, necesitaremos instalar Debian 8, ya sea en una maquina física o virtual, instalamos los servicios básicos, y el servicio SSH solamente, es decir deshabilitamos los demás servicios que aparezcan seleccionados por defecto. Antes de iniciar con la configuración del SSH, repacemos que es y para que nos servirá esto en nuestro servidor FTP. SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a travé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 si tenemos ejecutando un Servidor X (en sistemas Unix y Windows). Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto archivos sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH. SSH trabaja de forma similar a como se hace con telnet. La diferencia principal es que SSH usa técnicas de cifrado que hacen que la información que viaja por el medio de comunicación vaya de manera no legible, evitando que terceras personas puedan descubrir el usuario y contraseña de la conexión ni lo que se escribe durante toda la sesión; aunque es posible atacar este tipo de sistemas por medio de ataques de REPLAY y manipular así la información entre destinos. Ahora que ya sabemos que es el SSH y para que lo necesitamos, vamos a iniciar dar inicio con la configuración de seguridad de nuestro servidor FTP, basándonos en las mejores prácticas para endurecer nuestro servidor, iniciaremos con las configuraciones del servicio SSH. 1. Instalación, configuración SSH. Vamos a editar algunos parámetros en el archivo /etc/ssh/sshd_config:
  • 8. 8 Primero escribiremos la siguiente línea para abrir el archivo sshd_config: nano /etc/ssh/sshd_config 1.2 Uso del Protocolo ssh2, verificaremos que en la configuración este habilitado la versión 2 del SSH: Protocol 2
  • 9. 9 1.3 Limitaremos el acceso a los usuarios o grupos con el siguiente parámetro: AllowGroups sshaccess
  • 10. 10 1.4 Configuraremos el tiempo de inactividad ClientAliveInterval 300 ClientAliveCountMax 0
  • 11. 11 1.5 Verificamos que están los siguientes parámetros: IgnoreRhosts yes HostbasedAuthentication no
  • 12. 12 1.6 Deshabilitaremos el acceso de root por ssh: PermitRootLogin no
  • 13. 13 1.7 Cambiaremos el puerto ssh por defecto por el puerto que queramos, nosotros elegimos el puerto 1022: Port 1022
  • 14. 14 1.8 Deshabilitamos la contraseña en blanco PermitEmptyPasswords no
  • 15. 15 1.9 Habilitaremos el banner de advertencia quitándole el signo de #: Por defecto #Banner /etc/issue.net Quitamos el #, nos debe quedar: Banner /etc/issue.net
  • 16. 16 Guardamos las configuraciones del archivo sshd_config, si usamos nano como nuestro interprete de comandos, entonces presionamos la tecla control + la tecla O, luego presionamos la tecla Enter y por último presionamos la tecla X, para salir del archivo. 1.10 Podemos editar el banner y su información en el siguiente archivo: nano /etc/issue.net Reiniciamos el servicio SSH con el siguiente comando:
  • 17. 17 /etc/init.d/ssh restart Ahora que ya tenemos configurado nuestro servicio SSH, vamos a instalar y configurar nuestra siguiente aplicación, llamada fail2ban. Fail2ban es una aplicación escrita en Python para la prevención de intrusos en un sistema, que actúa penalizando o bloqueando las conexiones remotas que intentan accesos por fuerza bruta. Se distribuye bajo licencia GNU y típicamente funciona en sistemas POSIX que tengan interfaz con un sistema de control de paquetes o un firewall local (como iptables o TCP Wrapper). Habitualmente las computadoras sufren ataques de fuerza bruta (especialmente servidores SSH, FTP, etc) con el fin de descifrar las contraseñas y acceder a ellas. En este punto es indispensable una buena política de contraseñas. Sin embargo, los ataques por fuerza bruta también consumen un gran ancho de banda, disparan el volumen de los archivos de registro (logs) de nuestro sistema y ocupan ciclos de CPU que podrían dedicarse a tareas útiles. Fail2ban busca en los registros (logs) de los programas que se especifiquen las reglas que el usuario decida para poder aplicar una penalización. La penalización puede ser bloquear la aplicación que ha fallado en un determinado puerto, bloquearla para todos los puertos, etc. Las penalizaciones, así como las reglas, son definidas por el usuario. Habitualmente, si las IP de ataque se prohíben por un lapso prudencial de tiempo, la sobrecarga de red provocada por los ataques baja, y también se reduce la probabilidad de que un ataque de fuerza bruta basada en diccionarios tenga éxito. Ante una cantidad predefinida (por el usuario) de intentos fallidos, fail2ban determina la acción a tomar sobre la IP que originó el problema. Puede simplemente notificar por e-mail del suceso, denegar el acceso a la IP atacante, bloquearla en determinado puerto y habilitarla en otros (modificando las entradas correspondientes en iptables, o el firewall local que corresponda), etc. Puede asimismo levantar las prohibiciones después de un determinado periodo, por si el problema no obedeciera a un ataque sino simplemente a errores del usuario intentando loguearse. Las acciones son configurables mediante scripts de Python.,
  • 18. 18 Ahora que ya sabemos para qué sirve Fail2ban, vamos a iniciar con la instalación y configuración de esta útil aplicación para evitar ataques de fuerza bruta. 2. Instalación de fail2ban: apt-get install fail2ban 2.1 Editamos el archivo de configuración con los siguientes parámetros: nano /etc/fail2ban/jail.conf [ssh] enabled = true port = 1022 filter = sshd logpath = /var/log/auth.log maxretry = 3
  • 19. 19 2.2 Si queremos habilitar el envío de informes usamos o instalamos el SMTP y editamos los siguientes parámetros: Reemplazamos el correo por el correo de nosotros: destemail = root@localhost
  • 20. 20 Buscamos la línea action = %(action_)s Y la reemplazamos por: action = %(action_mwl)s
  • 21. 21 Reiniciamos el Fail2ban: /etc/init.d/fail2ban restart Algunas alerta realizadas por el Fail2Ban y cómo podemos ver, nos realiza una notificación en nuestro correo.
  • 22. 22 La siguiente aplicación que instalaremos es el Postfix, para poder recibir las alertas que aplicaciones como el Fail2ban generaran y que necesitamos recibir, para poder estar alertado de cualquier evento sospechoso. Postfix es un servidor de correo de software libre / código abierto, un programa informático para el enrutamiento y envío de correo electrónico, creado con la intención de que sea una alternativa más rápida, fácil de administrar y segura al ampliamente utilizado Sendmail. 3. Instalación del postfix para envío de correos: apt-get install mailutils apt-get update
  • 23. 23 3.1 Instalamos nuestro servidor de correo, el postfix: apt-get install postfix
  • 25. 25 3.2 Luego introducimos el dominio. System mail name: Ejemplo: serpruebas.com 3.3 Reiniciamos el servicio Postfix: service postfix restart 3.4 Probamos enviando un correo con el siguiente comando: echo "This is the body of the email" | mail -s "This is the subject line" user@example.com
  • 26. 26 Ahora vamos a instalar FIGlet, una aplicación informática que genera banners de texto, en varias tipografías, formadas por letras compuestas por conglomerados de caracteres ASCII más pequeños. 4 Instalación y edición del figlet. 4.1 Instalamos el banner de manera dinámica apt-get install figlet
  • 27. 27 4.2 Creamos la carpeta mkdir /etc/update-motd.d/ 4.3 Entramos a la carpeta cd /etc/update-motd.d/
  • 28. 28 4.4 Creamos los archivos de información touch 00-header && touch 10-sysinfo && touch 90-footer 4.5 Removemos el banner anterior rm /etc/motd 4.6 Creamos un enlace directo ln -s /var/run/motd /etc/motd 4.7 Dentro de la carpeta creada /etc/update-motd.d: Editamos los archivos de información: 00-header, 10-sysinfo,y 90-footer.
  • 29. 29 4.7.1 Abrimos el archivo 00-header: nano 00-header Luego copiamos lo siguiente dentro de este archivo: [ -r /etc/lsb-release ] && . /etc/lsb-release if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then # Fall back to using the very slow lsb_release utility DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi figlet $(hostname) printf "n" printf "Welcome to %s (%s).n" "$DISTRIB_DESCRIPTION" "$(uname -r)" printf "n" 4.7.2 Abrimos el archivo 10-sysinfo: nano 10-sysinfo Luego copiamos lo siguiente dentro de este archivo: date=`date` load=`cat /proc/loadavg | awk '{print $1}'` root_usage=`df -h / | awk '/// {print $(NF-1)}'` memory_usage=`free -m | awk '/Mem:/ { total=$2 } /buffers/cache/ { used=$3 } END { printf("%3.1f%%", used/total*100)}'` swap_usage=`free -m | awk '/Swap/ { printf("%3.1f%%", "exit !$2;$3/$2*100") }'` users=`users | wc -w` time=`uptime | grep -ohe 'up .*' | sed 's/,/ hours/g' | awk '{ printf $2" "$3 }'` processes=`ps aux | wc -l` ip=`ifconfig $(route | grep default | awk '{ print $8 }') | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'` echo "System information as of: $date" echo printf "System load:t%stIP Address:t%sn" $load $ip printf "Memory usage:t%stSystem uptime:t%sn" $memory_usage "$time" printf "Usage on /:t%stSwap usage:t%sn" $root_usage $swap_usage printf "Local Users:t%stProcesses:t%sn" $users $processes echo
  • 30. 30 4.7.3 Abrimos el archivo 90-footer: nano 90-footer Luego copiamos lo siguiente dentro de este archivo: [ -f /etc/motd.tail ] && cat /etc/motd.tail || true 4.8 Damos permisos de ejecución chmod +x /etc/update-motd.d/* Ahora necesitamos que cada usuario no pueda salir de un directorio es decir, ese usuario no podrá navegar por el sistema de archivos y se le podrán definir los programas que queramos. ¿En qué situación se puede utilizar esto? Cuando tenemos un servidor que es compartido por varios usuarios o se quieren tener diferentes hostings. Para conseguir esto hay un programa llamado jailkit que cumple perfectamente la función de enjaular usuarios. 5. Instalación de jailkit y sus dependencias: apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
  • 31. 31 5.1 Vamos a la carpeta temporal y descargamos el paquete: cd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
  • 32. 32 Posiblemente nos saldrá un error pidiendo ingresar un disco en el cd-rom para continuar la instalación, para solucionar este error editaremos el siguiente archivo: nano /etc/apt/sources.list Modificamos el archivo hasta que nos quede igual al archivo de la siguiente imagen:
  • 33. 33 5.2 Una vez solucionado el error anterior, vamos a descomprimir el archivo que habíamos descargado: tar xvfz jailkit-2.17.tar.gz 5.3 Entramos en la carpeta de jailkit y ejecutamos el binario cd jailkit-2.17 ./debian/rules binary
  • 34. 34 5.4 Instalamos los paquetes cd .. dpkg -i jailkit_2.17-1_*.deb
  • 35. 35 Configuración del jailkit 5.6 Creamos la carpeta de jaula o jail mkdir /home/chrootusers 5.7 Asignamos el dueño de la carpeta el usuario root: chown root:root /home/chrootusers
  • 36. 36 5.8 Creamos la jaula con los programas básicos jk_init -v /home/chrootusers netutils basicshell jk_lsh openvpn ssh sftp 5.9 Creamos el usuario adduser jose Ejemplo: adduser jose
  • 37. 37 5.10 Probamos la creación del usuario entramos al directorio cd /home Verificamos con el comando y vemos la carpeta de usuario ls
  • 38. 38 5.11 Vamos a enjaular el usuario jk_jailuser -m -j /home/chrootusers/ usuario Ejemplo: jk_jailuser -m -j /home/chrootusers/ jose 5.12 Vamos a /home/chrootusers cd /home/chrootusers
  • 39. 39 Verificamos el usuario debe estar en la siguiente ruta cd /home/chrootusers/home Si usamos ls debemos ver el usuario creado
  • 40. 40 5.13 Vamos editar el jail de los usuarios para que puedan acceder nano /home/chrootusers/etc/passwd 5.14 Buscamos la línea del usuario y le borramos la última línea de "/usr/sbin/jk_lsh", reemplazamos por "/bin/bash" Ejemplo: arunp:x:1006:1001:arun pyasi,001,,:/home/arunp:/usr/sbin/jk_lsh arun:x:1006:1005:,,,:/home/arun:/bin/bash
  • 41. 41 5.15 Probamos accediendo por ssh al servidor solo debemos tener acceso a la jaula ssh jose@192.168.0.1 También podemos acceder desde el FireZilla para verificar el usuario creado, y la carpeta a la que este tiene acceso dentro de nuestro servidor.
  • 42. 42 6 Configuración de las cuotas para limitar la cantidad de almacenamiento por usuario. Necesitamos que los usuarios de nuestro sistema no consuman más recursos de los disponibles, resulta indispensable habilitar un límite de ocupación de espacio en el disco duro. 6.1 Primero instalamos nuestro administrador de cuotas con el siguiente comando: apt-get install quota quotatool
  • 43. 43 6.2 Configuración de las cuotas nano /etc/fstab 6.3 Añadimos la siguiente línea "usrquota" al directorio raíz "/": LABEL=DOROOT / ext4 errors=remount-ro,usrquota 0 1 El archivo fstab nos debería quedar de la siguiente manera:
  • 44. 44 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount- ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1 # swap was on /dev/sda5 during installation UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 6.4 Volvemos a cargar la partición mount -o remount / 6.5 Configuramos las cuotas: quotacheck -avugm quotaon -avug 6.6 Creación de cuotas por usuario: edquota usuario Ejemplo: edquota jose
  • 45. 45 **Los parámetros que vamos a editar son donde la tercera y la cuarta columna de izquierda a derecha soft y hard y le ponemos 10M=10000 15M=10240 Estamos limitando el espacio de almacenamiento del usuario jose a 10 MB como tamaño máximo por archivo, y 15 MB como tamaño total de almacenamiento en el disco. 6.7 Verificamos las cuotas con el comando quota ftpuser
  • 46. 46 Ejemplo: quota jose Nos aparecerá en pantalla lo siguiente: Disk quotas for user jose (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/disk/by-label/DOROOT 8 10000 10240 2 0 0 6.8 Comprobamos las cuotas de todos los usuarios: repquota –a 7 Uso de scripts para creación de usuarios y enjaularlos a las carpetas específicas: 7.1 Creamos el grupo groupadd sshaccess
  • 47. 47 7.2 El siguiente script asume que hemos creado la carpeta del jail en /home/chrootusers y el grupo sshaccess. Creación del script touch chroot-jail.sh 7.3 La información del script que debemos poner dentro del archivo chroot-jail.sh: ## sanity checks if [ "$#" -ne 2 ]; then echo "This application requires two arguments: username 'passwdhash' (single-quotes required)" exit 1 fi if [ ! -d /home/chrootusers/./home/ ]; then echo "This application assumes installation to /home/chrootusers" exit 1 fi getent passwd $1 &>/dev/null if [ $? -eq 0 ]; then echo "User $1 already exists on host system. Please remove and re-create using this tool." exit 1 fi getent group sshaccess &>/dev/null if [ $? -ne 0 ]; then echo "This application assumes 'AllowGroups sshaccess' restriction in /etc/ssh/sshd_config. sshaccess group missing" exit 1 fi ## creation echo echo "Creating User and Jailed Home Directory" echo useradd -m -d /home/chrootusers/./home/$1 -s /usr/sbin/jk_chrootsh -p $2 $1 echo "Adding User to 'sshaccess' Group" echo gpasswd -a $1 sshaccess &>/dev/null JAILUID=$(id -u $1) JAILGID=$(id -g $1)
  • 48. 48 echo "Creating Required Internal Jail Passwd and Group Files" echo echo "$1:x:${JAILUID}:${JAILUID}::/home/$1:/bin/bash" >> /home/chrootusers/etc/passwd echo "$1:x:${JAILGID}:" >> /home/chrootusers/etc/group echo "Applying Quota Restrictions" setquota -u $1 10240 15360 0 0 / || echo "Unable to Apply Quota Restrictions. Are Quotas enabled?" 7.4 Para usar el script debemos darle permisos de ejecución el siguiente comando: chmod +x chroot-jail.sh 7.5 Ejecutamos el script, donde reemplazamos la variable entre comillas con la contraseña ./chroot-jail.sh username 'passwdhash' Ejemplo: ./chroot-jail.sh jose 'EstaEsMiContraseña' passwd username 7.6 Verificamos o añadimos al grupo adduser usuario sshaccess Ejemplo: adduser jose sshaccess 7.7 comprobamos con el comando cat que el usuario está en el grupo sshaccess cat /etc/passwd Nota: el script funciona sin problemas a la hora de crear los usuarios, y asignarlos al grupo con permiso para usar el ssh, sin embargo el único problema es a la hora de usar la contraseña, la misma no funciona por lo que debemos volver a cambiar la contraseña para que funcione.  En caso de necesitar borrar un usuario, ejecutamos el siguiente commando: userdel -r username
  • 49. 49 Ejemplo: userdel -r jose  Posiblemente también tendremos que eliminar la carpeta del usuario: rm -rf /home/chrootusers/home/usuario Ejemplo: rm -rf /home/chrootusers/home/jose 8- Vamos a desbloquear cualquier IP que este banneada: 8.1 Verificamos que programa se encuentra activado el fail2ban. fail2ban-client status 8.2 Verificamos el IP bloqueado. iptables -L –n
  • 50. 50 8.3 Desbloqueamos el IP que este banneado con el siguiente comando: fail2ban-client set ssh unbanip ipaddress Ejemplo: fail2ban-client set ssh unbanip 192.168.1.50
  • 51. 51 Conclusión El hardenig o endurecimiento de un servidor es importante, para reducir el riesgo de un ataque, pues recordemos que el principal motivo para endurecer la seguridad en nuestros servidores, es ganar tiempo frente a un ataque, ya sea para reaccionar a tiempo y poder evitarlo, o hacer que la perdida de información sea lo más mínimo posible, y para lograr esto es importante agregar un monitoreo a todos los equipos de nuestra red, por medio de alertas. Es importante implementar protección adicional a nuestros equipos y no limitar la protección de estos con el solo uso de características de seguridad que por defecto trae cada sistema operativo, por medio de Firewall, IPS, IDS, HoneyPots. Como pudimos ver en el hardening que le realizamos a nuestro servidor FTP, podemos hacer más seguro la comunicación que tenemos con nuestro servidor, de esa forma evitar que las contraseñas puedan ser vistas por un atacante mediante la interceptación de una comunicación con nuestro servidor, si usáramos por ejemplo, telnet para esto y no el protocolo SSH, tendríamos esta vulnerabilidad, también podemos configurar la información que despliega nuestro servidor cuando un usuario, o como también pudiera ser un posible atacante intenta iniciar sesión, modificando la información que por defecto aparece. También vimos lo importante que es configurar los intentos que un usuario puede hacer para iniciar sesión, y así evitar un ataque de fuerza bruta, que nos pudiera causar gastar recursos de nuestro sistema, procesando estos intentos de iniciar sesión, y que en realidad necesitamos para el buen funcionamiento de nuestro servidor, sin decir que estos tipos de ataque pueden causar hasta una denegación de servicios. Controlamos también el acceso que tiene cada usuario dentro de nuestro servidor FTP, de esa forma evitar que un usuario navegue a cada directorio de nuestro servidor, y poder ver o modificar las configuraciones, y las aplicaciones que tengamos dentro.
  • 52. 52 Bibliografía  ¿Qué es Hardening?, Consultado el 15 de noviembre de 2015. Disponible en: http://blog.smartekh.com/%C2%BFque-es-hardening/  Secure Shell, Consultado el 15 de noviembre de 2015. Disponible en: https://es.wikipedia.org/wiki/Secure_Shell  Fail2ban, Consultado el 15 de noviembre de 2015. Disponible en: https://es.wikipedia.org/wiki/Fail2ban  Postfix, Consultado el 15 de noviembre de 2015. Disponible en: https://es.wikipedia.org/wiki/Postfix  FIGlet, Consultado el 15 de noviembre de 2015. Disponible en: https://es.wikipedia.org/wiki/FIGlet  Enjaular usuarios en Linux, Consultado el 16 de noviembre de 2015. Disponible en: https://operativoslinux.wordpress.com/2015/02/21/enjaular-usuarios-en-linux/  Cuotas de disco. linux, Consultado el 16 de noviembre de 2015. Disponible en: https://claudiooq.wordpress.com/quotas-de-disco-linux/