meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| seguridad:asegurar_linux [2015/04/20 13:29] – [Control de acceso] luisca | seguridad:asegurar_linux [2023/05/02 08:04] (actual) – [Referencias] lc | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | {{tag> | ||
| ===== Bastionado de Centos ===== | ===== Bastionado de Centos ===== | ||
| + | ==== Asegurar la máquina físicamente ==== | ||
| + | |||
| + | Lo primero es asegurarnos de que a la máquina física no se puede acceder sin permiso. Además en caso de que el servidor disponga de tarjeta de acceeso remoto tipo ILO o similar, hay que configurarla en una VLAN propia que se utilice exclusivamente para gestión, si no se va a utilizar dicha tarjeta hay que desactivarla. | ||
| + | |||
| + | |||
| + | En caso de que no podamos restringir dicho acceso o para una mayor seguridad: | ||
| + | * Desactivar el arranque desde cualquier dispositivo excepto el disco duro que contiene el SO | ||
| + | * Establecer una contraseña para acceder a la BIOS | ||
| + | * Proteger el gestor de arranque GRUB mediante contraseña | ||
| + | * Deshabilita el arranque interactivo en el caso de que la distribución lo soporte | ||
| + | |||
| + | |||
| ==== Instalación ==== | ==== Instalación ==== | ||
| Siempe que sea posible hay que instalar el SO desde DVD sin que esté conectado a la red hasta que se hayan completado el bastionado. Descargarnos la imagen desde el sitio oficial y verificar la integridad de la misma. | Siempe que sea posible hay que instalar el SO desde DVD sin que esté conectado a la red hasta que se hayan completado el bastionado. Descargarnos la imagen desde el sitio oficial y verificar la integridad de la misma. | ||
| Línea 23: | Línea 36: | ||
| < | < | ||
| - | En Centos para configurar la red ejecutar <code> | + | En Centos para configurar la red ejecutar <sxh> |
| Los DNS hay que especificarlos en el archivo / | Los DNS hay que especificarlos en el archivo / | ||
| Línea 29: | Línea 42: | ||
| == Deshabilitar IPV6 si no lo utilizamos == | == Deshabilitar IPV6 si no lo utilizamos == | ||
| - | Para ver si tenemos IPV6 activo ejecutamos <code> | + | Para ver si tenemos IPV6 activo ejecutamos <sxh> |
| Para deshabilitarlo sin reiniciar el sistema, ejecutar: | Para deshabilitarlo sin reiniciar el sistema, ejecutar: | ||
| - | <code>echo 1 > / | + | <sxh>echo 1 > / |
| - | echo 1 > / | + | echo 1 > / |
| otra forma sería: | otra forma sería: | ||
| - | <code> | + | <sxh> |
| sysctl -w net.ipv6.conf.all.disable_ipv6=1 | sysctl -w net.ipv6.conf.all.disable_ipv6=1 | ||
| - | sysctl -w net.ipv6.conf.default.disable_ipv6=1</ | + | sysctl -w net.ipv6.conf.default.disable_ipv6=1</ |
| == Deshabilitar Zeroconf == | == Deshabilitar Zeroconf == | ||
| - | Comprobar si se está ejecutando [[http:// | + | Comprobar si se está ejecutando [[http:// |
| Para deshabilitarlo: | Para deshabilitarlo: | ||
| - | Añadir la línea **NOZEROCONF=yes** Al archivo / | + | Añadir la línea **NOZEROCONF=yes** Al archivo / |
| == Detectar sevicios en escucha == | == Detectar sevicios en escucha == | ||
| - | Ejecutar <code>sudo netstat -tuanp | grep LISTEN</code> | + | Ejecutar <sxh>sudo netstat -tuanp | grep LISTEN</sxh> |
| Si tenemos servicios innecesarios en /etc/init.d se encuentran los scripts de gestión del sistema SystenV tradicional y en /etc/init se encuentran los servicios adaptdos al sistema upstart. | Si tenemos servicios innecesarios en /etc/init.d se encuentran los scripts de gestión del sistema SystenV tradicional y en /etc/init se encuentran los servicios adaptdos al sistema upstart. | ||
| Para ver que servicios tenemos ejecutamos | Para ver que servicios tenemos ejecutamos | ||
| - | <code>ls -1 /etc/init.d > servicios</ | + | <sxh>ls -1 /etc/init.d > servicios</ |
| - | Para deshabilitar un servicio determinado <code> | + | Para deshabilitar un servicio determinado <sxh> |
| <note warning> | <note warning> | ||
| Línea 74: | Línea 87: | ||
| Para configurar un servidor de tiempo hay que seguir estos pasos: | Para configurar un servidor de tiempo hay que seguir estos pasos: | ||
| - | * Instalar el paquete ntpd <code>yum install ntp</code> | + | * Instalar el paquete ntpd <sxh>yum install ntp</sxh> |
| * Editar el archivo/ | * Editar el archivo/ | ||
| * chkconfig ntpd on | * chkconfig ntpd on | ||
| Línea 90: | Línea 103: | ||
| == Crear usuarios con privilegios de administrador == | == Crear usuarios con privilegios de administrador == | ||
| Ejecutar el siguiente comando para cada usuario que requiera privilegios de administrador | Ejecutar el siguiente comando para cada usuario que requiera privilegios de administrador | ||
| - | <code>usermod -G wheel -a usuario </code> | + | <sxh>usermod -G wheel -a usuario </sxh> |
| Editar el archivo / | Editar el archivo / | ||
| - | <code>auth required pam_wheel.so use_uid</ | + | <sxh>auth required pam_wheel.so use_uid</ |
| == Limitar el uso de sudo a miembros de un grupo de administradores == | == Limitar el uso de sudo a miembros de un grupo de administradores == | ||
| Línea 129: | Línea 142: | ||
| Para crear usuario sin Shell hay que ejecutar el comando: | Para crear usuario sin Shell hay que ejecutar el comando: | ||
| - | <code>useradd -M -s / | + | <sxh>useradd -M -s / |
| Donde -M indica que no se creará el directorio HOME del usuario, si es necesario que tenga HOME hay que quitar este parámetro del comando, y -s indica la SHELL que se le asigna al usuario, al especificar / | Donde -M indica que no se creará el directorio HOME del usuario, si es necesario que tenga HOME hay que quitar este parámetro del comando, y -s indica la SHELL que se le asigna al usuario, al especificar / | ||
| Línea 136: | Línea 149: | ||
| | | ||
| - | === Enviar los logs a un servidor remoto === | + | ==== Enviar los logs a un servidor remoto |
| En caso de usar syslogd el archivo / | En caso de usar syslogd el archivo / | ||
| < | < | ||
| Línea 144: | Línea 157: | ||
| Si se ha denegado la salida del tráfico mediante reglas de iptables habrá que permitir la salida al puerto 514 UDP mediante el comando | Si se ha denegado la salida del tráfico mediante reglas de iptables habrá que permitir la salida al puerto 514 UDP mediante el comando | ||
| - | <code> | + | <sxh> |
| - | === At y Cron === | + | ==== At y Cron ==== |
| Permitir el uso de cron y at tan solo al usuario root ejecutando los siguientes comandos | Permitir el uso de cron y at tan solo al usuario root ejecutando los siguientes comandos | ||
| - | <code>rm / | + | <sxh>rm / |
| - | === Bastionar el acceso por SSH === | + | ==== Bastionar el acceso por SSH ==== |
| Para mejorar la seguridad del servicio SSH se deben realizar las siguientes acciones: | Para mejorar la seguridad del servicio SSH se deben realizar las siguientes acciones: | ||
| * Permitir tan solo el protocolo ssh2 | * Permitir tan solo el protocolo ssh2 | ||
| Línea 178: | Línea 191: | ||
| < | < | ||
| - | === Auditar el sistema === | + | ==== Auditar el sistema |
| <note warning> | <note warning> | ||
| Línea 196: | Línea 209: | ||
| Para instalar y arrancar auditd durante el inicio del sistema ejecutar estos comandos | Para instalar y arrancar auditd durante el inicio del sistema ejecutar estos comandos | ||
| - | <code> | + | <sxh> |
| yum install auditd | yum install auditd | ||
| - | chkconfig auditd on</code> | + | chkconfig auditd on</sxh> |
| Una vez instalado y configurado hay que revisar el resultado del comando aureport regularmente | Una vez instalado y configurado hay que revisar el resultado del comando aureport regularmente | ||
| + | |||
| + | Una vez obtenido el listado de los archivo a auditar hay que agregarlos al archivo / | ||
| + | |||
| + | ==== Actualizar el sistema ==== | ||
| + | Mantener el sistema actualizado con los últimos parches | ||
| + | |||
| + | ==== Deshabiliar dispositivos innecesarios ==== | ||
| + | |||
| + | Para ver los dispositivos ejecutar | ||
| + | < | ||
| + | < | ||
| + | |||
| + | Una vez localizados, | ||
| + | |||
| + | ==== Deshabilitar servicios innecesarios ==== | ||
| + | |||
| + | Algunos servicios que no deben existir en ningún caso son: | ||
| + | |||
| + | * rlogin | ||
| + | * rsh | ||
| + | * rexec | ||
| + | * rcp | ||
| + | * telnet -> Usar ssh en su lugar | ||
| + | * talk | ||
| + | |||
| + | ==== Revisar los permisos en los ficheros ==== | ||
| + | Desactivar el bit SUID y SGID en el máximo de programas | ||
| + | Para buscar que archivos tienen el bit SUID/SGID activado ejecutar | ||
| + | < | ||
| + | |||
| + | Revisar el listado que aparece por si hay alguno al que podamos quitarselo | ||
| + | |||
| + | para desactivar este permiso | ||
| + | < | ||
| + | |||
| + | ==== Habilitar la comprobación de integridad ==== | ||
| + | La comprobación de integridad nos ayuda a localiza el punto de entrada de un ataque así como los archivos modificados o a los que han tenido acceso. | ||
| + | Para esta tarea podemos utilizar estas herramientas: | ||
| + | * Amtu (Abstract Machine Test Utility): Realiza comprobaciones de seguridad en CPU, HD, red y memoria | ||
| + | * Aide(Advanced Intrusion Detection Environment): | ||
| + | |||
| ==== Scripts de bastionado ==== | ==== Scripts de bastionado ==== | ||
| * http:// | * http:// | ||
| Línea 211: | Línea 265: | ||
| * www.sans.org/ | * www.sans.org/ | ||
| * http:// | * http:// | ||
| + | * https:// | ||
| === Búsqueda de archivos con suid/sgid === | === Búsqueda de archivos con suid/sgid === | ||
| - | <code>find / -type t\ (-perm 04000 -o - perm -02000\) -exec ls -la {} \</code> | + | <sxh>find / -type t\ (-perm 04000 -o - perm -02000\) -exec ls -la {} \</sxh> |
| === Buscar otros archivos peligrosos === | === Buscar otros archivos peligrosos === | ||
| - | <code>find / name -rhosts -name .netrc</code> | + | <sxh>find / name -rhosts -name .netrc</sxh> |