Estándar de Seguridad V3: ataque CONTI

Medidas a Servidor

Modificación de usuarios

  • Modificamos la contraseña del usuario root de CA3 a A0
  • Ingresamos como el usuario root
  • Ejecutamos el comando
passwd

#Resultado
Introduzca la nueva contraseña de UNIX: A0
Vuelva a escribir la nueva contraseña de UNIX: A0
passwd: contraseña actualizada correctamente
  • Eliminamos el usuario ugit
userdel -r ugit
  • Verificamos que no existe el usuario ugit
less /etc/passwd
  • Crea el usuario orion
adduser orion

# Resultado
Añadiendo el usuario `orion' ...
Añadiendo el nuevo grupo `orion' (1000) ...
Añadiendo el nuevo usuario `orion' (1000) con grupo `orion' ...
Creando el directorio personal `/home/orion' ...
Copiando los ficheros desde `/etc/skel' ...
Introduzca la nueva contraseña de UNIX: V1
Vuelva a escribir la nueva contraseña de UNIX: V1
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para orion
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
	Nombre completo []: UGIT
	Número de habitación []: 
	Teléfono del trabajo []: 
	Teléfono de casa []: 
	Otro []: 
¿Es correcta la información? [S/n] 
  • Añadimos el usuario al grupo «root»
adduser orion root

# Resultado
Añadiendo al usuario `orion' al grupo `root' ...
Añadiendo al usuario orion al grupo root
Hecho.
  • Modificamos el acceso de ssh para dar permiso a orion
nano /etc/ssh/sshd_config

# Modificamos la linea
AllowUsers root ugit
X
AllowUsers root orion

# Reiniciamos el servicio
/etc/init.d/ssh restart
  • Verificamos que podemos ingresar con ambos usuarios
ssh root@10.20.200.15 -p 44 A0
ssh orion@10.20.200.15 -p 44 V1

Actualización del sistema

  • Si es basado en debian
apt update
apt upgrade
apt dist-upgrade
apt autoremove

Medidas de Seguridad

Modificación de envió de correo interuniversitariadealajuela@gmail

  • Abrimos el archivo
nano /etc/postfix/sasl_passwd
  • Si existe el archivo modificamos la contraseña quedando así
[smtp.gmail.com]:587    interuniversitariadealajuela@gmail.com:SC2
  • generamos los postmap
chmod 600 /etc/postfix/sasl_passwd 
chmod 600 /etc/postfix/generic 
postmap /etc/postfix/sasl_passwd 
postmap /etc/postfix/generic
  • Regeneramos los certificados
cd /etc/postfix/certs/
openssl dsaparam -out dsaparam.pem 2048
openssl req -x509 -nodes -days 3650 -newkey dsa:dsaparam.pem -out mycert.pem -keyout mykey.pem
  • Resultado
Generating a 2048 bit DSA private key
writing new private key to 'mykey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CR
State or Province Name (full name) [Some-State]:Alajuela
Locality Name (eg, city) []:Alajuela
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SIUA
Organizational Unit Name (eg, section) []:UGIT
Common Name (e.g. server FQDN or YOUR name) []:UGIT
Email Address []:interuniversitariadealajuela@gmail.com
  • Eliminamos la llave
rm dsaparam.pem
  • Renovamos segundo certificado
ln -s mycert.pem CAcert.pem
openssl req -x509 -new -days 3650 -key /etc/postfix/certs/mykey.pem -out /etc/postfix/certs/mycert.pem
  • Resultado
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CR 
State or Province Name (full name) [Some-State]:Alajuela
Locality Name (eg, city) []:Alajuela
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SIUA
Organizational Unit Name (eg, section) []:UGIT
Common Name (e.g. server FQDN or YOUR name) []:UGIT
Email Address []:interuniversitariadealajuela@gmail.com
  • Recargamos el servicio
/etc/init.d/postfix reload
  • Comprobamos el envió (DEBE VERIFICARSE)
echo "Servidor: Zeus" | mail -s "Zeus" gustavo.matamoros@gmail.com

Instalación de clamav

  • Instalamos el software
apt install clamav clamav-daemon
  • Detenemos el servicio para actualizar la base de datos
systemctl stop clamav-freshclam.service
  • Modificamos la configuración para que vea el servidor local de clamav
nano /etc/clamav/freshclam.conf
  • Comentamos las lineas
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net
  • Agregamos al final
DatabaseMirror clamav.siua.ac.cr
PrivateMirror clamav.siua.ac.cr
DatabaseCustomURL http://clamav.siua.ac.cr/main.cvd
DatabaseCustomURL http://clamav.siua.ac.cr/daily.cvd
DatabaseCustomURL http://clamav.siua.ac.cr/bytecode.cvd
#DatabaseCustomURL http://clamav.siua.ac.cr/safebrowsing.cvd
  • Actualizamos la base de datos
sudo freshclam
  • Establecemos que el servicio arranque con el sistema
systemctl enable clamav-freshclam
  • Iniciamos el servicio
systemctl start clamav-freshclam
  • NOTA: El directorio /sys de problemas de permisos pero como ningún cliente va acceder por tanto lo podemos excluir
  • Escaneamos el sistema excluyendo sys
clamscan -ri --exclude-dir=/sys/ /
  • Donde:
    • r: recursivo
    • i: busque infecciones
    • –exclude-dir: excluya el directorio
    • / = cual directorio raíz

Envió de correo por parte de clamav

  • Vamos a configurar el escaneo automático a las 11:30pm por parte de clamav
  • Y vamos hacer que si detecta una infección envié los archivos a cuarentena
  • Primero debemos garantizar que el servidor puede enviar correos por la terminal con los pasos anteriores
  • Creamos la carpeta de cuarentena dentro del directorio de root
mkdir /root/clamav
  • Creamos las carpetas “cuarentena” y “logs” dentro de clamav
mkdir /root/clamav/cuarentena
mkdir /root/clamav/logs
  • Creamos el script
nano /usr/local/bin/clamav.sh
  • Agregamos el código
#!/bin/bash
# ClamAV_Scan_Script
# Script que ejecuta un escaneo con ClamAV del dir o archivo seleccionado
# editado del original en "http://www.taringa.net/comunidades/ubuntuparataringeros/1327480/[Tip]-Script-para-escanear-fácilmente-con-ClamAV.html"
# -----------------------------------------------------------------------------
# Crear la carpeta "clamav" dentro del directorio "$HOME" y dentro de la misma
# crear las carpetas "cuarentena" y "logs" dentro de "clamav"
# ----------------------------------------------------------------------------
# Ubicar el Script en "/usr/local/bin" y darle permisos de ejecucion
# "chmod +x /usr/local/bin/clamav"
# Ubicarlo en el "crontab" para su ejecucion el dia seleccionado
# ---------------------------------------------------------------------------
#
# --Carpetas de Configuracion -- #
clamfolder="clamav"
logfolder="logs"
cuarentenafolder="cuarentena"
logfile="clamscan-`date +%F_%T`.log"
dirs="/ " #directorios a verificar
scan=/usr/bin/clamscan
userhome="$HOME"
user=`whoami`

# -- Codigo de arranque -- #
echo "ClamAV scan Iniciado el dia" `date` "por el usuario" ${user} "- Guardado como" \
${userhome}/${clamfolder}/${logfolder}/${logfile}\ > ${userhome}/${clamfolder}/${logfolder}/${logfile}

echo "Iniciando escaneo con ClamAV..."
$scan --infected --recursive --log=${userhome}/${clamfolder}/${logfolder}/${logfile} \
--move=${userhome}/${clamfolder}/${cuarentenafolder} --exclude-dir=/sys/ $dirs
echo "Finalizado escaneo con Clamav" `date`
  • Le otorgamos permisos
chmod +x /usr/local/bin/clamav.sh
  • Probamos el funcionamiento (Opcional)
. /usr/local/bin/clamav.sh
  • Ahora creamos una tarea crontab
crontab -e
  • Agregamos
30 23 * * * /usr/local/bin/clamav.sh 2>&1 | tee /root/clamav/output.txt | mail -s "clamav: $(hostname -s)" interuniversitariadealajuela@gmail.com

Instalación de rkhunter

  • Primero verificamos si lo tiene instalado
rkhunter --update
  • Si lo tiene instalado y actualiza correctamente escanee el sistema como:
rkhunter -c
  • Si lo tiene instalado y da el siguiente error
Invalid WEB_CMD configuration option: Relative pathname: "/bin/false"
  • Abra el archivo
nano /etc/rkhunter.conf
  • Y modifique
UPDATE_MIRRORS=0
X
UPDATE_MIRRORS=1

MIRRORS_MODE=1
X
MIRRORS_MODE=0

WEB_CMD="/bin/false"
X
WEB_CMD=""
  • Y proceda a actualizarlo
rkhunter --update
  • Y luego verifique el sistema
rkhunter -c
  • Si no se encuentra instalado ejecute los siguientes pasos:
  • Instalamos rkhunter que es un escáner que analiza y busca en nuestro ordenador, backdoors, exploits, sniffers y por supuesto rootkits, realizando diferentes pruebas a nuestro sistema.
  • Ingresamos a tmp para que después del siguiente reinicio se eliminen los archivos:
cd /tmp
  • Descargamos el fichero:
wget /wp-content/uploads/2019/09/rkhunter-1.4.6.tar.gz
  • Lo descomprimimos:
tar -zxf rkhunter-1.4.6.tar.gz
  • Ingresamos a la carpeta:
cd rkhunter-1.4.6
  • Lo instalamos:
./installer.sh --install
  • Podemos verificar la versión:
rkhunter --versioncheck
  • Actualizamos la base de datos:
rkhunter --update
  • Crear el archivo rkhunter.dat
rkhunter --propupd
  • Ahora podemos verificar el sistema
rkhunter -c
  • Ahora creamos un cron mensual para que verifique nuestro sistema
  • Creamos una archivo en:
nano /etc/cron.monthly/rkhunter.sh
  • Agregamos
#!/bin/bash (  rkhunter --versioncheck  rkhunter --update  rkhunter -c --cronjob --report-warnings-only )| mail -a "From: ataques@siua.ac.cr" -s "rkhunter: $(hostname -s)"  
ataques@siua.ac.cr
  • Le damos permisos
chmod +x /etc/cron.monthly/rkhunter.sh

Chkrootkit

  • NOTA: si el servidor es un contenedor este programa no se debe instalar
  • Primero verificamos si se encuentra instalado, para esto
chkrootkit -q
  • Si da el siguiente error
can't exec ./strings-static,
  • ejecute
apt remove chkrootkit
apt install chkrootkit

# Vuelva a intentarlo
chkrootkit -q
  • Si no se puede instalar a través de los repositorio instalelo de forma manual con los siguientes comando:

  • Programa que permite buscar rootkits
  • Ingresamos a /tmp para que los archivos sean eliminados después de reiniciar
cd /tmp
wget /wp-content/uploads/2019/09/chkrootkit.tar.gz
  • Lo descomprimimos:
tar xvfz chkrootkit.tar.gz
  • Ingresamos a la carpeta:
cd chkrootkit-0.53/
  • Lo compilamos:
make sense
  • Regresamos un nivel en la capeta:
cd ..
  • Movemos el contenido a /usr/local/chkrootkit
mv chkrootkit-0.53/ /usr/local/chkrootkit
  • Ingresamos a la carpeta para verificar que existen los archivos
cd /usr/local/chkrootkit/
  • Creamos una enlace simbólico
ln -s /usr/local/chkrootkit/chkrootkit /usr/local/bin/chkrootkit
  • Verificamos el servidor:
#Muestra todo la salida
chkrootkit 

#Muestra solo las detecciones
chkrootkit -q
  • Creamos un cron que se ejecute todos los meses
  • Ejecutamos:
crontab -e
  • Le agregamos el siguiente contenido
@monthly /usr/local/chkrootkit/chkrootkit -q | mail -s "chkrootkit: $(hostname -s)" 
ataques@siua.ac.cr

Verificación de instalación de logwatch fail2ban

  • Debemos verificar que el servidor tiene instalado logwatch, para esto ejecutamos
# Ejecutamos
nano /etc/logwatch/conf/logwatch.conf

# Verificamos que tenga la linea
Format = html
  • Debemos verificar que tenemos instalado fail2ban, para esto
# Ejecutamos
nano /etc/fail2ban/jail.local

# Verificar que tiene configurada la linea
ignoreip = 127.0.0.1 10.20.190.0/24 10.20.200.0/24 181.193.87.0/28 201.237.206.56

d

Verificación de sistemas implementados