Comandos para Administradores de Servidores Parte 1.

Hola a los TI que visitan este espacio, seguramente estás buscando ciertos comandos para facilitarte un poco la investigación del hardware de tu servidor ya que tu te encuentras en otro lugar y tu SITE en otro edificio. Primeramente van a logearse por ssh y posterior tenemos los siguientes comandos.

Cuando uno se dedica a la administración de servidores, es común que utilicemos muchos comandos e instrucciones, y mas común es que nos olvidemos de como funcionan o mejor dicho, de cual es el que necesitamos para determinada tarea.
Algunos comandos básicos y útiles para los administradores de sistemas Linux/Unix/BSD.

1. Sistema
(Hardware, Statistics, Users, Limits, Runlevels, root password, Compiel Kernel)

Running kernel and system information

# uname -a # Obtiene la version de kernel
# lsb_release -a # informacion completa de cualquier distribucion BSD
# cat /etc/SuSE-release # Obtener la version de SuSE
# cat /etc/version # Obtener la version de Slackware
# cat /etc/debian_version # Obtener la version de Debian

Utiliza /etc/DISTR-release con DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (solaris) y demas, tambien checa /etc/issue

# uptime # muestra el tiempo que ha estado encendido tu sistema
# hostname # Nombre del host
# hostname -i # Muestra la direccion IP del sistema. (Linux solamente)
# man hier # Descripcion de jeraquias del sistema de archivos
# last reboot # Muestra historial de reinicios del sistema

1.1 Informacion del Hardware
Hardware detectado por el kernel

# dmesg # Hardware detectado y mensajes de inicio
# lsdev # informacion del hardware installado
# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 # Lee el BIOS

Linux

# cat /proc/cpuinfo # o del CPU
# cat /proc/meminfo # Información de la memoria
# grep MemTotal /proc/meminfo # Despliega la memoria física
# watch -n1 ‘cat /proc/interrupts’ # Ver interrupciones en cambio continuo
# free -m # Memoria utilizada y libre (-m muestra en MB)
# cat /proc/devices # Dispositivos configurados
# lspci -tv # Muestra dispositivos PCI
# lsusb -tv # Muestra dispositivos USB
# lshal # Muestra una lista de todos los dispositivos con sus proiedades
# dmidecode # Muestra DMI/SMBIOS: información hw del BIOS

FreeBSD

# sysctl hw.model # Modelo del CPU
# sysctl hw # Devuelve bastante información del hardware
# sysctl vm # Use de la memoria
# dmesg | grep “real mem” # Hardware memory
# sysctl -a | grep mem # Kernel memory información y configuración
# sysctl dev # dispositivos configurados
# pciconf -l -cv # Muestra los dispositivos PCI
# usbdevs -v # Muestra los dispositivos USB
# atacontrol list # Muestra los dispositivos ATA
# camcontrol devlist -v # Muestra los dispositivos SCSI

 

1.2 Carga, estadísticas y mensajes
Los siguientes comandos son útiles para averiguar lo que está sucediendo en el sistema.

# top # despliega y actualiza los procesos del CPU
# mpstat 1 # despliega estadísticas relacionadas a procesadores
# vmstat 2 # estadísticas de memoria virtual
# iostat 2 # despliega estadísticas de E/S (intervalo de 2 seg)
# systat -vmstat 1 # BSD sumario de estadísticas del sistema (intervalos de 1 s)
# systat -tcp 1 # BSD conexiones tcp (intenta con -ip)
# systat -netstat 1 # BSD conecciónes de red activas
# systat -ifstat 1 # BSD trafico de red a través de las interfaces activas
# systat -iostat 1 # BSD rendimiento del Disco y del CPU
# tail -n 500 /var/log/messages # Últimos 500 mensajes del kernel/syslog
# tail /var/log/warn # Mensajes de advertencia del sistema, ver syslog.conf

1.3 Usuarios

# id # Muestra id de usuarios activos, grupo y login
# last # muestra los últimos logins al sistema
# who # Quién esta activo en el sistema
# groupadd admin # Agrega el grupo “admin” y el usuario colin (Linux/Solaris)
# useradd -c “Colin Barschel” -g admin -m colin
# usermod -a -G # Agregar usuario existente al grupo (Debian)
# groupmod -A # Agregar usuario existente al grupo (SuSE)
# userdel colin # Borrar usuario colin (Linux/Solaris)
# adduser joe # FreeBSD agrega usuario joe (interactivo)
# rmuser joe # FreeBSD borrar usuario joe (interactivo)
# pw groupadd admin # Usa pw on FreeBSD
# pw groupmod admin -m newmember # Agregar nuevo miembro al grupo
# pw useradd colin -c “Colin Barschel” -g admin -m -s /bin/tcsh
# pw userdel colin; pw groupdel admin

Los passwords son encriptados y almacenados en /etc/shadow para Linux y solaris, para FreeBSD en /etc/master.passwd Si master.passwd es modificado manualmente (borrando un password) , ejecuta # pwd_mkdb -p master.passwd para reconstruir la base de datos.

Para prevenir temporalmente el acceso al sistema (para todos los usuarios excepto root) utiliza nologin. Se desplegara el mensaje en nologin (puede no funfionar con ssh pre-shared keys).

# echo “Sorry no login now” > /etc/nologin # (Linux)
# echo “Sorry no login now” > /var/run/nologin # (FreeBSD)

1.4 Limites
Algunas aplicaciones requieren limites muy altos al abrir archivos y sockets (proxys, web servers, bases de datos), Los limites por defeto usualmente son muy bajos.

Linux
Para shell/script
Los limites del shell son gobernados por ulimit, el estado es checado con ulimit -a. Por ejemplo, para cambiar el límite de archivos abiertos de 1024 a 10240 ejecuta:

# ulimit -n 10240 # This is only valid within the shell

El commando ulimit puede ser utilizado en un script para cambiar los limites solo dentro del script.

Para usuarios/procesos
Usuarios activos y aplicaciones pueden ser configurados en /etc/security/limits.conf. Por ejemplo:

# cat /etc/security/limits.conf
* hard nproc 250 # Limit user processes
asterisk hard nofile 409600 # Limit application open files

Sistema
Los limites del kernel se establecen con sysctl. Los limites permanentes se establecen en /etc/sysctl.conf.

# sysctl -a # Ver todos los limites del sistema
# sysctl fs.file-max # Ver limite max. de archivos abiertos
# sysctl fs.file-max=102400 # Cambiar max. de archivos abiertos
# echo “1024 50000” > /proc/sys/net/ipv4/ip_local_port_range # rango de puerto
# cat /etc/sysctl.conf
fs.file-max=102400 # Entrada permanente en sysctl.conf
# cat /proc/sys/fs/file-nr # Cuantos descriptores de archivos hay en uso

FreeBSD
Para shell/script
Utilizar el comando limits en csh o tcsh o como en Linux, utilizar ulimit en sh o bash shell.

Para usuarios/procesos
Los limites por default al acceder están configurados en /etc/login.conf. Un valor ilimitado sigue siendo limitado por el valor máximo del sistema.

Sistema
Límites del kernel

# sysctl -a # Ver todos los limites del sistema
# sysctl kern.maxfiles=XXXX # número máximo de descriptores de archivos
kern.ipc.nmbclusters=32768 # Entrada permanente en /etc/sysctl.conf
kern.maxfiles=65536 # Valores típicos para Squid
kern.maxfilesperproc=32768
kern.ipc.somaxconn=8192 # Cola TCP. Mejor para apache/sendmail
# sysctl kern.openfiles # cuantos descriptores de archivos hay en uso
# sysctl kern.ipc.numopensockets # Cuantos sockets abiertos hay en uso
# sysctl -w net.inet.ip.portrange.last=50000 # Default es 1024-5000
# netstat -m # estadísticas del bufer de memoria de red

Para detalles, vea FreeBSD handbook Chapter 11

Solaris
Los valores siguientes en /etc/system, incrementarán el máximo de descriptores de archivo por procesos:

set rlim_fd_max = 4096 # Hard limit en descriptores de archivo para un solo proc
set rlim_fd_cur = 1024 # Soft limit en descriptores de archivo para un solo proc

1.5 Limites
Linux
Una vez que inicio el sistema, el kernel ejecuta init que a su vez llama a rc el cual carga todos los scripts pertenecientes a un runlevel. Los scripts son almacenados en /etc/init.d y ligados a /etc/rc.d/rcN.d donde N es el número de runlevel.
El runlevel por defecto esta configurado en /etc/inittab que usualmente es 3 o 5:

# grep default: /etc/inittab
id:3:initdefault:

El runlevel actual (ver lista siguiente) puede ser cambiado con init. Por ejemplo para pasar de runlevel 3 a 5:

# init 5 # Enters runlevel 5
0 Shutdown and halt
1 Single-User mode (also S)
2 Multi-user without network
3 Multi-user with network
5 Multi-user with X
6 Reboot

Utiliza chkconfig para configurar los programas que serán ejecutados al iniciar un runlevel.

# chkconfig –list # Lista todos los scripts init
# chkconfig –list sshd # Reporta el estado de sshd
# chkconfig sshd –level 35 on # Configura sshd para los niveles 3 y 5
# chkconfig sshd off # Deshabilita sshd para todos los runlevels

Debian y todas las distribuciones basadas en el, utilizan update-rc.d para administrar los scripts de runlevels. Por defecto se inicia en 2, 3, 4 y 5 y apagar en 0, 1 y 6.

# update-rc.d sshd defaults # Activa sshd con el runlevel por default
# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # Con argumentos específicos
# update-rc.d -f sshd remove # Dashabilita sshd para todos los runlevels
# shutdown -h now (or # poweroff)# Shutdown and halt the system

FreeBSD
El enfoque de arranque BSD es diferente del SysV, no existen los niveles de ejecución (runlevels). El estado final de inicio (single user, con o sin X) es configurado en /etc/ttys. Todos los scripts del Sistema Operativo (SO) se localizan en /etc/rc.d/ y en /usr/local/etc/rc.d/ para aplicaciones de terceros. La activación de los servicios es configurada en /etc/rc.conf y /etc/rc.conf.local. El comportamiento predeterminado está configurado en /etc/defaults/rc.conf. Los scripts responden al menos a start | stop | status.

# /etc/rc.d/sshd status
sshd is running as pid 552.
# shutdown now # Go into single-user mode
# exit # Go back to multi-user mode
# shutdown -p now # Shutdown and halt the system
# shutdown -r now # Reboot

El proceso init también se puede utilizar para llegar a uno de los siguientes estados nivel. Por ejemplo # init 6 para reiniciar.

0 Halt and turn the power off (signal USR2)
1 Go to single-user mode (signal TERM)
6 Reboot the machine (signal INT)
c Block further logins (signal TSTP)
q Rescan the ttys(5) file (signal HUP)

1.6 Reset al pasword de root
Linux método 1
En el boot loader (lilo o grub), entre la siguiente opción de inicio:

init=/bin/sh

El kernel montara la partición raiz e init iniciara el bourne shell en vez de rc y un runlevel. Utilice el comando passwd en el prompt del sistema paracambiar el password y después reinicie. Olvídese del modo single user (usuario unico) a menos que requiera cambiar el password.
Si después de iniciar, la partición raíz es montada como solo lectura, remontela con rw

# mount -o remount,rw /
# passwd # or delete the root password (/etc/shadow)
# sync; mount -o remount,ro / # sync before to remount read only
# reboot

FreeBSD método 1
En FreeBSD, iniciar en modo single user, remontar la partición root / como rw y utilice passwd. Usted puede seleccionar el modo de single user en el menú de inicio (opcion 4) el cual es desplegado por 10 segundos al iniciar. El modo single user debe darle un shell como root en la partición /

# mount -u /; mount -a # montara / rw
# passwd
# reboot

Linux, FreeBSD y Unix metodo 2
Otros Unix puede que no le permitan hacerlo con el simple truco de init. La solución es montar la partición raíz de algún otro sistema operativo (como un CD de rescate) y cambiar la contraseña en el disco.

Inicie con un live CD o CD de instalacion in modo rescate el cual le dará un shell.
Localice la partición raíz con fdisk p.e. fdisk /dev/sda
Montela y utilice chroot:

# mount -o rw /dev/ad4s3a /mnt
# chroot /mnt # chroot into /mnt
# passwd
# reboot

1.7 Módulos del kernel
Linux

# lsmod # Lista todos los módulos cargados en el kernel
# modprobe isdn # cargar un modulo (aquí isdn)
FreeBSD

# kldstat # Lista todos los módulos cargados en el kernel
# kldload crypto # Cargar un modulo (aquí crypto)

1.8 Compilar el kernel
Linux

# cd /usr/src/linux
# make mrproper # Limpia todo, incluyendo archivos de configuración
# make oldconfig # Reutilizar el viejo .config si existe
# make menuconfig # o xconfig (Qt) o gconfig (GTK)
# make # Crear una imagen del kernel
# make modules # Compilar módulos
# make modules_install # Instalar módulos
# make install # Instalar el kernel
# reboot

FreeBSD
Opcionalmente actualizar el árbol de código fuente (en /usr/src) con csup (a partir de FreeBSD 6.2 o posterior):

# csup

Se puede utilizar el siguiente supfile como ejemplo:

*default host=cvsup5.FreeBSD.org # www.freebsd.org/handbook/cvsup.html#CVSUP-MIRRORS
*default prefix=/usr
*default base=/var/db
*default release=cvs delete tag=RELENG_7
src-all

Para modificar y reconstruir el kernel, copie el archivo de configuración genérico en uno nuevo y editelo a sus necesidades (también puede editar el archivo GENERIC directamente). Para reiniciar la construción despues de una interrupción, agregue la opción NO_CLEAN=YES al comando make a fin de evitar se limpien los objetos ya construidos.

# cd /usr/src/sys/i386/conf/
# cp GENERIC MYKERNEL
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL

Para reconstruir el SO completamente:

# make buildworld # Construye el SO completo pero no el kernel
# make buildkernel # Utilice KERNCONF como en el caso anterior si procede
# make installkernel
# reboot
# mergemaster -p # Compara solo los archivos sabemos son escenciales
# make installworld
# mergemaster -i -U # Actualizacón de toda la configuración y otros archivos
# reboot

Para cambios pequeños en la fuente puede utilizar NO_CLEAN=yes a fin de evitar la reconstrucción de todo el árbol. Sin embargo, utilícelo con cuidado.

# make buildworld NO_CLEAN=yes # No borrar los objetos anteriores
# make buildkernel KERNCONF=MYKERNEL NO_CLEAN=yes

Hasta la próxima.

 

Fuente: UnixToolBox