Páginas

martes, 15 de abril de 2014

Nas FreeNAS


Fuente: freenas 9.2.1 guide ixsystems

FreeNAS es un NAS basado en FreeBSD. Un NAS provee un sistema operativo optimizado para almacenar y compartir archivos.

Soporta AFP, CIFS, FTP, NFS, SSH (incluido SFTP), y TFTP para compartir archivos, Directorio Activo o LDAP, crear e importar ZPS pools, replicación segura snapshots, administración y configuración desde interfaz gráfica. y un largo etc..

Un segundo disco duro de 250GB será utilizado para almacenamiento y compartición de datos (ada1).

Antes de crear conjunto de datos, determine cuales usuarios tendrán acceso a qué datos. FreeNAS soporta usuarios, grupos, y permisos.

Después de crear el volumen ZFS (recomendado para obtener el máximo rendimiento del sistema FreeNAS), dividimos el ZFS pool en datasets para proveer más flexibilidad al configurar el acceso de los usuarios a los datos.

http://192.168.3.45


Configurar volumen y datasets:






Configurar /mnt/dades


Establecer una cuenta de correo electrónico para el usuario root.
Importantes mensajes del sistema serán enviados al usuario root. Por razones de seguridad está desactivado el password login para la cuenta root.

Para cuentas de sistema la entrada Home Directory será /nonexistent. Si la opción CIFS, "Habilitar directorios (home)" está habilitada un directorio con el mismo nombre de la cuenta de usuario será creado para cada usuario.

Al contrario de la shell para una cuenta de usuario, la shell será nologin para cuentas de sistema.

Apple (AFP): Para entornos de computadoras que ejecutan Mac OS X.

Unix (NFS): Accesible por Mac OS X, Linux, BSD, y versiones profesionales de Windows. Ideal en redes mixtas.

Windows (CIFS): FreeNAS utiliza Samba para proveer el servicio SMB/CIFS. Este tipo de recurso compartido es accesible por computadoras con Windows, Mac OS X, Linux y BSD, pero más lento que un recurso compartido NFS. Si su red contiene solo sistemas Windows es buena elección.

Una vez los usuarios y grupos son creados, puede asignar usuarios como miembro de un grupo, para este ejemplo el grupo se llamará usuario:


Miembros del grupo usuario:


NFS configuración:

nobody acceso cuenta NFS
nobody propietario
nobody mapall user
nobody mapall group



Con esta configuración, no importa qué cuenta de usuario se conecta a la compartición NFS, ya que será asignado a la cuenta de usuario nobody y sólo se dispone de los permisos que ha especificado en el volumen/conjunto de datos. Por ejemplo, incluso si el usuario root puede conectarse, no va a tener acceso root al recurso compartido.



Montar en cliente freebsd recurso compartido.  Tener la biblioteca cliente para acceder compartidos NFS y Agregar al archivo /etc/rc.conf
nfs_client_enable="YES"

Iniciar el servicio
# /etc/rc.d/nfsclient start



Copiar archivos desde pendrive 2GB hacia carpeta freenas


Windows (CIFS):

Si no utiliza Directorio Activo o LDAP, crear una cuenta de usuario por cada usuario.

- El nombre de usuario y la contraseña debe coincidir con el nombre de usuario y contraseña en el sistema cliente.

- Directorio de inicio. Navegar por el volumen a compartir.

- Repita este proceso para crear cuentas de usuario a todos los usuarios que necesiten tener acceso al recurso compartido CIFS.

- Agregar un grupo. Una vez creado, agregar las cuentas de usuario creadas con anterioridad.

Dar permiso al grupo para el volumen de almacenamiento.
Propietario: nobody
Grupo: usuario

Modo: derecho de escritura para el grupo


Abrir los puertos utilizados por CIFS en el Firewall

TCP 139 (smbd)
TCP 445 (smbd)
UDP 137 (nmbd)
UDP 138 (nmbd)


Configurar CIFS:



Para evitar que el explorador de Windows se cuelgue cuando acceda al recurso compartido se debe mapear el recurso compartido como una unidad de red.

Conectar desde un cliente Windows 7 utilizando la cuenta de usuario axel:






Recurso compartido para el usuario Windows axel:


Rsync es una utilidad para copiar automáticamente datos de un sistema a otro en una red. Una vez copiados los datos iniciales, rsync reduce la cantidad de datos mediante el envío sólo las diferencias entre los archivos de origen y destino (copia incremental).

La configuración rsync a través del modo SSH entre dos sistemas FreeNAS está detalladamente documentada en freenas 9.2.1 guide.pdf

Acceder vía ssh a freenas:


Desde la consola puede comprobarse el archivo de configuración de samba:
# testparm /usr/local/etc/smb.conf

Unix es genial!.

jueves, 10 de abril de 2014

PF FreeBSD cortafuegos


Entendiendo PF el cortafuegos de OpenBSD Project, también portado a FreeBSD.


Pfsense utiliza PF y routers basados ​​en Linux utiliza Netfilter e iptables. iptables es más rápido, pero no es tan seguro - no realiza verdadera inspección de estado y ha tenido un considerable número de errores.

La ventaja principal que tiene PF sobre iptables es la separación del mecanismo de la política. iptables requiere que introduzca normas con argumentos variables y complicados que requieren módulos del kernel adicionales. PF es un formato de texto con un mejor programa de análisis - muy potente con un bajo costo operativo


La autoría de esta artículo pertenece a Andrew Lockhard, Analista Superior de Seguridad, Auditor de Código Ensamblador de Programas y dedica su tiempo libre a Snort-Wireless (proyecto dedicado a añadir capacidades inalámbricas a Snort popular IDS de código abierto). Espero que os sirva, como en mi caso, para entender el funcionamiento de PF.


PakcetFilter más conocido como PF supera a IPFilter, su antecesor, tanto en características como en versatilidad y es parte de FreeBSD a partir de la versión 5.3-RELEASE.

En FreeBSD tendrá que activar como mínimo las siguientes opciones de configuración del núcleo:

device pf
device pflog

Si no están presente las opciones anteriores, agréguelas recompile y reinstale el núcleo. El programa pfctl sirve para comunicarse con la parte del núcleo dedicada a PF. pfctl no se utiliza para crear reglas individuales sino que dispone de su propio lenguaje de configuración y creación de reglas.

La configuración de PF pasa por editar el archivo /etc/pf.conf

El lenguaje de creación de reglas de PF es potente y fácil de utilizar. El archivo pf.conf está dividido en siete apartados, cada uno con reglas de un tipo determinado.

En el primer apartado se declaran las variables, ya sean variables individuales como listas de valores que podrán utilizarse en el resto de apartados del archivo de configuración.

IF_EXT="em1" (internet)
IF_INT="em0" (lan)
RFC1918="{ 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

En el segundo apartado puede definir tablas de direcciones IP para utilizarlas posteriormente en las reglas. Utilizar estas tablas para crear listas de direcciones IP es mucho más rápido que usar las variables del primer apartado porque cuando estas se utilizan en una regla, se crean tantas reglas como valores haya definidos en dicha variable. Si utiliza tablas solo habrá una regla.

Entonces, podría crear una tabla que albergase las direcciones IP que no admiten enrutamiento según RFC 1918:

table const { 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8  }

La plabra clave const le sirve para asegurarse de que el contenido de la tabla no se modifique una vez creada. Utilice estas tablas de la misma forma que utilizaría variables:

block drop quick on $IF_EXT from any to

También podría obtener una lista de direcciones de un archivo y guardarla en una tabla utilizando la palabra clave file:

table file "/etc/origen_correo_basura.tabla"

Si decide no utilizar la palabra cable const podrá añadir más direcciones a la tabla:

pfctl -t origen_correo_basura -T add 10.1.1.1

Además, puede eliminar direcciones de la tabla con la siguiente orden:

pfctl -t origen_correo_basura -T delete 10.1.1.1

Utilice la siguiente orden para ver el contenido de la tabla:

pfctl -t origen_correo_basura -T show

Además de direcciones IP, también podría guardar nombres en la tabla. En este caso, se insertarían en la tabla las direcciones válidas que se obtengan tras la resolución.

Opciones globales

En el siguiente apartado del archivo de configuración están las opciones de configuración que modifican el comportamiento de PF. Modifíquelas para controlar tiempos de expiración de sesiones o de desfragmentación, transiciones de la tabla de estados, recopilación de datos estadísticos y otras opciones. Utilice la palabra clave set para activarlas. Existen demasiadas opciones como para poder hablar aquí sobre todas ellas con un mínimo nivel de detalle, sin embargo, veremos las más importantes y útiles.

Una de ellas es block-policy. Utilícela para determinar el comportamiento predeterminado de la palabra clave block. Su valor debe ser drop si desea que los paquetes se descarten sin ningún mensaje.

Otra alternativa es asignar el valor return, con lo que la conexión a la que pertenece el paquete y a la que se aplica la regla se reiniciará o se enviará un paquete ICMP de destino inaccesible, dependiendo si el paquete que desencadenó la regla es del tipo TCP o UDP.

Si quiere que los paquetes se descarten sin ningún mensaje de manera predeterminada, añada la siguiente línea a /etc/pf.conf:

set blcok-policy drop

Para activar el registro del número de paquetes o de bytes que atraviesan una determinada interfaz añada una línea como la siguiente:

set loginterface em0

Si no quiere guardar registro alguno:

set loginterface none


Reglas para regularizar el tráfico

El siguiente apartado contiene las reglas de regularización del tráfico. Estas reglas, se aseguran de que el tráfico que atraviese el cortafuegos cumpla ciertas reglas relacionadas con la fragmentación, el identificador IP, TTL mínimo y otros atributos del datagrama TCP. todas las reglas de esta apartado incluyen el prefijo scrub. Por lo general, scrub all será todo lo que necesite escribir. Sin embargo, si lo necesita, puede entrar en detalles indicando qué quiere regular y como quiere hacerlo. Gracias a la sintaxis de PF para la creación de reglas de filtrado puede indicar a qué tipos de paquetes se aplicarán este tipo de reglas y regularizar el tráfico con gran precisión.

Puede utilizar la instrucción scrub para que los paquetes fragmentados se reensamblen antes de ser enviados a su destinatario.
Sòlo tiene que incluir la siguiente línea en el archivo de configuració para activa el reensamblado de paquetes fragmentados en todas las interfaces:

scrub fragment reassemble

Si sólo quiere activarlo en una determinada interfaz:

scrub in on em0 all fragment reassemble

Reglas de filtrado

Los dos apartados siguientes del archivo pf.conf están relacionados con las colas de paquetes y la traducción de direcciones, pero, ya que este truco se centra en el filtrado de paquetes, nos los vamos a saltar. Lo que nos lleva al último apartado, en el que se encuentran las reglas de filtrado en sí mismas. Por lo general, la sintaxis de estas es la siguiente:

acción dirección [log] [quick] on int [interfaz] [proto protocolo] \
from dirección_origen [port puerto_origen] to dirección_destino
[port puerto_destino] \ [opciones tcp] [estado]

Cada regla de PF puede desempeñar dos acciones: block y pass (bloquear y dejar pasar). Como ya se ha comentado, las directivas de bloqueo afectan al comportamiento de la accción block.

Sin embargo, puede modificar el comportamiento que esta acción tendrá en algunas reglas si incluye la palabra clave block junto con la acción a realizar, por ejemplo block drop o bien block return. Además, tambien puede utilizar block return-icmp, con lo que, por defecto, se informará de que no se puede llegar al destino solicitado. También podrá indicar el tipo del mensaje ICMP que se incluirá en la información devuelta.

La mayoría de las veces le interesará comenzar con reglas de bloqueo; así, sólo tendrá que añadir una regla para cada tipo de tráfico que desee dejar pasar a través del cortafuego.

Incluya la siguiente línea en el archivo /etc/pf.conf si quiere bloquear el tráfico a través de todas las interfaces de red:

block all

Después podrá añadir las reglas que permitan el paso a través del cortafuegos. Primero, indique que no desea filtrar el tráfico a través de la interfaz bucle:

pass quick on lo0 all

Fíjese en que se utiliza la palabra clave quick. Normalmente, PF pasará por todas las listas de reglas incluso si alguna ya permitió el paso del paquete en cuestión, para ver si existe alguna regla más concreta posteriormente que lo descarte. La palabra clave quick modifica este comportamiento, de manera que PF mismo, llevando a cabo la acción que esa regla describa. Si se utiliza con cuidado, esta regla puede mejorar el rendimiento del cortafuegos.

Utilice la palabra clave antispoof para evitar que sistemas del exterior intenten suplantar alguna dirección de la red interna:

antispoof quick for $IF_INT inet

A continuación, impida el acceso a través de la interfaz de red externa de cualquier tráfico que proceda de las direcciones IP que no admiten enrutamiento según RFC 1918. Estos paquetes, a menos que se indique lo contrario posteriormente, serán atrapados por al directiva de bloqueo predeterminada.
 Sin embargo, puede mejorar el rendimiento del sistema si utiliza una regla que elimine específicamente estos paquetes utilizando la palabra clave quick:

block drop quick on $IF_EXT from any to

Si desea permitir la entrada de tráfico dirigido a un determinado servidor Web (por ejemplo, 192.168.1.20), utilice una regla como ésta:

pass in on IF_EXT proto tcp from any to 192.168.1.20 port 80 \
modulate state flags S/SA

Así sólo permitirá la entrada de aquellos paquetes destinados al puerto 80 de 192.168.1.20 que intenten establecer una nueva conexión (es decir, aquellos en los que SYN esté activo), cuya información se guardará en la tabla de estados. La palabra modulate le permite garantizar que se genere un valor de secuencia inicial (ISN, initial sequence number) de alta calidad, algo de vital importancia si el sistema operativo que se esté utilizando en cualquiera de los dos extremos de la conexión utiliza un algoritmo de poca calidad para generar sus propios ISN.

De igual forma, si desea permitir el tráfico hacia y desde un determinado servidor de correo electrónico (digamos, aquel con la IP 192.168.1.21), use esta regla:

pass in on $IF_EXT proto tcp from any to 192.168.1.21 \
port { smtp, pop3, imap2, imaps } modulate state flags S/SA

Fíjese en que puede utilizar varios puertos en una misma regla si los separa con comas y los rodea de llaves.

También puede utilizar los nombres de los servicios, tal y como aparezcan en el archivo /etc/services, en lugar de sus números.
Para permitir el acceso a un determinado servidor DNS (el que está ubicado en 192.168.1.18, por ejemplo), añada una regla como la siguente:

pass in on $IF_EXT proto tcp from any to 192.168.1.18 port 53 \
modulate state flags S/SA

Si lo deja así, el cortafuegos bloqueará el tráfico UDP del servidor de nombres. Para permitirlo, añada la siguiente regla:

pass in on $IF_EXT proto udp from any to 192.168.1.18 port 53 \
keep state

Es interesanet destacar que se utiliza la palabra clave state, aun tratándose de una regla para bloquear paquetes UDP. En este caso, PF mantendrá un registro de la conexión utilizando las direcciones de origen y destino, así como los números de puerto.

Además, la palabra modulate no se puede utilizar porque los datagramas UDP no contienen números de secuencia. En su lugar, utilice keep state para que se guarde un registro del estado de la comunicación cuando no se realice una modulación del ISN. Y como los datagramas UDP no contienen indicador alguno, no tiene más que omitirlos.

Permita ahora el paso a través de cortafuegos de conexiones que se inicien en la red externa. Para conseguirlo tendrá que añadir la siguiente regla, que permite el tráfico entrante proveniente de las interfaces internas del cortafuego.

pass in on $IF_INT from $IF_INT:network to any
pass out on $IF_INT from any to $IF_INT:network
pass out on $IF_EXT proto tcp all modulate state flags S/SA
pass out on $IF_EXT proto { icmp, udp } all keep state

pOf, la popular herramienta de identificación pasiva de sistemas operativos, está integrada en las últimas versiones de PF. Esto permite que PF pueda averiguar qué sistema operativo se está utilizando en aquellos equipos que intenten que el tráfico que generan llegue o atraviese el ordenador en el que PF está funcionando. En consecuencia, podrá crear reglas específicas para un determinado sistema operativo. Por ejemplo, si quiere bloquear el tráfico de cualquier sistema operativo que no sea Linux, utilice algo como esto:

block in
pass in from any os "Linux"

Pero tenga presente que la detección de sistemas operativos dista mucho de ser perfecta.

Una vez que haya terminado de editar el contenido de pf.conf, active PF mediante las siguientes órdenes:

# pfctl -e
# pfctl -f /etc/pf.conf

La primera línea inicia PF, mientras que la segunda le indica dónde está el archivo de configuración que debe utilizar. Si realiza alguna modificación en dicho archivo mientras PF está funcionando sólo tendrá que volver a ejecutar la orden pfctl -f /etc/pf.conf.

Si quiere que PF se ejecute automáticamente cuando FreeBSD se inicie, añada la siguiente línea al archivo /etc/rc.conf:

pf_enable="YES"
gateway_enable="YES" # Enable as LAN gateway

Pfctl comandos:

# pfctl -f /etc/pf.conf -> Carga el archivo pf.conf
# pfctl -nf /etc/pf.conf -> Verifica el archivo pero no carga las reglas del mismo
# pfctl -Nf /etc/pf.conf -> Carga solo las reglas de NAT
# pfctl -Rf /etc/pf.conf -> Carga solo las reglas de Filtrado
# pfctl -sn -> Muestra las reglas de NAT que estan vigentes
# pfctl -sr -> Muestra las reglas de filtrado que estan vigentes
# pfctl -ss -> Muestra tabla de estado
# pfctl -sa -> Muestra TODO lo que es posible

https://www.freebsd.org/doc/handbook/firewalls-pf.html

Unix es genial!.

NFS4 Synology Clientes Unix


Montar directorios del servidor Synology en clientes Unix, Linux.

Habilitar NFS en Synology desde el navegador:
https://192.168.1.254:5001

user admin
password ************

Activar NFS en synology (ayuda de DSM)

Servicio NFS

El servicio NFS permite a los clientes de Linux y Unix acceder al dispositivo Synology NAS.

Para habilitar el servicio NFS:
Vaya a Panel de control > Servicios de archivos > Win/Mac/NFS y marque Habilitar NFS.
Haga clic en Aplicar.

Vaya al Panel de control > Carpeta compartida. Seleccione una carpeta compartida y haga clic en Editar para administrar las reglas de NFS y regular los derechos de acceso de clientes Linux a esta carpeta compartida.

Para habilitar la compatibilidad con NFSv4:
Marque Habilitar la compatibilidad NFSv4.

Haga clic en Aplicar.

Los equipos involucrados deben estar en la misma subred local. Por tanto, vamos a cambiar de subred el servidor Synology de la 192.168.1.0/24 a la 192.168.3.0/24 yo lo haré desde la consola vía SSH pero es posible realizarlo de forma gráfica vía navegador web.

Entrar al servidor Synology como root y editar los archivos correspondientes no sin antes hacer una copia del fichero original:






Reiniciar Synology



Agregar al fichero /etc/rc.conf del cliente FreeBSD
nfs_client_enable="YES"


ds112plus:/volume1/freebsd-client on /media/ds112plus (nfs)


Unix es genial!.