Uno de los servidores, o servicios mas importantes dentro de la empresa son los servidores de archivos, donde Windows no se destaca mucho, pero soluciones robustas como las SAN o los pequeños NAS dan una solución eficaz a las necesidades de cada una.

En esta ocasión implementaremos un servidor de archivos con Debían 7 usando las cuentas que se encuentren en el AD de Windows Server 2008.

Antes de irnos con el taller/actividad debemos de tener algunos paquetes necesarios para el correcto funcionamiento de nuestro servidor de archivos.

  • Winbind: Complemento Necesario de Samba para autenticar nuestro Debian contra Windows y obtener los grupos y usuarios de este.
  • Kerberos: Necesario para autenticar del Debian contra el Windows (Relación de Confianza).
  • SAMBA: Servidor de Archivos
  • ClamAV: Antivirus, necesario para verificar los archivos que se encuentran en nuestro servidor.

Después de saber que necesitamos, manos a la obra.

  1. Verificamos que nuestro sistema este actualizado.

    apt-get update && apt-get upgrade

  2. Instalamos los paquetes necesarios.

    apt-get install samba winbind gcc clamav clamav-testfiles  unzip krb5-user krb5-config ntpdate

Si les pide configuración del Kerberos, lo dejamos en blanco.

Configurando el Antivirus

1. Probamos el funcionamiento del Antivirus.

freshclam
clamscan /usr/share/clamav-testfiles/

Y si funciona tendremos un resultado como el siguiente:

/usr/share/clamav-testfiles/clam.exe.szdd: ClamAV-Test-File FOUND/usr/share/clamav-testfiles/clam_IScab_ext.exe: ClamAV-Test-File …

2. Editamos el archivo /etc/clamav/freshclam.conf para cambiar la cantidad de veces que verifica actualizaciones (De 24 lo pasamos a 1, quedando asi).

# Check for new database 24 times a day
Checks 1
DatabaseMirror db.local.clamav.net
DatabaseMirror database.clamav.net

3. Para que dicha configuración sea aplicada reiniciamos el servicio.

/etc/init.d/clamav-freshclam restart

Configurando SAMBA

1. Editamos el archivo de configuración del samba:

nano /etc/samba/smb.conf

Y debería de quedar como el siguiente.
IMPORTANTE: Recordar realizar un Backup del archivo antes de hacer cualquier modificación.

[global]
log file = /var/log/samba/log.%m
idmap gid = 10000-29999
force directory mode = 777 #Forzar a que todo directorio creado tenga estos permisos 
encrypt passwords = true
winbind use default domain = yes
realm = SUGEEK.CO #Este es el dominio de mi empresa
template shell = /bin/false #Los usuarios no tienen shell
netbios name = fileserver #Nombre del Servidor de archivos
locking = no
writeable = yes
server string = fileserver
idmap uid = 10000-29999
template homedir = /home/%D/%U
force create mode = 777
workgroup = SUGEEK #Grupo de Trabajo predeterminado del Dominio
os level = 20
security = ADS #Tipo de autenticacion
create mode = 777
preferred master = no
directory mode = 777
;log level = 1
;syslog = 0
;winbind separator = + #Separador del usuario y grupo  
;winbind enum users = yes #Listar Usuarios  
;winbind enum groups = yes #Listar Grupos  
;client use spnego = yes
;domain master = no #Indicar si soy el dominio principal   
vfs objects = recycle #Activando la papelera del servidor de archivos   
recycle: directory_mode = 0777 #Permisos de la papelera   
recycle: subdir_mode = 0777 #Permiso de los subdiretorios de la papelera   
recycle: versions = Yes #No remplazar archivos con el mismo nombre   
recycle: keeptree = Yes #Mantener el orden si una carpeta se elimina   
recycle: minsize = 512 #Tamaño en bytes del archivo mas pequeño   
recycle: maxsize = 524288 #Tamaño en bytes del archivo maximo de la papelera

[Compartida]
path = /Datos1/Compartida #Lugar donde esta la carpeta compartida
comment = Carpeta Compartida #Comentario
valid users = @gtecnologia,@gadmins,@grh #Grupos con permisos para ingresar
recycle: repository = /Datos1/Compartida/Papelera #Ubicación de la papelera 

Configurando el Kerberos

Editamos el archivo del kerberos.

nano /etc/krb5.conf

Quedando de esta manera. (Editamos los valores que estén en negrilla según sea nuestro caso).

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
encryption = true
krb4_convert = false
}
[libdefaults]
default_realm = SUGEEK.CO 
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = yes
default_tgs_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
default_tkt_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
preferred_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
[realms]
SUGEEK.CO = { 
kdc = Winserver2008.SUGEEK.CO 
admin_server = IPSERVER:749   
default_domain = SUGEEK.CO}
[domain_realm]
.example.com = SUGEEK.CO
example.com = SUGEEK.CO
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

Configurando Winbind

Este archivo toca crearlo dentro del directorio del samba:

nano /etc/samba/winbind.conf

Y debe de quedar de esta manera

[global]
security = ADS #Tipo de autenticación
password server = Winserver2008.SUGEEK.CO #Nombre completo del DC
realm = SUGEEK.CO #Nombre del Dominio
# handle logging
syslog only = Yes
log level = 0 winbind:2
syslog = 1max
log size = 1000
local master = no
hosts allow = 192.168.x.x/24 #Red
interfaces = br0 #Interfaz de conexion
bind interfaces only = yes
preferred master = no
dns proxy = no
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
workgroup = SUGEEK #Grupo de Trabajo
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = Yes
winbind separator = +unix
charset = UTF8
ntlm auth = Yes
min protocol = NT1
client NTLMv2 auth = Yes
lm announce = No

Otras Configuraciones

  1. Verificar que la IP este estática.
  2. Verificar que el reloj del fileserver este sincronizado con el DC.
  3. Verificar Nombre del Servidor que sea el que esta en los archivos de configuración.
  4. Verificar que el archivo /etc/hosts tenga la ip asociada al DC.
  5. Editamos el archivo /etc/nsswitch.conf para establecer el orden de consulta de las cuentas. Quedando de la siguiente manera.
    1. passwd:         files winbind ldap
      group:          files winbind ldap
      shadow:         files winbind ldap
      hosts:          files dns wins
      networks:       files dns
      protocols:      files
      services:       files
      ethers:         files
      rpc:            files
      netmasks: files
      netgroup: files
      publickey: files
      bootparams: files
      automount: files
      aliases: files
  6. Reiniciamos el servidor.
  7. Ingresar el Nuevo servidor al dominio.

    net ads join -S SUGEEK.CO -U Administrador

  8. Verificamos que tengamos los usuarios y grupos con los comandos wbinfo -u wbinfo -g , si se realizo todo bien, mostrara los usuarios y grupos del dominio, y ya podemos ingresar a la carpeta compartida con un usuario del grupo permitido.
  9. Como extra debemos de borrar los archivos mayores a 7 días de la papelera, para no llenar de basura el disco duro. Esto se hace en el crontab.

    * * * * * find /Datos1/Compartida/Papelera -mtime +7 -exec rm {} ;