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.
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….!
Pedimos el tipo de cifrado
Podemos agregar los siguientes repo que pueden ayudarte por el lado de seguridad.
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.
Inhabilite IP Forwarding:
Inhabilite Send Packet Redirects
Para ver la información de antigüedad de cualquier usuario existente, como la fecha y hora de caducidad, use el siguiente comando.
-m Establecer el número mínimo de días
-W Establecer el número de días de advertencia
LINK IPTABLES
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.
Para obtener la información del usuario individual, use las opciones -u.
Donde los registros de todo el sistema o los registros de actividad actuales están disponibles.
Espero te haya servido y no te olvides en compartirlo. GRACIAS!
¿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 /optDespués de la instalación podemos colocar contraseña al grub para que sea más seguro.
Pedimos el tipo de cifrado
grub-mkpasswd-pbkdf2Escribimos nuestro usuario y contraseña y nos dará un cifrado y vamos agregarlo.
nano /etc/grub.d/00_headerY vamos agregar lo siguiente.
cat << EOF set superusers="username" password_pbkdf2 username 'paste the generated code copied above here' EOFMi ejemplo:
cat << EOF set superusers="freddy" password_pbkdf2 freddy grub.pbkdf2.sha512.10000.XXXXXXXXXXXX$ EOFPara 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-freePodemos actualizar
apt-get update && apt-get upgrade && apt-get dist-upgradeCheca los paquetes instalados con
apt-cache pkgnames
apt-cache pkgnames |lessY 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_configDesactivar inicio
PermitRootLogin noEspecifica 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_storageDesde 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 usbEn 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.blacklistAhora, 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 0en “/etc/sysctl.conf”
Inhabilite Send Packet Redirects
net.ipv4.conf.all.send_redirects a 0Inhabilite ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects a 0Recomiendo 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 usernameEjemplo
chage -l creadpagPara 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 accountNamePara 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 acctEl 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.
acEl uso del comando “ac -d” imprimirá el tiempo total de inicio de sesión en horas por día.
ac -dEl uso del comando “ac -p” imprimirá el tiempo total de inicio de sesión de cada usuario en horas.
ac -pEl comando “sa” se usa para imprimir el resumen de comandos que fueron ejecutados por los usuarios.
saImprimir 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/messagesRegistros de autenticación.
cat /var/log/auth.logRegistros del kernel
cat /var/log/kern.logCrond logs (cron jobs).
cat /var/log/cron.logRegistros del servidor de correo.
cat /var/log/maillogRegistro de inicio del sistema
cat /var/log/boot.logArchivo de registro del servidor de base de datos MySQL.
cat /var/log/mysqld.logRegistro de autenticación.
cat /var/log/secureArchivo 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!
0 Comentarios