Este Artículo pretende explicar algunos puntos de seguridad de los sistemas FreeBSD, modificando y actualizando algunas opciones o funciones que vienen instaladas por default en el sistema.
No pretendo abarcar temas avanzados de seguridad ni suponer que con este articulo su FreeBSD será invulnerable, solamente pretendo ayudar a asegurar de la mejor manera posible las instalaciones por default .
El sistema operativo debe ser asegurado desde el principio de la instalación , hay algunas cosas que se deben hacer durante el proceso de instalación las cuales prevendrán futuros problemas.
Primero que todo debemos asegurar nuestro sistema de archivos, obviamente las especificaciones de los diferentes sistemas de archivos dependerán, de las capacidades de Hardware con las que se cuenten, pero esta configuración servirá como guía Básica :
Luego vemos la salida del comando mount(8)
En la partición Raíz (/)basta con dejar un espacio de 128 mb el cual será suficiente , Los archivos temporales son almacenados en /tmp , este directorio puede ser escrito por todos los usuarios por lo tanto es importante el no permitir que ciertos archivos sean usados de este directorio . Usando el archivo fstab(5) añadimos las banderas de NOSUID y NODEV lo que deshabilita el uso de programas SUID así como bloquea algunos dispositivos del sistema de archivos .
Para la mayoría de las Computadoras no hay razón para correr en nivel de seguridad -1, a menos que se desee ejecutar X-Windows en la Computadora. Si NO se va a correr X-Windows en la Computadora lo recomendable es cambiarse al nivel de seguridad 1 con el siguiente comando:
Este nivel de seguridad impide hacer cambios al Kernel amenos que se inicie la maquina en single user mode , también los KLD´s (Kernel loaders) no podrán ser cargados ni descargados , tampoco los dispositivos /dev/mem y /dev/kmem podrán ser abiertos para escritura
Cabe destacar que usar niveles de seguridad mayores que 0 pueden causar problemas con algunas aplicaciones que monitorean el hardware por ejemplo las que muestran la temperatura del cpu .Esto sucede por que con los niveles de seguridad se protegen algunos dispositivos así como locaciones de memoria .
Por default FreeBSD trae un usuario llamado toor (root al reves) el cual tiene la función de hacerla de respaldo y recuperación en caso de desastres. La cuenta esta deshabilitada por default, se puede habilitar poniéndole password o bien eliminarla para evitar el mal uso de esta cuenta. Para eliminarla se debe :
Veremos la manera de asegurar los servicios casi indispensables para el sistema y deshabilitar aquellos que no nos sirvan
syslogd es el encargado de llevar las bitácoras del sistema ,
y automáticamente apunta al puerto UDP 514 , esto se puede prevenir añadiendo al
archivo /etc/rc.conf la siguiente línea :
editamos el archivo :
ee /etc/rc.conf
y añadimos lo siguiente:
syslogd_flags="-ss" .
portmap :Es usado para hacer llamadas remotas a procedimientos y en FreeBSD es utilizado por NFS .para deshabilitarlo se debe :
inetd es uno de los servicios que se deben evitar a toda costa ya que abre puertos inseguros como el 21 para telnet o ftp , y todo el trafico en este puerto viaja SIN encriptar es decir , cualquiera que instale un sniffer en nuestra red podría comprometer en serio la seguridad del sistema, para deshabilitarlo se debe :
ssh sustituye a telnetd como una manera eficaz de comunicarse con los servidores , ya que encripta la información , actualmente viene por default , en las instalaciones de FreeBSD pero tenemos que modificar algunos valores del archivo de configuración /etc/ssh/sshd_config para hacerlo mas seguro :
Con esto aseguramos que se utilice solamente el puerto 22 y el protocolo 2 , para la transferencia de datos .
log_in_vain Hasta ahora hemos deshabilitado algunos servicios pero, seria muy útil saber quien esta tratando de conectarse a los servicios y/o puertos que NO están habilitados para hacer esto tenemos que agregar la siguiente línea en el archivo /etc/rc.conf
blackhole a diferencia de log_in_vain , blackhole bloquea e ignora todo trafico UDP/TCP que va dirigido a puertos y/o servicios cerrados , con esto se podrían reducir los ataques de DoS (denial of service) . para hacer esto debemos modificar el archivo /etc/sysctl.conf añadiendo lo siguiente :
Crontabs existen algunos archivos que no queremos que todos los
usuarios puedan ver , especialmente el archivo de cron del usuario root ,
para impedir que el archivo /etc/crontab sea visto por los usuarios NO autorizados
se debe de :
Sendmail: se inicia por default cuando se prende el sistema para impedir que lo haga añadimos la siguiente línea al archivo : /etc/rc.conf
Seguridad en Passwords: el tipo de encriptado que viene por default en FreeBSD es el MD5 , que es ya algo antiguo , para sustituir este tipo de encriptado por uno mas actual llamado BLOWFISH o BLF se debe hacer lo siguiente :
Finalmente configuraremos el comando adduser para que de ahora en adelante todos los nuevos usuarios que se creen , vengan con BLF , para esto editamos el archivo : /etc/auth.conf y modificamos la siguiente línea :
Para Impedir que se cambie el password de root en single mode se debe
modificar el archivo /etc/ttys y cambiar :
Monitoreo de Procesos : Siempre es bueno saber exactamente que esta pasando en nuestro servidor así como que comandos fueron ejecutados por los usuarios , para habilitar eso ejecutaremos los siguientes comandos :
KERNEL : aprovecharemos para agregar y/o modificar algunas opciones en el Kernel de FreeBSD , el cual su archivo de configuración se encuentra en : /usr/src/sys/i386/conf/GENERIC , lo que haremos primero es respaldar el archivo original:
Permisos de Directorio : Es muy importante saber , que es lo que los usuarios pueden ver , por ejemplo no queremos que los usuarios tengan acceso al contenido de la carpeta de /root . Ejecutando un: "chmod 0750 /root" , impedirá que vean el contenido , a menos que se encuentren en el grupo Wheel . Si no queremos que los usuarios de Wheel tengan acceso al directorio ejecutamos un: "chmod 0700 /root" y con esto solo el usuario de root tendrá acceso a su directorio .
Ocultando Procesos : Se pueden limitar los procesos que los usuarios pueden ver cuando ejecutan el comando ps . Por default FreeBSD permite a los usuarios ver todos los procesos , incluidos los que NO les pertenecen para evitar esto , ejecutamos los siguientes comandos :
Espero que este articulo sea de utilidad
Dudas y comentarios son bienvenidos