Configurar CIFS
El objetivo de esta configuración es permitir ver OpenKM como una unidad remota usando el protocolo CIFS. A continuación se describen las dos formas de configurarlo:
- Autenticación usando la base de datos
- Autenticación usando Active Directory
Autenticación por base de datos
Sección titulada «Autenticación por base de datos»Este es el caso más simple. Debe configurar estas partes:
- Servidor OpenKM
- Configuración de OpenKM
- Cliente Windows
Servidor OpenKM
Sección titulada «Servidor OpenKM»Si el sistema no puede iniciarse con permisos de root, los puertos mencionados a continuación deben estar por encima de 1024 (los puertos del sistema por defecto son 138, 137, 139 y 445), así que es necesario redirigir los puertos originales a otros nuevos. Para ello, ejecute los siguientes comandos como root o usando 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 usada por CIFS para autenticarse contra OpenKM. | com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator Dependiendo de los valores del adaptador de autenticación, debe usarse la clase autenticadora adecuada: com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator |
| system.cifs.debug | Boolean | Propiedad usada 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 | Hostname donde está instalado OpenKM. | 0.0.0.0 |
| system.cifs.port.datagram | Integer | Número de puerto usado por los datagramas. | Por defecto 1138 |
| system.cifs.port.name | Integer | Número de puerto usado por CIFS. | Por defecto 1137 |
| system.cifs.port.session | Integer | Número de puerto usado por la sesión. | Por defecto 1139 |
| system.cifs.port.smb | Integer | Número de puerto usado 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 de unidad disponible
- Carpeta: \\server_ip\repository O \\server_name\repository
- Conectar usando credenciales diferentes (marque esto si el usuario y contraseña de Windows son distintos de los del usuario de OpenKM).
Después haga clic en el botón Finalizar.
Autenticación por Active Directory
Sección titulada «Autenticación por Active Directory»En este caso, se asume que el sistema ya estaba previamente integrado con Active Directory. Será necesario configurar:
- 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, usará para validar las credenciales de la solicitud CIFS entrante. Para ello, siga estos pasos:
-
Cree un objeto de equipo que será el correspondiente al servidor OpenKM.
-
Una vez creado, modifique sus propiedades habilitando la propiedad ‘De confianza para delegación’.
- De confianza para delegación. Este paso es importante porque, si no se habilita, no será posible negociar entre cliente y servidor.
-
El servidor debe autenticarse contra Active Directory antes de validar los tickets enviados por el cliente. Esta autenticación se realiza usando un fichero (keytab) que asocia el servicio (servidor de aplicaciones) con un usuario de dominio. Este usuario debe usarse única y exclusivamente para este propósito, porque si se usa este usuario para iniciar sesión en otro equipo, no podrá usarse para iniciar sesión en el servidor de aplicaciones. Una vez creado el usuario, deben modificarse sus propiedades para impedir cambios de contraseña y deshabilitar la caducidad de la cuenta. Finalmente, seleccione la pestaña Cuenta y habilite No requerir autenticación previa de Kerberos en la secció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 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. Lo usa la aplicación web como proxy de autenticación para 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: Nombre completo del servidor Tomcat y su dominio.
2. servercifs@EXAMAPLE.COM : usuario creado previamente.
3. cifs.keytab: fichero donde se almacena la clave privada exportada para uso por el servidor Tomcat.
- Es importante destacar:
-
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. Esto se usa con un usuario de dominio y su keytab, que después se usa como credencial del servicio:
C:\> setspn -A cifs/tomcat.example.org servercifsC:\> setspn -A cifs/tomcat.example.org servercifs@EXAMPLE.COM
Servidor OpenKM en configuración con Active Directory
Sección titulada «Servidor OpenKM en configuración con Active Directory»Deben seguirse los siguientes pasos:
Introducir el servidor en el dominio
Sección titulada «Introducir el servidor en el dominio»Lo primero 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
Algo 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 estar por encima de 1000 (los puertos del sistema por defecto son 138, 137, 139, 445), así que es necesario redirigir los puertos originales a otros nuevos. Para ello, ejecute los siguientes comandos como root o usando 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 configurarse correctamente para validar los tickets de forma adecuada. En 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 login 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 corresponde a la propiedad system.cifs.ldap.login.entry
- La propiedad principal corresponde a system.cifs.ldap.principal
- La propiedad keytab es la ubicación segura donde se ha copiado el fichero .keytab creado previamente, que contiene la clave para acceder a Active Directory.
Habilitar la configuración de login de Java.
Sección titulada «Habilitar la configuración de login de Java.»Para habilitar el login de Java, es necesario cambiar la configuración del fichero de seguridad de Java, que suele estar 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 configuración con Active Directory
Sección titulada «Configuración de OpenKM en configuración con 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 usada por CIFS para autenticarse contra OpenKM | com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator Dependiendo de los valores del adaptador de autenticación, debe usarse la clase autenticadora adecuada: com.openkm.integration.cifs.authenticator.DatabaseCIFSAuthenticator com.openkm.integration.cifs.authenticator.LdapCIFSAuthenticator |
| system.cifs.debug | Boolean | Propiedad usada 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 | Hostname donde está instalado OpenKM | 0.0.0.0 |
| system.cifs.ldap.kdc | String | Nombre del servidor 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 Kerberos dentro del fichero de configuraciones | JLANServerCIFS |
| system.cifs.port.datagram | Integer | Número de puerto usado por los datagramas | Por defecto 1138 |
| system.cifs.port.name | Integer | Número de puerto usado por CIFS | Por defecto 1137 |
| system.cifs.port.session | Integer | Número de puerto usado para las sesiones | Por defecto 1139 |
| system.cifs.port.smb | Integer | Número de puerto usado 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 configuración con Active Directory
Sección titulada «Cliente Windows en configuración con 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 de unidad disponible
- Carpeta: \\server_name\repository
- Conectar usando credenciales diferentes (marque esto si el usuario y contraseña de Windows son distintos de los del usuario de OpenKM).
Después haga clic en el botón Finalizar.