Ir al contenido
Otras versiones

Cargando…

Configurar CIFS

El objetivo de esta configuración es permitir el uso de OpenKM como unidad remota mediante el protocolo CIFS. A continuación se describen dos formas de configurarlo:

  • Autenticación mediante la base de datos
  • Autenticación mediante Active Directory

Este es el caso más sencillo. Debe configurar las siguientes partes:

  • Servidor OpenKM
  • Configuración de OpenKM
  • Cliente Windows

Si el sistema no puede iniciarse con permisos de root, los puertos indicados a continuación deben ser superiores a 1024 (los puertos por defecto del sistema son 138, 137, 139 y 445), por lo que es necesario redirigir los puertos originales a los nuevos. Para ello es necesario ejecutar los siguientes comandos como root o mediante sudo:

Ventana de terminal
modprobe iptable_nat
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 445 -j DNAT --to-destination :1445
iptables -t nat -A PREROUTING -p tcp --dport 139 -j DNAT --to-destination :1139
iptables -t nat -A PREROUTING -p tcp --dport 137:139 -j DNAT --to-destination :1137-1139
iptables -t nat -A PREROUTING -p udp --dport 137:139 -j DNAT --to-destination  :1137-1139

Para configurarlo, vaya a Administration > Configuration y cambie las siguientes propiedades:

Campo / Propiedad Tipo Descripción Valor
system.cifs.server Boolean Propiedad para habilitar o deshabilitar CIFS. true
system.cifs.authenticator.class String Clase utilizada por CIFS para autenticarse contra OpenKM. com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator
Según el adaptador de autenticación, debe utilizarse la clase de autenticación adecuada:
com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator
com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator
system.cifs.debug Boolean Propiedad utilizada para habilitar un registro detallado del funcionamiento de CIFS. false
system.cifs.domain.name String Dominio o grupo de trabajo donde está instalado el servidor OpenKM.
system.cifs.hostname String Nombre de host donde está instalado OpenKM. 0.0.0.0
system.cifs.port.datagram Integer Número de puerto utilizado por los datagramas. Por defecto 1138
system.cifs.port.name Integer Número de puerto utilizado por CIFS. Por defecto 1137
system.cifs.port.session Integer Número de puerto utilizado por la sesión. Por defecto 1139
system.cifs.port.smb Integer Número de puerto utilizado por SMB. Por defecto 1445
system.cifs.shared.name String Propiedad para indicar el nombre del repositorio Por defecto el nombre es repository

Es necesario modificar una Local Security Policy. Para ello, vaya a Control Panel → Administrative Tools → Local Security Policy → Local Policies → Security Options:

 Después, para conectarse a la máquina remota, vaya a Computer → Map Network Drive:

  • Drive: cualquier letra disponible
  • Folder: \\server_ip\repository O \\server_name\repository
  • Connect using different credentials (márquelo si el usuario y la contraseña de Windows son distintos de los del usuario de OpenKM).

Después haga clic en el botón Finish.

En este caso, partimos de la suposición de que el sistema ya se ha integrado con Active Directory. A partir de este punto será necesario configurar:

  • Active Directory
  • Servidor OpenKM
  • Configuración de OpenKM
  • Cliente Windows

Es necesario crear un usuario que OpenKM, mediante una clave privada, utilizará para validar las credenciales de la petición CIFS entrante. Para ello deben seguirse los siguientes pasos:

  1. Cree un Computer Object que será el correspondiente al servidor OpenKM.

  2. Una vez creado, modifique sus propiedades habilitando la propiedad Trusted for Delegation. 1. Trusted for Delegation: este paso es importante porque, si no se habilita, el cliente y el servidor no podrán negociar.

  3. El servidor debe autenticarse contra Active Directory antes de validar los tickets enviados por el cliente. Esta autenticación se realiza mediante un archivo (keytab) que asocia el servicio (servidor de aplicaciones) con un usuario de dominio. Este usuario debe utilizarse única y exclusivamente para este fin, porque si se utiliza para iniciar sesión en otro equipo, no podrá iniciar sesión al mismo tiempo en el servidor de aplicaciones. Una vez creado el usuario, se configuran sus propiedades para que no permitan la modificación de la contraseña y para evitar la caducidad de la cuenta. Por último, seleccione la pestaña Account y habilite la opción Do not require Kerberos preauthentication en la sección Account Options. Para este ejemplo, el usuario creado se llama servercifs.

  4. Seleccione la pestaña Account y habilite la opción Do not require Kerberos preauthentication en la sección Account Options.

  5. Genere el archivo keytab. Este archivo es una copia codificada de la clave privada de un usuario en kerberos. La aplicación web lo utiliza como proxy de autenticación de las credenciales enviadas por el usuario. Se ejecuta el siguiente comando:

     ktpass -princ cifs/tomcat.example.com@EXAMPLE.COM -mapuser servercifs@EXAMAPLE.COM -crypto all -kvno 0 \ -ptype KRB5_NT_PRINCIPAL -pass * -out cifs.keytab -kvno 0
    - es importante destacar:
    1\. [tomcat.example.com@EXAMPLE.COM:](mailto:tomcat.example.com@EXAMPLE.COM:) el nombre completo del servidor tomcat y su dominio.
    2\. servercifs@EXAMAPLE.COM : el usuario creado anteriormente.
    3\. cifs.keytab: archivo donde se exporta la clave privada que utilizará el servidor Tomcat.
  6. Es necesario configurar un Service Principal Name (SPN) con CIFS y un nombre de servidor, por ejemplo: tomcat.example.org, donde se ejecuta el contenedor de servlets tomcat. Se utiliza con el usuario de dominio y su keytab se utiliza después como credencial de servicio:

    C:\> setspn -A cifs/tomcat.example.org servercifs
    C:\> setspn -A cifs/tomcat.example.org servercifs@EXAMPLE.COM

Servidor OpenKM en la configuración de Active Directory

Sección titulada «Servidor OpenKM en la configuración de Active Directory»

Deben seguirse los siguientes pasos:

Lo primero que debe hacerse es incluir el servidor de aplicaciones en el dominio, si no se hizo previamente. Para ello siga la guía siguiente:

http://cerowarnings.blogspot.com.es/2011/11/how-to-linux-en-dominio-windows.html

Un aspecto a tener en cuenta es añadir la siguiente configuración al archivo /etc/host para evitar problemas conocidos:

Ventana de terminal
# ldap in /etc/hosts
192.168.1.110 example.com
192.168.1.110 Schema.Configuration.example.com
192.168.1.110 Configuration.example.com
192.168.1.110 DomainDnsZones.example.com
192.168.1.110 ForestDnsZones.example.com

Si el sistema no puede iniciarse con permisos de root, los puertos indicados a continuación deben ser superiores a 1000 (los puertos por defecto del sistema son 138, 137, 139, 445), por lo que es necesario redirigir los puertos originales a los nuevos. Para ello es necesario ejecutar los siguientes comandos como root o mediante sudo:

Ventana de terminal
$ modprobe iptable_nat
$ iptables -F
$ iptables -t nat -F
$ iptables -P INPUT ACCEPT
$ iptables -P FORWARD ACCEPT
$ iptables -P OUTPUT ACCEPT
$ iptables -t nat -A PREROUTING -p tcp --dport 445 -j DNAT --to-destination :1445
$ iptables -t nat -A PREROUTING -p tcp --dport 139 -j DNAT --to-destination :1139
$ iptables -t nat -A PREROUTING -p tcp --dport 137:139 -j DNAT --to-destination :1137-1139
$ iptables -t nat -A PREROUTING -p udp --dport 137:139 -j DNAT --to-destination  :1137-1139

Instale el cliente kerberos:

Ventana de terminal
$ apt-get krb5-user krb5-config

Antes de iniciar la aplicación, Kerberos debe configurarse correctamente para validar los tickets. En los sistemas Linux este archivo se encuentra en “/etc/kbr5.conf”.

En este archivo deben especificarse el dominio, el servidor KDC y los algoritmos permitidos. Los algoritmos más importantes son arcfour-hmac-md5 y rc4-hmac, que ofrece Microsoft Active Directory.

Ventana de terminal
[libdefaults]
default_realm = EXAMPLE.COM
#these are mandatory for kerberos.
permitted_enctypes = aes128-cts rc4-hmac
default_tgs_enctypes = aes128-cts rc4-hmac
default_tkt_enctypes = aes128-cts rc4-hmac
[realms]
EXAMPLE.COM = {
   kdc = SERVER.example.com
   admin_server = SERVER.example.com
  default_domain = EXAMPLE.COM
}
[domain_realm]
  example.com = EXAMPLE.COM
 .example.com = EXAMPLE.COM

Cree un archivo de configuración necesario para habilitar el inicio de sesión de java con el siguiente contenido:

Ventana de terminal
JLANServerCIFS{
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
useKeyTab=true
keyTab="/path/to/cifs.keytab"
principal="cifs/tomcat.example.com";
};

Como podemos observar:

  • JLANServerCIFS se corresponde con la propiedad system.cifs.ldap.login.entry
  • La propiedad principal se corresponde con la propiedad: system.cifs.ldap.principal
  • La propiedad keytab es el lugar seguro donde se ha copiado el archivo .keytab creado previamente, que contiene la clave para acceder a Active Directory.

Habilitar la configuración de inicio de sesión de Java.

Sección titulada «Habilitar la configuración de inicio de sesión de Java.»

Para habilitar el inicio de sesión de java, es necesario cambiar la configuración del archivo de seguridad de Java, que suele estar en: JRE/lib/security/java.security, y añadir la siguiente línea:

Ventana de terminal
login.config.url.1= file:${java.home}/lib/security/cifs.login.config where cifs.login.config is the file created in the prevous section.

Configuración de OpenKM en la configuración de Active Directory

Sección titulada «Configuración de OpenKM en la configuración de Active Directory»

Para configurarlo: vaya a Administration > Configuration y cambie las siguientes propiedades:

Campo / Propiedad Tipo Descripción Valor
system.cifs.server Boolean Propiedad para activar o desactivar CIFS true
system.cifs.authenticator.class String Clase utilizada por CIFS para autenticarse contra OpenKM com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator
Según el adaptador de autenticación, debe utilizarse la clase de autenticación adecuada:
com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator
com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator
system.cifs.debug Boolean Propiedad utilizada para habilitar un registro detallado del funcionamiento de CIFS false
system.cifs.domain.name String Dominio o grupo de trabajo donde está instalado el servidor OpenKM EXAMPLE
system.cifs.hostname String Nombre de host donde está instalado OpenKM 0.0.0.0
system.cifs.ldap.kdc String Nombre del servidor de Active Directory server.example.com
system.cifs.ldap.principal String Servicio creado previamente en Active Directory cifs/tomcat.example.com
system.cifs.ldap.password String Contraseña del usuario creado con fines de autenticación En el ejemplo el usuario era servercifs
system.cifs.ldap.realm String Nombre del dominio donde está instalado Active Directory EXAMPLE.COM
system.cifs.ldap.login.entry String Nombre de la configuración de Kerberos dentro del archivo de configuración JLANServerCIFS
system.cifs.port.datagram Integer Número de puerto utilizado por los datagramas Por defecto 1138
system.cifs.port.name Integer Número de puerto utilizado por cifs Por defecto 1137
system.cifs.port.session Integer Número de puerto utilizado por la sesión Por defecto 1139
system.cifs.port.smb Integer Número de puerto utilizado por smb Por defecto 1445
system.cifs.shared.name String Propiedad para indicar el nombre del repositorio Por defecto el nombre es repository

Cliente Windows en la configuración de Active Directory

Sección titulada «Cliente Windows en la configuración de Active Directory»

Es necesario modificar una Local Security Policy. Para ello, vaya a Controls Panel → Administrative Tools → Local Security Policy → Local Policies → Security Options: 

  Después, para conectarse a la máquina remota, vaya a Computer → Map Network Drive:

  • Drive: cualquier letra disponible

  • Folder: \\server_name\repository

  • Connect using different credentials (márquelo si el usuario y las contraseñas de Windows son distintos de los del usuario de OpenKM).

Después haga clic en el botón Finish.