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
- Descargamos el archivo: chkrootkit053
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