Advertisement

header ads

APRENDAMOS HARDENING USANDO DEBIAN

El otro día estaba pensando en publicar un post sobre esto pero no encontraba nombre para ponerlo entonces decidí mostrar y explicar un poco sobre hardenning.


¿Qué es Hardenning?

Hardenning es generalmente el proceso de asegurar un sistema al reducir su superficie de vulnerabilidad, que es mayor cuando un sistema realiza más funciones; en principio, un sistema de función única es más seguro que un multipropósito. La reducción de las formas de ataque disponibles generalmente incluye el cambio de contraseñas predeterminadas, la eliminación de software innecesario, nombres de usuario innecesarios o inicios de sesión, y la desactivación o eliminación de servicios innecesarios.
Todo el mundo me dice que LINUX es demasiado seguro por defecto pero la realidad es que LINUX es realmente seguro personalizando o ajustando algunas configuraciones.
Este será mi primer post de hardenning y espero que sea de tu ayuda.
Comenzamos….!

1. Seguridad del sistema físico

Configure el BIOS para desactivar el arranque desde CD/DVD, dispositivos externos, unidad de disquete en el BIOS. Luego, habilite la contraseña del BIOS.

2. Cifrado de la distro

En su instalación tiene que cifrar su disco duro, la mayoría de las distribuciones de Linux le permitirán encriptar sus discos antes de la instalación. El cifrado de disco es importante en caso de robo porque la persona que robó su computadora no podrá leer sus datos si conectan el disco duro a su máquina.

3. Particiones de disco

Es importante tener diferentes particiones para obtener una mayor seguridad de los datos en caso de que ocurra un desastre. Al crear diferentes particiones, los datos se pueden separar y agrupar. Cuando ocurre un accidente inesperado, solo los datos de esa partición se dañarán, mientras que los datos en otras particiones sobrevivirán. Asegúrese de que debe tener las siguientes particiones por separado y asegúrese de que las aplicaciones de terceros deben instalarse en sistemas de archivos separados en /opt.
/
/boot
/usr
/var
/home
/tmp
/opt
Después de la instalación podemos colocar contraseña al grub para que sea más seguro.
Pedimos el tipo de cifrado
grub-mkpasswd-pbkdf2
Escribimos nuestro usuario y contraseña y nos dará un cifrado y vamos agregarlo.
nano  /etc/grub.d/00_header
Y vamos agregar lo siguiente.
cat << EOF
set superusers="username"
password_pbkdf2 username 'paste the generated code copied above here'
EOF
Mi ejemplo:
 
cat << EOF
set superusers="freddy"
password_pbkdf2 freddy grub.pbkdf2.sha512.10000.XXXXXXXXXXXX$
EOF
Para vamos actualizar nuestro grub
update-grub
grub-mkconfig -o /boot/grub/grub.cfg

4. Minimice los paquetes para minimizar la vulnerabilidad

Se recomienda evitar la instalación de paquetes inútiles para evitar vulnerabilidades en los paquetes. Esto puede minimizar el riesgo de que el compromiso de un servicio pueda llevar a un compromiso de otros servicios. Encuentre y elimine o deshabilite servicios no deseados del servidor para minimizar la vulnerabilidad.
Podemos agregar los siguientes repo que pueden ayudarte por el lado de seguridad.
deb http://ftp.debian.org/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
Podemos actualizar
apt-get update && apt-get upgrade && apt-get dist-upgrade
Checa los paquetes instalados con
apt-cache pkgnames
apt-cache pkgnames |less
Y así podemos ver que paquete nos puede servir o que paquete no me va a seguir.
apt-get remove package-name

5. Verifique los puertos abierto de la red

Con la ayuda del siguiente comando ‘netstat’ puede ver todos los puertos abiertos y programas asociados.
netstat -tulpn

6. Usa Secure Shell (SSH)

Los protocolos Telnet y rlogin usan texto sin formato, no en formato cifrado, que son las infracciones de seguridad. SSH es un protocolo seguro que utiliza tecnología de cifrado durante la comunicación con el servidor.
Nunca inicie sesión directamente como root a menos que sea necesario. Use “sudo” para ejecutar comandos. sudo se especifica en el archivo /etc/sudoers también se puede editar con la utilidad “visudo” que se abre en el editor VI.
También se recomienda cambiar el número de puerto SSH 22 predeterminado con algún otro número de puerto de nivel superior. Abra el archivo de configuración principal de SSH y realice algunos de los siguientes parámetros para restringir el acceso de los usuarios.
nano /etc/ssh/sshd_config
Desactivar inicio
PermitRootLogin no
Especifica usuario
AllowUsers username

7. Bloquear dispositivos de almacenamiento USB

Ejecute el comando lsmod para listar todos los controladores kernel cargados y filtrar la salida mediante el comando grep con la cadena de búsqueda “usb_storage”.
lsmod | grep usb_storage
Desde el comando lsmod, podemos ver que el módulo sub_storage está en uso por el módulo UAS. A continuación, descargue ambos módulos de almacenamiento USB del kernel y verifique si la eliminación se ha completado con éxito, emitiendo los siguientes comandos.
modprobe -r usb_storage
modprobe -r uas
lsmod | grep usb
En las distribuciones de Linux basadas en Debian, emita los siguientes comandos para bloquear el módulo de almacenamiento usb de la carga en el kernel de Linux.
cd /lib/modules/`uname -r`/kernel/drivers/usb/storage/
mv usb-storage.ko usb-storage.ko.blacklist
Ahora, cada vez que conecte un dispositivo de almacenamiento USB, el núcleo no podrá cargar el kernel de entrada del controlador del dispositivo de almacenamiento. Para revertir los cambios, simplemente cambie el nombre del módulo usb de la lista negra a su nombre anterior.

8. Parámetros de red

Asegurar sus actividades de red en su LINUX, es una tarea esencial. No siempre asuma que su firewall se encargará de todo. Aquí hay algunas características importantes a considerar para proteger su red de host:
Inhabilite IP Forwarding:
net.ipv4.ip_forward a 0
en “/etc/sysctl.conf”
Inhabilite Send Packet Redirects
net.ipv4.conf.all.send_redirects a 0
Inhabilite ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects a 0
Recomiendo encarecidamente utilizar el Firewall de Linux aplicando las reglas de la tabla de direcciones y filtrando todos los paquetes entrantes, salientes y reenviados. La configuración de las reglas de iptables llevará algún tiempo, pero vale la pena.

9 Verificar la caducidad de la contraseña del usuario

En Linux, las contraseñas de los usuarios se almacenan en el archivo ‘/etc/shadow’ en formato cifrado. Para verificar la caducidad de la contraseña del usuario, debe usar el comando ‘chage’. Muestra información de los detalles de vencimiento de la contraseña junto con la fecha de cambio de la última contraseña. El sistema usa estos detalles para decidir cuándo un usuario debe cambiar su contraseña.
Para ver la información de antigüedad de cualquier usuario existente, como la fecha y hora de caducidad, use el siguiente comando.
chage -l username
Ejemplo
chage -l creadpag
Para cambiar la caducidad de la contraseña de cualquier usuario, use el siguiente comando.
chage -M 60 username
chage -M 60 -m 7 -W 7 userName

Parámetros

-M Establecer el número máximo de días
-m Establecer el número mínimo de días
-W Establecer el número de días de advertencia

10. Bloquear y desbloquear la cuenta manualmente

Las funciones de bloqueo y desbloqueo son muy útiles, en lugar de eliminar una cuenta del sistema, puede bloquearla durante una semana o un mes. Para bloquear a un usuario específico, puede usar el siguiente comando.
passwd -l accountName
Para desbloquear o habilitar el acceso a una cuenta bloqueada, use el siguiente comando.
passwd -u accountName

11. Habilitar Iptables (Firewall)

Es muy recomendable habilitar el firewall de Linux para proteger el acceso no autorizado de sus servidores. Aplica reglas en iptables para filtrar paquetes entrantes, salientes y de reenvío. Podemos especificar la dirección de origen y de destino para permitir y denegar en un número de puerto udp/tcp específico.
LINK IPTABLES

12. Chequea cuentas con contraseñas vacias.

Cualquier cuenta que tenga una contraseña vacía significa que está abierta para el acceso no autorizado a cualquier persona en la web y es parte de la seguridad dentro de un servidor Linux. Por lo tanto, debe asegurarse de que todas las cuentas tengan contraseñas seguras y nadie tenga acceso autorizado. Las cuentas de contraseña vacías son riesgos de seguridad y pueden ser fácilmente pirateables. Para verificar si hubo cuentas con una contraseña vacía, use el siguiente comando.
cat /etc/shadow | awk -F: '($2==""){print $1}'

13. Monitorear actividades de usuario

Si está tratando con muchos usuarios, entonces es importante recopilar la información de las actividades y los procesos de cada usuario que consumen y analizarlos en un momento posterior o en caso de presentarse algún tipo de problema de seguridad. Pero cómo podemos monitorear y recolectar información de actividades del usuario.
Hay dos herramientas útiles llamadas ‘psacct’ y ‘acct’ se usan para monitorear actividades y procesos de usuario en un sistema. Estas herramientas se ejecutan en un entorno de sistema y realizan un seguimiento continuo de cada actividad del usuario en un sistema y recursos consumidos por servicios tales como Apache, MySQL, SSH, FTP, etc.
apt-get install acct
El comando ac sin especificar ningún argumento mostrará las estadísticas totales del tiempo de conexión en horas según los inicios de sesión/desconexiones del usuario del archivo wtmp actual.
ac
El uso del comando “ac -d” imprimirá el tiempo total de inicio de sesión en horas por día.
ac -d
El uso del comando “ac -p” imprimirá el tiempo total de inicio de sesión de cada usuario en horas.
ac -p
El comando “sa” se usa para imprimir el resumen de comandos que fueron ejecutados por los usuarios.
sa
Imprimir información de usuario individual
Para obtener la información del usuario individual, use las opciones -u.
sa -u

14. Revise los registros regularmente

Mueva los registros en el servidor de registro dedicado, esto puede evitar que los intrusos modifiquen fácilmente los registros locales. A continuación se encuentran el nombre de archivo de registro predeterminado de Linux común y su uso:
Donde los registros de todo el sistema o los registros de actividad actuales están disponibles.
cat /var/log/messages
Registros de autenticación.
cat /var/log/auth.log
Registros del kernel
cat /var/log/kern.log
Crond logs (cron jobs).
cat /var/log/cron.log
Registros del servidor de correo.
cat /var/log/maillog
Registro de inicio del sistema
cat /var/log/boot.log
Archivo de registro del servidor de base de datos MySQL.
cat /var/log/mysqld.log
Registro de autenticación.
cat /var/log/secure
Archivo de registros de inicio de sesión.
cat /var/log/wtmp

15. Copia de seguridad importante

En un sistema de producción, es necesario tomar una copia de seguridad de los archivos importantes y mantenerlos en una bóveda de seguridad, sitio remoto o fuera del sitio para la recuperación de desastres.

16. FIN

En esta breve publicación, cubrimos muchas configuraciones importantes para la seguridad de Linux. Ahora quiero aclarar que es mi primer post de hardening, además la mayoría de configuraciones se aplica a un server.
Espero te haya servido y no te olvides en compartirlo. GRACIAS!


Publicar un comentario

0 Comentarios