UGIT: Seguridad Servidores

  • Esta guía explica los mecanismos de seguridad utilizados en los servidores de la SIUA
  • Dependencias:
apt-get install make build-essential net-tools -y
  •  Es necesario que el servidor pueda enviar correos para esto, seguir la guía

RKhunter

  • Descarga de programa: rkhunter-1.4.6.tar.gz
  • 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 https://ugit.blog.siua.ac.cr/Archivos/rkhunter/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
  • RESULTADO:
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter version...
This version : 1.4.6
Latest version: 1.4.6
  • Actualizamos la base de datos
rkhunter --update
  • RESULTADO:
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter data files...
Checking file mirrors.dat [ No update ]
Checking file programs_bad.dat [ No update ]
Checking file backdoorports.dat [ No update ]
Checking file suspscan.dat [ No update ]
Checking file i18n/cn [ No update ]
Checking file i18n/de [ No update ]
Checking file i18n/en [ No update ]
Checking file i18n/tr [ No update ]
Checking file i18n/tr.utf8 [ No update ]
Checking file i18n/zh [ No update ]
Checking file i18n/zh.utf8 [ No update ]
Checking file i18n/ja [ No update ]
  • Crea el archivo rkhunter.dat
rkhunter --propupd
  • Ahora verificamos el sistema
rkhunter -c
  • Ahora creamos un crob 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: interuniversitariadealajuela@gmail.com" -s "rkhunter: $(hostname -s)"  interuniversitariadealajuela@gmail.com
  • Le damos permisos
chmod +x /etc/cron.monthly/rkhunter.sh
  • Si deseamos consultar el log file
nano /var/log/rkhunter.log

chkrootkit

  • Programa que permite buscar rootkits
  • Ingresamos a /tmp para que los archivos sean eliminados después de reiniciar
cd /tmp
wget https://ugit.blog.siua.ac.cr/Archivos/chkrootkit/5.02/chkrootkit.tar.gz
  •  Lo descomprimimos
tar xvfz chkrootkit.tar.gz
  •  Ingresamos a la carpeta
cd chkrootkit-0.52/
  • Lo compilamos
make sense
  • Regresamos un nivel en la capeta
cd ..
  •  Movemos el contenido a /usr/local/chkrootkit
mv chkrootkit-0.52/ /usr/local/chkrootkit
  •  ingresamos a la carpeta para verificar que existenlos archivos
cd /usr/local/chkrootkit/
  •  Creamos una enlace simbolico
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 crobjob que se ejecute todos los meses
  • Ejecutamos:
crontab -e
  • Agregamos
@monthly /usr/local/chkrootkit/chkrootkit -q | mail -s "chkrootkit: $(hostname -s)" interuniversitariadealajuela@gmail.com

Logwatch

  • Logwatch es un sistema de monitoreo de logs personalizable. Su función es revisar los logs del sistema en un período de tiempo determinado y elaborar un resumen con el nivel de detalle que se desee. Luego es capaz de enviar el resumen por mail en forma de reporte. Es muy útil para monitorear la actividad de los servidores y detectar posibles abusos, intentos de intrusión, consumo de recursos, etc.
  • Es importante saber que logwatch se instala en «/usr/share/logwatch» pero crea una estructura de archivos en /etc/logwatch, la idea es que toda configuración «adicional» la hagamos aquí y esta sobreescriba a la de /usr/share/logwatch
  • Los instalamos
apt-get install logwatch -y
  • Copiamos el archivos de configuración de «fábrica»
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
  • Creamos una carpeta requerida
mkdir /var/cache/logwatch
  • Abrimos el archivo:
nano /etc/logwatch/conf/logwatch.conf
  • Modificamos
--------------------------------------------------------------
Output = stdout
X
Output = mail
--------------------------------------------------------------
Format = text
X
Format = html
--------------------------------------------------------------
MailTo = root
X
MailTo = interuniversitariadealajuela@gmail.com
--------------------------------------------------------------
MailFrom = Logwatch
X
MailFrom = Logwatch_POSEIDON
--------------------------------------------------------------
Range = yesterday
X
Range = yesterday
--------------------------------------------------------------
Detail = Low
X
Detail = 8
--------------------------------------------------------------
  • Si fuera necesario modificar el archivo:
nano /etc/cron.daily/00logwatch

OpenSSH

Autenticación por llave

  • Si deseamos permitir el acceso por llaves: aquí

Fail2ban

  • Para instalar y configurar fail2ban seguimos las siguientes guías:
    • Instalación: aquí
    • Para añadir el servidor a la base centralizada: aquí

Configurar el módulo recent para mitigar ataques de fuerza bruta en el servicio SSH

  • El módulo recent sirve para limitar el número de conexiones por segundo a nivel de IP, esto es ideal para protegernos de ataques al puerto SSH porque un atacante probará múltiples contraseñas. En el siguiente ejemplo, daremos de alta en una base de datos todas las conexiones al puerto TCP 22445 de destino, y daremos de alta el origen de esas conexiones (la IP pública de un posible atacante).
  • Posteriormente, chequeamos que en la tabla no haya más de 4 coincidencias en los últimos 60 segundos. Si hay más de 4 coincidencias, procedemos a bloquear todas las conexiones a partir de ahí.
  • El parámetro -i indica la interfaz de red a la que le queremos aplicar la regla
  • Sobre puerto 22
iptables -A INPUT -p tcp --dport 22 -i vmbr5 -m conntrack --ctstate NEW -m recent --set --name ssh --rsource

iptables -A INPUT -p tcp --dport 22 -i vmbr5 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j DROP
  • Sobre puerto 44:
iptables -A INPUT -p tcp --dport 44 -i vmbr5 -m conntrack --ctstate NEW -m recent --set --name ssh --rsource

iptables -A INPUT -p tcp --dport 44 -i vmbr5 -m state --state NEW -m recent --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j DROP

Port-Knocking para “esconder” el servicio SSH

https://www.redeszone.net/seguridad-informatica/servidor-ssh-en-linux-manual-de-configuracion-para-maxima-seguridad/