Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas
Mostrando entradas con la etiqueta Administración. Mostrar todas las entradas

16 nov 2011

Apache mod_status


El módulo de estado permite a un administrador averiguar qué tan bien está funcionando su servidor. Una página HTML presenta las estadísticas del servidor actual en una forma fácilmente legible. Se puede hacer que esta página se actualice automáticamente. Los datos recogidos son los siguientes:


  • El número solicitudes (request)
  • El número de procesos ociosos (idle)
  • La situación de cada proceso, el número de solicitudes que se han realizado y la cantidad total de bytes(*)
  • El total de accesos y la cantidad de bytes servidos (*)
  • El tiempo de inició del servidor y el tiempo que ha estado en funcionamiento
  • Promedios, dando el número de solicitudes por segundo, el número de bytes por segundo y el número promedio de bytes por solicitud (*)
  • El porcentaje actual de uso del CPU y el total por Apache (*)
  • Los hosts actuales y peticiones en trámite (*)
Las líneas marcadas con "(*)" sólo están disponibles si ExtendedStatus está activado. Verifique que la línea ExtendedStatus del archivo httpd.conf esté descomentada.

Habilitar la compatibilidad de Estado

Para habilitar los informes de estado sólo para los navegadores del dominio foo.com añadir este código a su httpd.conf.

<Location /server-status>
   SetHandler server-status

   Order Deny,Allow 
   Deny from all
   Allow from .foo.com
</Location>

Ahora puede acceder a las estadísticas del servidor mediante el uso de un navegador web para acceder a la página http://your.server.name/server-status

Actualizaciones automáticas

Usted puede hacer que la página de estado se actualice automáticamente si usted tiene un navegador que soporte "refresh". Acceder a la página http://your.server.name/server-status?refresh=N para actualizar la página cada N segundos.

Nota: Este ajuste se aplica a todo el servidor, y no puede ser activada o desactivada por host virtual. El uso de esta caracteristica de apache puede ralentizar el servidor.

22 sept 2011

Linux - Ejecutar comandos remotos con ssh


El comando ssh es un programa increíble. Se puede usar para abrir sesiones entre servidores o bien se puede usar para ejecutar comandos en un sistema remoto.

Un ejemplo sencillo sería para conocer el uso del disco duro de un servidor:

[angel@angelcm ~]$ ssh user@server ' /bin/df -h'
user@server's password: 
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_root-lv_root
                      2.0G  410M  1.5G  22% /
/dev/mapper/vg_root-lv_tmp
                      2.0G   70M  1.8G   4% /tmp
/dev/mapper/vg_root-lv_var
                      2.0G  378M  1.5G  21% /var
/dev/mapper/vg_root-lv_data01
                      6.7G  982M  5.4G  16% /data01
/dev/mapper/vg_data-lv_data02
                      247G   15G  219G   7% /data02
/dev/mapper/vg_root-lv_usr
                      3.0G  1.5G  1.3G  55% /usr
/dev/sda1             122M   13M  103M  11% /boot
tmpfs                 3.9G     0  3.9G   0% /dev/shm
[angel@angelcm ~]$ 

Esto es muy bueno, pero se vuelve más útil cuando "automatizamos" mediante el intercambio de llaves SSH, esto lo pueden aprender en otro post:

Mientras tanto, podemos ejecutar algunos otros comandos. Por ejemplo, para contar el número de procesos de apache que están corriendo en el servidor web. Todo lo que necesitamos hacer es escribir el comando entre comillas. El siguiente comando se conecta a un servidor web, luego lista todos los procesos ps -ef, después busca y cuenta las coincidencias con apache grep -c apach[e] :

[angel@angelcm ~]$ ssh user@server 'ps -ef | grep -c apach[e]'
34
[angel@angelcm ~]$

El resultado es 34 procesos de apache corriendo en el servidor.

También podemos mostrar algunas estádisticas sobre el uso de CPU del servidor:

[angel@angelcm ~]$ ssh user@server ' top -b -n 1 | head -n 8'
top - 10:15:40 up 117 days,  6:24,  2 users,  load average: 1.43, 1.52, 1.64
Tasks: 165 total,   1 running, 164 sleeping,   0 stopped,   0 zombie
Cpu(s): 10.2%us,  1.5%sy,  0.2%ni, 87.1%id,  0.1%wa,  0.3%hi,  0.7%si,  0.0%st
Mem:  16436872k total, 13376292k used,  3060580k free,   943720k buffers
Swap:  4194296k total,        0k used,  4194296k free,  5637000k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
16619 apache    15   0  350m  16m 5308 S 30.8  0.1   0:33.63 httpd              
[angel@angelcm ~]$

Para ver quien está loggeado en el servidor:

[angel@angelcm ~]$ ssh user@server 'who'
juanito   pts/0        2011-09-20 16:50 (10.177.65.41)
pepito    pts/1        2011-09-21 10:13 (10.177.65.209)
[angel@angelcm ~]$

Nuevamente, les recomiendo la lectura de los posts:

Listo, nos vemos en la siguiente entrada.

31 ago 2011

Eliminar / Borrar una cuenta de usuario en Linux

Como administradores de GNU/Linux, la tarea de eliminar una cuenta de usuario es muy importante. Es tan importante que merece la pena escribir un protocolo para ello. Por seguridad, por administración, por lo que sea hay que tomar en serio ésta tarea.

Para esto existe el comando 'userdel', el cual tiene que ser ejecutado como root. Por ejemplo:

[root@server ~]# /usr/sbin/userdel usuario

Un ejemplo ampliado de esto sería: borrar la cuenta de usuario 'angel' y su home asociado (opción -r):

[root@server ~]# /usr/sbin/userdel -r angel

El comando anterior borrará la cuenta de usuario, su home y los mensajes de correo existentes. Si existen archivos creados en otros directorios estos tendrán que ser buscados y borrados manualmente.

Archivo /etc/login.defs y /etc/deluser.conf

Los valores, por default, del comando 'userdel' son tomados del archivo /etc/login.defs en Red Hat, Fedora, CEntOS:

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail

# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN     500
UID_MAX   60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN     500
GID_MAX   60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.
MD5_CRYPT_ENAB yes

Y /etc/deluser.conf en Debian y Ubuntu Linux:

# /etc/deluser.conf: `deluser' configuration.

# Remove home directory and mail spool when user is removed
REMOVE_HOME = 0

# Remove all files on the system owned by the user to be removed
REMOVE_ALL_FILES = 0

# Backup files before removing them. This options has only an effect if
# REMOVE_HOME or REMOVE_ALL_FILES is set.
BACKUP = 0

# target directory for the backup file
BACKUP_TO = "."

# delete a group even there are still users in this group
ONLY_IF_EMPTY = 0

# exclude these filesystem types when searching for files of a user to backup
EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs)"

Procedimiento:

A continuación les presento el procedimiento recomendado para borrar una cuenta de usuario. Primero hay que bloquear la cuenta:

[root@server ~]# /usr/bin/passwd -l angel

De ser necesario, respaldar los archivos del usuario:

[root@server ~]# tar -zcvf /backup/angel.tar.gz /home/angel/

'Matar' los procesos que pertenecen al usuario:

[root@server ~]# ps -fp $(pgrep -u angel)
[root@server ~]# killall -KILL -u angel

Borrar la cuenta del usuario:

[root@server ~]# /usr/sbin/userdel -r angel

Borrar las tareas at:

[root@server ~]# # find /var/spool/at/ -name "[^.]*" -type f -user angel -delete

Borrar las tareas de cron:

[root@server ~]# crontab -r -u angel

Borrar los trabajos de impresión:

[root@server ~]# lprm angel

Buscar todos los archivos propiedad del usuario:

[root@server ~]# find / -user angel -print

Por último, podemos buscar todos los archivos propiedad del usuario y cambiarlos de propietario:

[root@server ~]# find / -user angel -exec chown usuario:grupo {} \;

Listo, nos vemos en la siguiente entrada.