Configuración de CIFS
El objetivo de esta configuración es permitir ver OpenKM como una unidad remota mediante el protocolo CIFS. A continuación se describen dos formas de configurarlo:
- Autenticación por base de datos
- Autenticación mediante Active Directory
Autenticación por base de datos
Sección titulada «Autenticación por base de datos»Este es el caso más sencillo. Debe configurar estas partes:
- Servidor OpenKM
- Configuración de OpenKM
- Cliente Windows
Servidor OpenKM
Sección titulada «Servidor OpenKM»Si el sistema no pudiera iniciarse con permisos de root, los puertos indicados a continuación deben ser superiores a 1024 (los puertos predeterminados 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:
echo 1 > /proc/sys/net/ipv4/ip_forwardmodprobe iptable_natiptables -Fiptables -t nat -Fiptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -t nat -A PREROUTING -p tcp --dport 445 -j DNAT --to-destination :1445iptables -t nat -A PREROUTING -p tcp --dport 139 -j DNAT --to-destination :1139iptables -t nat -A PREROUTING -p tcp --dport 137:139 -j DNAT --to-destination :1137-1139iptables -t nat -A PREROUTING -p udp --dport 137:139 -j DNAT --to-destination :1137-1139Configuración de OpenKM
Sección titulada «Configuración de OpenKM»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 los valores del adaptador de autenticación, debe utilizarse la clase de autenticador adecuada: com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator |
| system.cifs.debug | Boolean | Propiedad utilizada para habilitar el registro detallado de la funcionalidad 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 |
Cliente Windows
Sección titulada «Cliente Windows»Es necesario modificar una Directiva de seguridad local. Para ello, vaya a Panel de control → Herramientas administrativas → Directiva de seguridad local → Directivas locales → Opciones de seguridad:
Después, para conectarse a la máquina remota, vaya a Equipo → Conectar a unidad de red:
- Unidad: cualquier letra disponible
- Carpeta: \\server_ip\repository O \\server_name\repository
- Conectar con otras credenciales (marque esta opción si el nombre de usuario y la contraseña de Windows son distintos de los del usuario de OpenKM).
A continuación, haga clic en el botón Finalizar.
Autenticación mediante Active Directory
Sección titulada «Autenticación mediante Active Directory»En este caso, se supone que el sistema se integró previamente con Active Directory. Deberá configurar lo siguiente:
- Active Directory
- Servidor OpenKM
- Configuración de OpenKM
- Cliente Windows
Active Directory
Sección titulada «Active Directory»Es necesario crear un usuario que OpenKM, mediante una clave privada, utilizará para validar las credenciales de la petición CIFS entrante. Para ello, siga estos pasos:
-
Cree un objeto Equipo (Computer Object) que sea el correspondiente al servidor OpenKM.
-
Una vez creado, modifique sus propiedades habilitando la propiedad Trusted for delegation.
- Trusted for delegation. Este paso es importante porque, si no está habilitado, no será posible negociar entre el cliente y el servidor.
-
El servidor debe autenticarse contra Active Directory antes de validar los tickets enviados por el cliente. Esta autenticación se realiza mediante un fichero (keytab) que asocia el servicio (servidor de aplicaciones) a 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 en el servidor de aplicaciones. Una vez creado el usuario, modifique sus propiedades para impedir los cambios de contraseña y para impedir que la cuenta caduque. Por último, seleccione la pestaña Cuenta y habilite la opción No requerir la autenticación previa de Kerberos en la selección Opciones de cuenta. Para este ejemplo, se crea un usuario llamado servercifs.
-
Seleccione la pestaña Cuenta y habilite la opción No requerir la autenticación previa de Kerberos en la sección Opciones de cuenta.
-
Genere el fichero keytab. Este fichero 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 tener en cuenta:
1. tomcat.example.com@EXAMPLE.COM: nombre completo del servidor Tomcat y su dominio.
2. servercifs@EXAMPLE.COM : usuario creado anteriormente.
3. cifs.keytab: fichero donde se almacena la clave privada exportada para su uso por el servidor Tomcat.
- Es importante tener en cuenta:
-
Es necesario configurar un Service Principal Name (SPN) con CIFS y un nombre de servidor, por ejemplo: tomcat.example.org, donde se está ejecutando 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 servercifsC:\> setspn -A cifs/tomcat.example.org servercifs@EXAMPLE.COM
Configuración del servidor OpenKM en Active Directory
Sección titulada «Configuración del servidor OpenKM en Active Directory»Deben seguirse los siguientes pasos:
Introducir el servidor en el dominio
Sección titulada «Introducir el servidor en el dominio»Lo primero que debe hacer es incluir el servidor de aplicaciones en el dominio, si no se hizo previamente. Para ello, siga la guía:
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 fichero /etc/hosts debido a problemas conocidos previamente:
# ldap in /etc/hosts192.168.1.110 example.com192.168.1.110 Schema.Configuration.example.com192.168.1.110 Configuration.example.com192.168.1.110 DomainDnsZones.example.com192.168.1.110 ForestDnsZones.example.comRedirigir los puertos necesarios
Sección titulada «Redirigir los puertos necesarios»Si el sistema no puede iniciarse con permisos de root, los puertos mencionados a continuación deben ser superiores a 1000 (los puertos predeterminados del sistema son 138, 137, 139, 445), por lo que es necesario redirigir los puertos originales a los nuevos. Para ello, ejecute los siguientes comandos como root o mediante sudo:
$ 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-1139Fichero de configuración de Kerberos
Sección titulada «Fichero de configuración de Kerberos»Instale el cliente Kerberos:
$ apt-get krb5-user krb5-configAntes de iniciar la aplicación, Kerberos debe estar configurado correctamente para validar los tickets de forma adecuada. En los sistemas Linux este fichero se encuentra en “/etc/krb5.conf”.
En este fichero 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.
[libdefaults]default_realm = EXAMPLE.COM#these are mandatory for kerberos.permitted_enctypes = aes128-cts rc4-hmacdefault_tgs_enctypes = aes128-cts rc4-hmacdefault_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.COMFichero cifs.login.config
Sección titulada «Fichero cifs.login.config»Cree un fichero de configuración necesario para habilitar el inicio de sesión de Java con el siguiente contenido:
JLANServerCIFS{com.sun.security.auth.module.Krb5LoginModule requiredstoreKey=trueuseKeyTab=truekeyTab="/path/to/cifs.keytab"principal="cifs/tomcat.example.com";};Como puede observarse:
- 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 la ubicación segura donde se ha copiado el fichero .keytab creado anteriormente, 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 fichero de seguridad de Java, que suele estar ubicado en: JRE/lib/security/java.security, y añadir la siguiente línea:
login.config.url.1= file:${java.home}/lib/security/cifs.login.config where cifs.login.config is the file created in the previous 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 los valores del adaptador de autenticación, debe utilizarse la clase de autenticador adecuada: com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator |
| system.cifs.debug | Boolean | Propiedad utilizada para habilitar el registro detallado de la funcionalidad 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 para la 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 fichero 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 Directiva de seguridad local. Para ello, vaya a Panel de control → Herramientas administrativas → Directiva de seguridad local → Directivas locales → Opciones de seguridad:
Después, para conectarse a la máquina remota, vaya a Equipo → Conectar a unidad de red:
- Unidad: cualquier letra disponible
- Carpeta: \\server_name\repository
- Conectar con otras credenciales (marque esta opción si el nombre de usuario y la contraseña de Windows son distintos de los del usuario de OpenKM).
A continuación, haga clic en el botón Finalizar.