Cápsulas de palabras

27 mayo, 2010

Preparando un servidor para ejecutar scripts por cron

Filed under: IT Admin — Etiquetas: , , , , — kyletgn @ 13:19

Lo primero que hay que hacer si usais formatos de fecha, y los quereis en otro formato distinto de POSIX, es fijar la variable LANG. Para ello lo más efectivo que he encontrado es hacer lo siguiente tras hacer login interactuando con el servidor:

sudo -s
(Aquí toca introducir el password del usuario sudoer)
echo LANG=es_ES.UTF-8 >> /etc/environment

Con estos comandos, forzamos que el daemon cron use el idioma especificado. Aparte de eso, si los scripts que ejecutáis estan programados en bash, aseguraros de poner la variable de entorno SHELL=/bin/bash al hacer crontab -e, ya que por defecto crontab ejecuta los scripts mediante /bin/sh

21 abril, 2010

Comandos útiles Linux de carpetas y particiones(I)

Filed under: IT Admin — Etiquetas: , , , , , — kyletgn @ 08:44

df -h -> visualiza el uso de las particiones con el tamaño en formato legible

linadmin@backup:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9,5G  1,6G  7,5G  18% /
varrun                250M  220K  250M   1% /var/run
varlock               250M     0  250M   0% /var/lock
udev                  250M   52K  250M   1% /dev
devshm                250M     0  250M   0% /dev/shm
/dev/sdb1             298G   72G  211G  26% /export/backup

ls -lht -> visualiza los archivos de una carpeta ordenados por fecha y con el tamaño en formato legible

linadmin@backup:~$ ls -lht /export/backup/
total 72G
-rwxr--r-- 1 usuario grupo 1,4K 2010-04-20 14:17 Changer.ext
-rwxr--r-- 1 usuario grupo 3,4G 2010-04-20 14:01 FILE176.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:53 FILE175.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:49 FILE158.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:45 FILE162.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:42 FILE173.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:39 FILE157.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:36 FILE156.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:34 FILE197.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 13:31 FILE153.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:55 FILE154.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:49 FILE155.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:46 FILE161.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:42 FILE160.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:40 FILE174.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:37 FILE159.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:35 FILE179.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-20 10:32 FILE178.ext
-rwxr--r-- 1 usuario grupo 4,1G 2010-04-19 13:56 FILE177.ext
-rwxr--r-- 1 usuario grupo 2,0K 2010-03-22 13:16 Folder.ext

9 marzo, 2010

Aviso a navegantes: Alta latencia en Cisco Catalyst Policy Based Routing

Filed under: IT Admin — Etiquetas: , , , , , , — kyletgn @ 12:29

Escribo esta entrada para quien se encuentre con el mismo problema que yo (alta latencia) al aplicar Policy Routing en una interface Vlan con un elevado volumen de tráfico.

Si al realizar el comando siguiente obtenéis una salida de este estilo (con un alto porcentaje de uso del proceso IP Input):

show proc cpu sort | ex 0.00
CPU utilization for five seconds: 98%/24%; one minute: 99%; five minutes: 96%
 PID Runtime(ms)   Invoked      uSecs   5Sec   1Min   5Min TTY Process
 185   8665377081146152293        756 48.24% 46.90% 45.37%   0 IP Input
  75    820122231348788080         60  7.82%  8.85%  8.36%   0 HLFM address lea
 129    276128701314811052         21  4.47%  4.65%  4.34%   0 Hulc LED Process
 191   118257767 974640196        121  3.67%  3.54%  3.37%   0 Spanning Tree
  61    311867012426918732          0  1.27%  1.13%  1.05%   0 Fifo Error Detec
   9   310459507 536738733        578  1.11%  1.11%  1.12%   0 ARP Input
   4    65113441   5566023      11698  0.63%  0.18%  0.13%   0 Check heaps
  58    493203911034348706         47  0.47%  0.56%  0.50%   0 RedEarth Tx Mana
  92     6019864 436220220         13  0.47%  0.37%  0.32%   0 hpm main process
  96    17156823  72239266        237  0.15%  0.36%  0.37%   0 hpm counter proc
  35      862265  45230037         19  0.15%  0.04%  0.01%   0 Per-Second Jobs
 137    19353796   9089592       2129  0.15%  0.13%  0.15%   0 HQM Stack Proces 

y teneis una configuración de VLAN o interface de nivel 3 similar a esta

interface VlanX
 description DESCRIPCION
 ip address a.b.c.d A.B.C.D
 no ip unreachables
 ip policy route-map enrutar_por_origen_VlanX

El policy based routing hace que todos los paquetes con origen en esa red en vez de usar el chip de routing eficiente que tienen vayan a parar a la CPU general a causa de las access-list o procesos de selección de tráfico usados en el route-map.

3 marzo, 2010

Añadir Linux a Active Directory y compartir carpetas

Filed under: IT Admin — Etiquetas: , , , , , — kyletgn @ 12:06

Muchas gracias al autor de este post http://www.esdebian.org/articulos/24000/unir-debian-dominio-active-directory por haber creado este gran tutorial que acto seguido voy a adaptar a la semántica de Ubuntu.

1.- Información con la que contamos

Contamos con los siguientes datos:

- Dominio: 			pruebas.local
- Nombre del Server AD: 	ad = ad.pruebas.local
- IP del Server AD: 		192.168.1.254
- Nombre del Cliente Linux: 	ubuntu
- Ip del Cliente Linux: 	192.168.1.20

NOTA: En los archivos de configuración utilizaremos estos datos por lo que usted deberá sustituirlos por los apropiados.

2.- Configurar parámetros de red

Antes de continuar asegúrese de que el equipo con Linux cuente con la siguiente configuración:

– IP del mismo rango que el Server Active Directory
– DNS utilizado por el Server Active Directory
– Debe responder el ping a ad.pruebas.local

3.- Instalar la paquetería necesaria

# sudo apt-get install samba smbclient winbind krb5-user krb5-config

4.- Resolver equipos de la red

Agregar la IP de nuestro equipo Linux y la del Server Active Directory a “/etc/hosts”:

192.168.1.20    ubuntu.pruebas.local    ubuntu
192.168.1.254   ad.pruebas.local      	ad

5.- Configurar el cliente kerberos

Para configurar el cliente kerberos agregamos/modificamos las siguientes lineas a “/etc/krb5.conf”:

[libdefaults]
default_realm = PRUEBAS.LOCAL
clockskew = 300

[realms]
PRUEBAS.LOCAL = {
kdc = 192.168.1.254
default_domain = pruebas.local
admin_server = 192.168.1.254
}
pruebas.local = {
kdc = 192.168.1.254
default_domain = pruebas.local
admin_server = 192.168.1.254
}
pruebas = {
kdc = 192.168.1.254
default_domain = pruebas
admin_server = 192.168.1.254
}

[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON

[domain_realm]
.pruebas = pruebas
.pruebas.local = PRUEBAS.LOCAL

[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}

6.- Crear tickets Kerberos

Para crear los tickets kerberos ejecutamos el siguiente comando:

# sudo kinit administrador@pruebas.local

Nos pedirá el password de la cuenta administrador del dominio. Puede utilizarse cualquier cuenta con permisos administrativos en el dominio.

7.- Configurar samba

Editamos “/etc/samba/smb.conf” quedando algo parecido a lo siguiente:

[global]
security = ADS
netbios name = ubuntu
realm = PRUEBAS.LOCAL
password server = ad.pruebas.local
workgroup = pruebas
log level = 1
syslog = 0
idmap uid = 10000-29999
idmap gid = 10000-29999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
server string = linux como cliente de AD
encrypt passwords = yes

##compartir el home del usuario solo para él cuando se encuentre en otro equipo de la red
[homes]
comment = Home Directories
valid users = %S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
##compartir una carpeta para todos los usuarios
[users]
comment = All users
path = /alguna/carpeta
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
##compartir carpeta solo para el usuario spruebas
[UnUsuario]
comment = prueba con usuario del dominio
inherit acls = Yes
path = /ruta/de/alguna/carpeta/
read only = No
available = Yes
browseable = Yes
valid users = pruebas+spruebas

8.- Reiniciamos samba:

# sudo testparm
# sudo /etc/init.d/samba restart

9.- Agregar Linux al dominio:

# sudo net ads join -S ad.pruebas.local  -U administrador

Nos deberá mostrar un mensaje como el siguiente:

Using short domain name -- pruebas
Joined 'UBUNTU' to realm 'PRUEBAS.LOCAL'

Si nos llega a mostrar un error como el siguiente:

Administrador's password:
[2007/08/25 16:58:33, 0] libsmb/cliconnect.c:cli_session_setup_spnego(785)
Kinit failed: Clock skew too great
Failed to join domain!

El problema puede ser que la hora del equipo con Linux no este configurada correctamente. Kerberos es muy estricto con la hora. Para solucionarlo, corregimos la hora manualmente o ejecutamos el siguiente comando:

# ntpdate pool.ntp.org

Después de hacer esto ya se debería de poder unir al dominio.

10.- Resolver nombres de usuarios y grupos de dominio

Editar “/etc/nsswitch.conf” y modificar las siguientes lineas dejándolas así:

passwd:         files winbind o bien compat winbind
group:          files winbind o bien compat winbind
shadow:         files winbind o bien compat winbind
hosts:          files dns winbind

Gracias a las lineas anteriores los usuarios y grupos del dominio pueden ser resueltos.

11.- Reiniciamos winbind:

# sudo /etc/init.d/winbind restart

12.0- Hacer tests para ver si todo salio bien

12.1.- Verificar la integración del dominio:

– “sudo net rpc testjoin” muestra si esta correctamente integrada al dominio:

Join to 'pruebas' is OK

– “sudo net ads info” muestra información del dominio:

LDAP server: 192.168.1.254
LDAP server name: ad.pruebas.local
Realm: PRUEBAS.LOCAL
Bind Path: dc=pruebas,dc=LOCAL
LDAP port: 389
Server time: dom, 26 ago 2007 14:57:04 MDT
KDC server: 192.168.1.254
Server time offset: 11

– “sudo net rpc info -U Usuario_de_dominio” muestra el dominio al que pertenece, numero de usuarios, grupos, etc:

Domain Name: pruebas
Domain SID: x-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx
Sequence number: xx
Num users: xx
Num domain groups: xx
Num local groups: xx

12.2.- Verificar que winbind este funcionando:

- "sudo wbinfo -u" lista usuarios del dominio.
- "sudo wbinfo -g" lista grupos del dominio.
- "sudo getent passwd" muestra usuarios locales y del dominio.
- "sudo getent group" muestra grupos locales y del dominio.
- "sudo -U usuario-de-dominio -s" nos convertimos en usuario-de-dominio.

Para este último comando no hace falta poner ningun prefijo ni sufijo de dominio, tan solo el alias de usuario
Si todo lo anterior funciona vamos por buen camino.

13.- Configurar la autenticación

Para configurar el acceso a usuarios del dominio a nuestro Linux mediante el entorno gráfico hay que configurar pam. Para ello editamos los siguientes archivos y agregamos/modificamos las siguientes lineas:

/etc/pam.d/common-account
account sufficient      pam_winbind.so
account required        pam_unix.so try_first_pass
/etc/pam.d/common-auth
auth    sufficient      pam_winbind.so
auth    required        pam_unix.so nullok_secure try_first_pass
/etc/pam.d/common-password
password   sufficient   pam_winbind.so
password   required   	pam_unix.so nullok obscure min=4 max=8 md5 try_first_pass
/etc/pam.d/common-session
session required 	pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient      pam_winbind.so
session required        pam_unix.so try_first_pass

El modulo “pam_winbind.so” le indica a pam que los usuarios y grupos los obtenga mediante winbind. El modulo “pam_mkhomedir.so” nos crea el directorio home del usuario en caso de no existir.

14.- Creamos el directorio “/home/PRUEBAS” (Nombre del dominio en MAYÚSCULA) que es donde tendrán sus home los usuarios:

# mkdir /home/PRUEBAS

15.- Usuarios de Active Directory administrando el servidor

Para realizar esto, yo he optado por crear un grupo en el dominio llamado LinuxAdmins donde añadir a quien deseemos que tenga permisos de administrador y añadir ese grupo al fichero /etc/sudoers

%LinuxAdmins ALL=(ALL) ALL

9 febrero, 2010

Error eth0 después de clonar con VMWare

Filed under: IT Admin — Etiquetas: , , , , — kyletgn @ 09:38

Tras clonar una imagen vmware me encontré con un problema, eth0 no se levantaba en la máquina  virtual Ubuntu.

Tras un rato de búsqueda en google encontré una solución que consistía en editar /etc/ftab para eliminar una dirección MAC generada incorrectamente. Entonces descubrí que Ubuntu a partir de Hardy Heron no tiene este fichero, así que investigando más profundamente el sistema de ficheros encontré una referencia a la dirección MAC referenciada en el fichero de configuración de vmware (que tiene extensión vmx) en /etc/udev/rules.d/70-persistent-net.rules. Nota: el fichero en cuestión en Debian se llama  /etc/udev/rules.d/z25_persistent-net.rules

Primer Método – borrar el fichero .rules

La manera más fácil de solucionar esto consiste en mover/eliminar el fichero de reglas

# Ubuntu
sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.old.1
#Debian
sudo mv /etc/udev/rules.d/z25_persistent-net.rules /etc/udev/rules.d/z25_persistent-net.rules.old.1

Segundo Método – editar el fichero .rules

La segunda forma es eliminar la línea en que el fichero menciona eth0 que contenga la dirección MAC incorrecta y reemplazar eth1 por eth0 en la siguiente línea. Tras hacer un /etc/init.d/networking start eth0 debería trabajar correctamente y la conectividad se vería restaurada.

El ejemplo extraído a continuación sale de una ubuntu 9.04

El antiguo /etc/udev/rules.d/70-persistent-net.rules tenía este contenido:

more /etc/udev/rules.d/70-persistent-net.rules.old.1
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:95:wx:yz", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:95:st:uv", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

El fichero editado tendría que quedar así:

more /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:95:st:uv", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Gracias a Stuart por esta buena guía.

http://muffinresearch.co.uk/archives/2008/07/13/vmware-siocsifaddr-no-such-device-eth0-after-cloning/

8 febrero, 2010

Usuarios del dominio puedan administrar el host con Likewise

Filed under: IT Admin — Etiquetas: , , , , , , — kyletgn @ 16:51

Para hacer eso solo hay que incluirlos en /etc/sudoers.

En caso de que solo se quiera añadir un usuario, se recomienda hacer

/opt/likewise/bin/lw-enum-users | grep "nombre_de_usuario"

sustituyendo en /etc/sudoers el prefijo NETBIOS del dominio por el prefijo dns: DOMINIO\nombre_de_usuario -> dominio.com\nombre_de_usuario

Para añadir un grupo, lo mejor es listar todos los grupos a través de comando

/opt/likewise/bin/lw-enum-groups | grep Name
Name:     DOMINIO\grupo1
Name:     DOMINIO\grupoN
Name:     BUILTIN\Administrators
Name:     BUILTIN\Users
Name:     BUILTIN\Guests
Name:     BUILTIN\Backup Operators
Name:     NOMBRE_DEL_SERVIDOR\Likewise Users

Para añadir un grupo del dominio como administrador tan solo hay que añadir (por ejemplo, con el grupo DOMINIO\grupo1) se ha de añadir %DOMINIO\grupo1 en el fichero /etc/sudoers. Yo no añadiría por ejemplo el grupo BUILTIN\Administrators y crearía un grupo Administradores_AD_Linux donde añadiría los usuarios del dominio que se desee puedan hacer sudo en el servidor.
Otra perspectiva para administrar un host linux sin crear un grupo en AD sería añadir los usuarios al grupo admin de cada servidor.

Y para terminar un consejo de buenas prácticas. Se haga el cambio que se haga, cread un /etc/group.orig o /etc/sudoers.orig con los siguientes comandos

sudo cp /etc/sudoers /etc/sudoers.orig
sudo cp /etc/group /etc/group.orig

Fuentes de información:
http://www.likewise.com/resources/documentation_library/manuals/open/likewise-open-guide.html#id2986577
http://www.likewise.com/resources/documentation_library/manuals/open/likewise-open-guide.html#id2983300
http://www.likewise.com/resources/documentation_library/manuals/open/likewise-open-guide.html#ConfigSudoers

4 febrero, 2010

Instalación de Likewise

Filed under: IT Admin — Etiquetas: , , , , , — kyletgn @ 08:27

Cuando empezé a curiosear con Likewise lo instalé desde los repositorios de la distro (Ubuntu en este caso) mediante el comando sudo apt-get install likewise-open, pero rápidamente, visitando la página oficial proyecto http://www.likewise.com me decidí a instalarlo utilizando los instaladores que habían en la web en la página http://www.likewise.com/community/index.php/download. Yo en concreto me descargué con un usuario sudoer el instalador en formato deb, adecuado tanto para Debian como para Ubuntu, con el comando

wget http://www.likewise.com/bits/summer09/7717/LikewiseIdentityServiceOpen-5.3.0.7717-linux-i386-deb-installer

Eso sí, si alguien decides seguir esta guía, en vez de copiar directamente esta dirección, sería bueno que compruebes la URL a través de la web de descargas anteriormente citada.

Web de Descargas de Likewise - Copiar dirección de enlace

Web de Descargas de Likewise - Copiar dirección de enlace

A continuación, di permisos de ejecución y ejecuté el archivo descargado mediante estos dos comandos:

chmod u+x LikewiseIdentityServiceOpen-5.3.0.7717-linux-i386-deb-installer
sudo ./LikewiseIdentityServiceOpen-5.3.0.7717-linux-i386-deb-installer
Introducir password del usuario sudoer:

A continuación contesté afirmativamente todas las preguntas que me fue haciendo el instalador hasta ver que el paquete se había instalado correctamente.

Una vez finalizada la instalación edité el archivo /etc/hosts e introduje las direcciones de los controladores de dominio que hay en el sistema de forma que el archivo quedó de la siguiente forma ejecuté el siguiente comando

127.0.0.1       localhost
127.0.1.1       hostname.dominio.com   hostname
a.b.c.d     nombrededc.dominio.com
a.b.c.e       nombredeotrodc.dominio.com
sudo /opt/likewise/bin/domainjoin-cli join dominio.com usuarioadministradordedominio@dominio.com
Ahora introducid el password del usuario administrador del dominio (normalmente es Administrator o Administrador).
Y a continuación os pedirá reiniciar el host para que podáis hacer login en el dominio.

En el lugar de dominio.com tenéis que ponerlo en dotación normal (no el nombre NETBios del dominio) y en lo que respecta a la lista de DCs, con que introduzcáis los datos del DC principal hay suficiente, pero siempre es mejor andarse con tiendo y asegurar el tiro poniendo en la lista todos los Domain Controllers que haya en el dominio.

Y si habéis seguido todos estos pasos en principio ya tenéis vuestro equipo dentro del dominio, en próximas entradas explicaré como optimizar el rendimiento de este paquete.

3 febrero, 2010

Likewise -> Integración Linux/Unix/Mac OS X en Active Directory

Filed under: IT Admin — Etiquetas: , , , , , , — kyletgn @ 14:39

Pues recientemente he estado jugueteando en el trabajo con un software realmente interesante para Admins. de sistemas en entornos híbridos.

Se llama Likewise y podeis informaros en http://www.likewise.com.

Más adelante postearé más detalles y como tengo la config hecha.

Blog de WordPress.com.