sábado, 8 de octubre de 2016

Fortificando un FreeBSD

1. Definición:

FreeBSD es un avanzado sistema operativo para arquitecturas x86 compatibles (como Pentium® y Athlon™), amd64 compatibles (como Opteron™, Athlon™64 EM64T), UltraSPARC®, IA-64, PC-98 y ARM. 
FreeBSD es un derivado de BSD, la versión de UNIX® desarrollada en la Universidad de California, Berkeley. FreeBSD es desarrollado y mantenido por un numeroso equipo de personas. El soporte para otras arquitecturas está en diferentes fases de desarrollo.

En este post se verá como installar freeBSD, instalar un escritorio y una parte de seguridad.
Este es un buen post si quieres empezar con freeBSD. 

DOCS

http://ftp.freebsd.org/pub/FreeBSD/doc/es/books/handbook/ https://www.freebsd.org/doc/handbook/ 

2. Instalación freeBSD:

Descarga FreeBSD (Yo he utilizado FreeBSD-11.0-RC3-amd64-dvd1.iso): ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/

Instalamos el freeBSD (No me pararé en explicar como se instala ya que es muy sencillo, dejo un enlace de la documentación oficial en la que explica la instalación muy detallada)
https://www.freebsd.org/doc/es/books/handbook/install-start.html

Una vez instalado debemos configurarlo para ello iniciamos como root.
Explicaré como instalar los paquetes de dos formas: Con conexión a internet y sin conexión a internet.

2.1 Instalación de paquetes con conexión a internet

¡Atención!

Cada "■" es un comando en la terminal.

Empezaremos a configurar la red:
■ ee /etc/resolv.conf

En el archivo descomentaremos la variable nameserver y añadimos otro nameserver quedando así:

nameserver [IP LOCAL]
nameserver 8.8.8.8
nameserver 127.0.0.1

Para salir del editor presionamos la tecla ESC.
 
Una vez lista la red descargamos los ports:
■ portsnap fetch

Y los extraemos:
■ portsnap extract

Instalamos el gestor de paquetes:
■ pkg

Ahora tocará instalar xorg (Xorg es una aplicación pública, una implementación en código abierto del sistema X window versión 11.)
■ pkg install xorg

Lo configuraremos adaptándolo así a nuestra pantalla con:
■ Xorg -configure

Instalamos el escritorio que queramos (En mi caso instalaré gnome3):
■ pkg install gnome3

2.2 Instalación de paquetes sin internet (Probado en freeBSD 10.1)

1º Empezaremos creando un directorio llamado /dist para montar el DVD.

■ mkdir -p /dist
■ mount -t cd9660 /dev/cd0 /dist

 
2º Asegurate de que REPOS_DIR está apuntando a tu repositorio local
■ export REPOS_DIR=/dist/packages/repos

o al csh
■ setenv REPOS_DIR /dist/packages/repos

3º Bootstrap pkg e instala los paquetes:
■ pkg bootstrap   
■ pkg install xorg-server xorg gnome2 [...]

Para más información consultar: https://www.freebsd.org/releases/10.1R/errata.html

3. Configuración del escritorio

En el siguiente archivo tenemos que añadir algunos parámetros, asique editamos el archivo (En FreeBSD el archivo de configuración inicial primaria es /etc/defaults/rc.conf.  Ahí se encuentran los scripts de inicio del sistema):
■ ee /etc/rc.conf

Y añadimos:
gdm_enable="YES"
gnome_enable="YES" 
dbus_enable="YES" 
hald_enable="YES"

Editamos otro archivo fstab: (En este fichero aparece la lista de discos y particiones disponibles. En ella se indica como montar cada dispositivo y qué configuración utilizar. Su uso es el siguiente: <dispositivo> <punto_de_montaje> <sistema_de_archivos> <opciones> <dump-freq> <pass-num>):
■ ee /etc/fstab

Y abajo de todo añadimos (Con tabulaciones):
proc    /proc    procfs    rw    0    0

Y reiniciaremos el sistema:
■ reboot 

Error habitual
Si has escrito mal algun parametro del archivo /etc/rc.conf al iniciar dará error y no te dejará modificar el archivo porque el file system se monta solo en lectura, para corregir esto y que te deje modificar el archivo deberás poner:
■  mount -u -o rw /

4. Añadir nuestro usuario a sudoers

Instalamos los paquetes sudo y nano con:
■ pkg install sudo nano

Editamos el archivo sudoers con el comando:
­■ visudo

Y añadimos en la parte de User privilege specification debajo de root:
[Usuario] ALL=(ALL) ALL  

Cambiamos la shell de nuestro usuario con el comando:
■ nano /etc/passwd

Y en el archivo en la parte de nuestro usuario cambiamos la shell sh por bash  

5. Seguridad

Cuenta root:
- Nunca usar la cuenta root
- Cuando sea necesario usar sudo
- Cuando inicie el tty que pregunte por la contraseña de root:
■ nano /etc/ttys
y cambiar secure por insecure
Que siempre haya que escribir la contraseña de root cuando se use sudo
■ sudo visudo
Añadir en la parte Defaults:
Defaults timestamp_timeout=0

Criptografía para el login:
■ echo "crypt_default=blf " > /etc/auth.conf

■ nano /etc/login.conf:
:passwd_format=blf:\
:minpasswordlen=8:\
:mixpasswordcase=true:\
:idletime=30:\
:umask=022:
cap_mkdb /etc/login.conf

 
Restringir acceso a archivos (Solo entrar como root):
echo "root" > /var/cron/allow
■ echo "root" > /var/at/at.allow
■ chmod o= {/etc/crontab, /usr/bin/crontab,
/usr/bin/at, /usr/bin/atq, /usr/bin/atrm,
/usr/bin/batch}


Restringir más accesos:
■ chmod o= {/etc/fstab, /etc/ftpusers,   /etc/group,
/etc/hosts, /etc/hosts.allow, /etc/hosts.equiv,
/etc/hosts.lpd, /etc/inetd.conf, /etc/login.conf,
/etc/login.access, /etc/newsyslog.cong, /etc/rc.conf,
/etc/ssh/sshd_config, /etc/sysctl.conf, /etc/syslog.conf,
/etc/ttys} 


Restringir accesos nivel paranoia:
chmod o= {/usr/bin/users, /usr/bin/w,
/usr/bin/who, /usr/bin/lastcomm,
/usr/sbin/jls, /usr/bin/last,
/usr/sbin/lastlogin}
chmod ugo= {/usr/bin/rlogin,
/usr/bin/rsh}


SSH:
■  nano /etc/ssh/sshd_config
- Cambiar puerto por defecto.
- Protocolo 2
- PermiteRootLogin=no
- X11Forwarding=no

Protección de procesos:
Una configuración de seguridad que ayuda a proteger procesos, consiste en evitar que sus PID (Process ID) sean predecibles (como lo es por ejemplo en Linux). En FreeBSD esta característica se encuentra deshabilitada por defecto. Para habilitar el uso de PID aleatorios, se debe configurar correctamente la variable del kernel kern.randompid, indicando un módulo numérico (cuanto más grande el módulo, mayor aleatoriedad, por ende mayor seguridad). Por ejemplo, se puede utilizar el valor 1000:
■ sysctl kern.randompid=1000

Evitar que los usuarios sean capaces de ver procesos y sockets de otros usuarios a través de la variable del kernel 
 ■ sysctl security.bsd.see_other_uids=0

Daemons:
echo 'kern_securelevel_enable="YES"' >> /etc/rc.conf
echo 'kern_securelevel_enable="1"' >> /etc/rc.conf
echo 'portmap_enable="NO"' >> /etc/rc.conf
echo 'inetd_enable="NO"' >> /etc/rc.conf

echo 'sendmail_enable="NONE"' >> /etc/rc.conf
echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf
echo 'sendmail_outbound_enable="NO"' >> /etc/rc.conf
echo 'sendmail_msp_queue_enable="NO"' >> /etc/rc.conf 


Daemons paranoia:
echo 'clear_tmp_enable="YES"' >> /etc/rc.conf
echo 'icmp_log_redirect="YES"' >> /etc/rc.conf

■ echo 'log_in_vain="YES"' >> /etc/rc.conf
echo 'icmp_drop_redirect="YES"' >> /etc/rc.conf


Crear una JAIL:
https://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/jails.html 
- Virtualizacion nativa de freeBSD 
- Archivos y procesos enjaulados 
- Permite compartir entre las VM 
- Puede limitar el espacio de disco para ínodos 
- Sistema de archivos montado como solo de lectura, no permite rootkits. 

Firewalls:
https://www.freebsd.org/doc/handbook/firewalls-pf.html
 
Nivel del kernel:
kern_securelevel_enable="3"
-1 (default): Sin seguridad en el kernel.
1: Sin módulos de carga, a menos
recompilar. No hay memoria del sistema de escritura directa.
Sin directa escribe en el disco sin formatear

2: modo 1 + sin cambiar la estructura del sistema sin
escribir directamente en el disco

3: modo 2 + sin alteraciones en las reglas del firewall, sin alteraciones en el enrutamiento de la red.

 
Previous Post
Next Post

post written by:

0 comentarios: