Mostrando las entradas con la etiqueta solaris. Mostrar todas las entradas
Mostrando las entradas con la etiqueta solaris. Mostrar todas las entradas

domingo, 28 de agosto de 2016

Crear una conexión sin passwords entre servidores utilizando ssh/sftp

Saludos y bueno y que es sftp (secure file transfer protocol)
es un protocolo para envio de archivos basado en ssh (secure shell), y bueno y para que demonios sirve?, es en realidad para transferir archivos entre servidores o bien computadoras usando un método seguro donde la información va encriptada por ssh.

Hasta aquí todo bien y así debe ser, que pasa cuando tenemos uno o más servidores y queremos transferir un archivo usando ssh ?

Bueno aquí va la receta de la casa para utilizar ssh (lo que yo uso para realizar conexiones entre servidores)

  1. server origen y/o usuario origen (si, puede ser un windows aunque no entraré mucho en el tema y además está samba ne vez de usar ssh para transferir)
  2. server destino y/o path destino
  3. el usuario origen y el usuario destino
  4. se puede usar un gestor de transferencias como filezilla o winscp o bien en este caso usaremos la poderosa terminal :-)
Ahora bien sftp tiene varios procesos que puede hacer, 2 de los más sencillos de entender y usuales es PUT y GET.
  • Put se encarga de "empujar" o subir una archivo o path que le indiquemos 
  • Get se encarga de "traer"o bajar del servidor un determinado archivo o bien path.
Requisitos de linux a linux o linux a unix like
Requisitos como ya mencione algunos:
1.- tener el usuario origen (el que va a conectarse hacia el otro servidor)
2.- tener el usuario destino
3.- contar con el password del usuario destino * este es opcional  nos facilita mucho las cosas

Ejecución:
1.- con el usuario origen el que queremos que envíe el archivo) ejecutamos el siguiente comando ( esto va a generar la llave de tipo rsa, recuerda que hay varios tipos de algoritmos; rsa suele ser el más común no por eso menos seguro)

ssh-keygen o ssh-keygen -t rsa

El comando anterior creará las llaves de autenticación en su home directory del usuario en:


~/.ssh/  (donde el tilde significa /home/miusuario)

NOTA:en este paso puede que te solicite crear un passphrase
para que sea una conexión totalmente sin password solo tecleamos enter sin poner nada en este campo, a menos que quieras especificar uno en cuyo caso recomiendo guardes bien esta contraseña ya que te será solicitada cada vez que te quieras conectar.

2.-el siguiente paso es copiar la llave publica al usuario destino en el servidor destino para eso tenemos un par de formas para realizarlo podemos utilizar el comando ssh-copy-id o enviamos/copiamos la llave pública del usuario origen al usuario receptor o destino en el server destino con: 

ssh-copy-id -i ~/.ssh/id_rsa.pub server_destino


o bien hay que entrar al servidor destino/remoto siendo el usuario origen (el que compartió la llave)

ssh usuariodestino@serverdestino o sftp usuariodestino@serverdestino

4.- Colocar la llave pública en el otro server/usuario en el archivo authorized_keys con el siguiente formato:
ssh-rsa llave user@(ip|hostname)
yo te recomiendo realizarlo con: 
cat llave_origen.pub >> authorized_keys
el archivo authorized_keys se ubicara en ~/.ssh/


Los errores más comunes :
-Revisar que el usuario destino y origen no estén bloqueados
-Si este procedimiento de arriba no funciona, lo mejor es buscar el sshd_config del servidor
de SSH y añadir las siguientes líneas, o descomentar las:

RSAAuthentication yes       (usado para checar el knownhost)
PubkeyAuthentication yes

- Revisar que el usuario origen y destino no estén bloqueados con passwd -s (solaris) passwd -S (linux)

-Revisar el tamaño de las llaves que correspondan con las proporcionadas ya que al copiar y pegar puede ser 
que se haya omitido algún caracter, vigilar el mismo numero de lineas la llave solo mide el equivalente a una sola línea de ahí que recomiendo que se utilice el "cat" para concatenar correctamente la llave al final del archivo authorized_keys en una sola línea.

Revisar
------------------------Permisos en los directorios y archivos //muy importante el home
example
user: juanito
HOME:
drwxr------  4 juanito staff 512 jun 5 09:58 /home/501924789

drwx------ 2 juanito staff 512 jun 5 09:58 /home/juanito/.ssh

-rw-r--r-- 2 juanito staff 512 jun 5 09:58 /home/juanito/.ssh/authorized_keys


En algunas ocasiones en linux pueden interferir los contextos de SElinux para esos casos hay que revisar dichos permisos

para revisar los contextos se utiliza:
ls -laZ
el siguiente ejemplo es ERRONEO por tener en el contexto de SELinux como home_ROOT_T cuando deberia tener ssh_home_t
rw-------. juanito staff unconfined_u:object_r:home_root_t:s0 authorized_keys

para cambiar o restaurar los permisos se ejecuta el siguiente comando
restorecon -r -vv ~juanito/.ssh/ donde juanito... es el home del usuario

los permisos deberían de mostrar una forma como la enlistada más abajo  para todos los archivos

[root@server.chipocludo.ssh]# ls -laZ ~juanito/.ssh/
drwx------. juanito staff unconfined_u:object_r:ssh_home_t:s0 .
drwx------. juanito staff system_u:object_r:home_root_t:s0 ..
-rw-------. juanito staff unconfined_u:object_r:ssh_home_t:s0 authorized_keys
-rw-r--r--. juanito staff unconfined_u:object_r:ssh_home_t:s0 known_hosts


Configurar 2 o más llaves simultáneas con un mismo usuario 

Aquí podremos configurar 2 llaves distintas para el mismo usuario es decir nuestro usuario origen va a poder utilizar llaves distintas para autenticarse según el destino que sea necesario o el usuario destino al crear un archivo llamado config en la carpeta ~/.ssh/
también nos da la posibilidad de utilizar llaves con diferentes cifrados es decir tener una con 1024 y otra cifrada con 2048 u otra más pero con cifrado DSA.

1.-configura que una llave este funcional es decir los pasos de arriba para RSA
2.- ya con la llave funcionando puedes moverla a una carpeta, hay que vigilar muy bien los permisos
3.- se crea la segunda llave con los mismos pasos y a esta le vamos a poner otro nombre de archivo ejemplo: id_rsa2_t
   -- nota es posible que sea necesario ejecutar :

      ssh-add id_rsa e ingresar el passphrase que utilizaste si es que tenias alguno.
4.- de igual forma se mueve a otra carpeta la segunda llave para mantener ordenado/separadas las llaves generadas

5.- creamos  el archivo config, de igual manera revisar los permisos ver el ejemplo más abajo:
touch config
6.- y agregamos la siguientes líneas dentro de config con nuestro editor de texto preferido
-bash-4.1$ vim config
Host server.chipocludo // esta linea indica el nombre del host
        User  test_ssh // el usuario al que nos vamos a conectar
        Hostname server.chipocludo // el hostname destino
        PreferredAuthentications publickey // el tipo de autenticación
        IdentityFile ~juanito/.ssh/primerallave/id_rsa //la linea mas importante aquí se indica la ruta del archivo con el que nos vamos a identificar. 

Host server.chipocludo
        User  test_ssh2
        Hostname server.chipocludo
        PreferredAuthentications publickey
        IdentityFile ~juanito/.ssh/segundallave/id_rsa2_t //la linea mas importante aquí se indica la ruta del archivo con el que nos vamos a identificar pero para el servidor 2 o el usuario dos

vamos a ver como quedo la primera llave  en la carpeta 1
-bash-4.1$ cd primerallave
-bash-4.1$ ls -ltr   -------------> en esta parte ojo con los permisos y el selinux en linux
total 8
-rw-------. 1 juanito staff  407 Feb 26 14:19 id_rsa.pub
-rw-------. 1 juanito staff  679 Feb 26 14:19 id_rsa
-bash-4.1$ cd ..
-bash-4.1$ pwd // mas o menos asi queda tu carpeta
/home/juanito/.ssh
-bash-4.1$ ls -ltr
total 20
drwxr-xr-x. 2 juanito staff 4096 Feb 26 14:27 segundallave
drwxr-xr-x. 2 juanito staff 4096 Feb 26 14:27 primerallave
-rwxr-xr-x. 1 juanito staff  432 Feb 26 14:46 known_hosts
-rw-r--r--. 1 juanito staff  406 Feb 26 15:12 authorized_keys
-rwxr-xr-x. 1 juanito staff  392 Feb 26 15:28 config ----> este es el archivo


otro ejemplo utilizando el config file
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/git/id_rsa
Host fedoraproject.org
Hostname fedoraproject.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/fedoraproject/id_rsa
Host fedorapeople.org
Hostname fedorapeople.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/fedoraproject/id_rsa

ejemplo: 3 
Host *.dominio.chipocludo.com
        PreferredAuthentications publickey
        IdentityFile ~juanito/.ssh/basekey/id_rsa
Host sufruta.mm.com
        User aldo
        Hostname sufruta.mm.com

        PreferredAuthentications publickey

referencia: http://www.robotgoblin.co.uk/blog/2012/07/24/managing-multiple-ssh-keys/








lunes, 29 de diciembre de 2014

Activar demonio rstatd en Red Hat 6.5 y Solaris 10 (link para configurar NFS)

Saludos
hoy les traigo un sencillo tutorial que consiste en activar el demonio rstat o rstatd si asi lo ubican, es un servicio que sirve para propocionar estadisticas del servidor de forma remota utilizando el protocolo rpc (rusers,rsync etc...)

el demonio nos puede ser requerido al momento de activar monitoreos o configurar NFS.
depende de tener instalado el paquete "rusers" el cual incluye rstatd.

el programa lo podemos descargar de cualquier pagina o bien utilizando los repositorios de fedora, red hat o centos.

1.- Instalar el paquete : yum install rusers  o rpm -ivh rusers.x86_64 (o el paquete de su arquitectura)
2.- configurar los run levels:
      chkconfig rstatd on
      chkconfig rusersd on
3.- validar los run levels : chkconfig —list | grep rstat
4.- iniciar los servicios
      service rstatd start
      service rusersd start
5.- validamos que el servicio esta en ejecución :
       service rstatd status
       rup $HOSTNAME   
 //este ultimo comando nos va a mostrar estadisticas de la maquina como si fuera uptime
       rpcinfo -p

//el comando rpcinfo nos va a mostrar los puertos que esta utilizando
hay que asegurarnos que en los archivos de /etc/hosts.allow este habillitado (rpc.rstatd: ALL o bien que no exista alguna linea que lo bloque) o bien que no esten bloqueados los hosts a donde nos queremos conectar en el archivo /etc/hosts.deny.
esto ultimo indispensable ya me paso jejeje que alguien dejo bloqueado todos los hosts (ALL:ALL)
y el demonio no arranca.

Para Solaris
 Me parece el paquete ya viene por default instalado

asi que solo veremos como habilitarlo

1.- svcadm enable rpc.bind (bind) // tiene que estar habilitado rpcbind sino de otra manera no funciona rstatd
2.- svcadm enable rstatd
3.- validamos ya deberia decir online :
svcs -x rstatd 
svcs -l rstatd
rpcinfo -p 
//el comando rpcinfo nos va a mostrar los puertos que esta utilizando

por ultimo Honor a quien honor merece les dejo algunas fuentes que me fueron de ayuda
http://setaoffice.com/2011/10/26/which-package-contains-rstatd-for-red-hat-enterprise-linux-5-5/
http://www.linuxfromscratch.org/rpcbind

y esta ultima para red hat activando xinetd que no es otra cosa que un servidor para activa este tipo de servicios de red.
http://www.gadgetwiz.com/administration/rstatd.html

y esta que es bastante util para configurar NFS
Configurar NFS 
(por cierto aqui encontramos un comando util por lo menos para mi :-)  
exportfs  //comando que lista los filesystems que estan siendo exportados (NFS)

domingo, 30 de marzo de 2014

Manejo basico de jobs en linux/solaris

Saludos apoco no les ha pasado que quieren ejecutar un shell en segundo plano y resula que ya lo lanzaron o por ejemplo despliega muchas letras engorrosas en la terminal y demas cosillas que a los principiantes sysadmins o noobsters nos llega a suceder, bueno aqui un pequeño tutorial.

es comun ejecutar scripts en bash y pearl en la terminal Linux para eso nos ayudamos de ./nombredelscript.sh o pl etc...
pero que pasa cuando lo queremos mandar a segundo plano, basicamente disponemos de 2 opciones

./nombredetushell. & 

colocar al final el simbolo de " & " manda a segundo plano el comando o script que se desea ejecutar
si queremos evitar que nos lance letras o la salida del comando en la terminal podemos agregar:

nohup ./nombredetushell &

con esto ya no veremos salida en la termina y se ira a segundo plano, pero que pasa cuando queremos ver si sigue en ejecución por que este aun no termina.

podemos usar el comando jobs y con este comando seremos capaz de visualizar una lista de los jobs que se estan ejecutando con un numerito [num] que indica la prioridad con la que se ejecuta el job

[1]   running                 /opt/apache/test.sh
[2]+  running                /tmp/shell2.sh > /dev/null


ahora bien supongamos que lo queremos traer a primer plano podemos dar el comando fg para regresar un comando que enviamos a segundo plano a primer plano, de igual forma para enviar el comando nuevamente a segundo plano o bien cualquier otro comando que este en ejecución en primer plano podemos ejecutar ctrl+z para detenerlo y luego el comando bg, al mandarlo a segundo plano en algunas versiones de linux nos regresa el numero de job y el PID vemos un ejemplo:

digamos que yo arranco un shell para ordenar mis mp3 llamado mp3sort.sh

y lo lanzo con ./mp3sort.sh hasta este punto lanzamos la ejecucion pero como tenemos mas cosas que hacer en la terminal y nos es una prioridad, lo mandamos a segundo plano ejecutamos ctrl+z para detenerlo y luego el comando bg .

[2] 2136   

jobs

[1]  done                     ./e.sh
[2]  running                ./mp3sort.sh

Mas tarde nos acordamos que dejamos un shell corriendo y queremos ver en que estatus quedo entonces tecleamos el comando jobs

[1]  running                ./mp3sort.sh


y vemos que sigue en ejecución, entonces nos damos cuenta de que ya lleva mucho tiempo y no funciona o estaba en prueba, entonces lo queremos matar aqui hay de 2 le damos un kill -9 y el pid
en este caso kill -9 2136 para matar el job o bien kill %1 que es el número de job.

entonces ya disponemos de varias opciones para iniciar el job y mandarlo a segundo plano desde un inicio o bien detenerlo y mandarlo a background mode (segundo plano)

haber ahi les va un ejemplo mas complicado


<<<<<<<<<<<<< Matar varios procesos y tareas especificas >>>>>>>>>>>>>>>
ps -fea |grep root| egrep -v "license|samba" | awk '{print $2}' | xargs -I {} kill -9 {}

vamos a desglozar el comando de mas arriba, recuerda que  " | " es una tuberia y redirige la salida del primer comando al seguiente, quiza no es el modo mas elegante de hacerlo, pero es un buen ejemplo de tuberias ;-), vamos!!
sacamos todos los procesos (ps -fea), depuramos con grep al usuario root y con egrep buscamos las palabras que contengan smbd y samba, con awk solo dejamos el PID del proceso, con xargs cachamos la lista  de procesos y la ponemos en un array{} y a todos esos PID les damos un kill -9 {}
las llaves es para indicar el array :-)

algo mas elegante es utilizar el comando pgrep -u myusuario o bien el pkill -u myusuario, tanto pgrep como pkill tienen varias opciones mas para buscar procesos o matarlos.

a la espera de sus comentarios y espero les sirva.




jueves, 28 de marzo de 2013

Comandos Basicos para Monitoreo linux/unix parte 2 update 15/11/2015

Bueno la ultima vez que me pase por aquí fue ya hace mucho rato pero les vengo a publicar otra lista de comandos útiles al momento de monitorear un sistema bien solaris o linux.

Los comandos aquí mostrados son un repost de los anteriormente publicados por diversos bloggers y blogs de tecnología  quizá es buena idea ponerlos aquí   y espero les sea de utilidad.


Para Solaris revisen http://sparcki.blogspot.mx/2009/09/comandos-basicos-y-no-tan-basicos-de.html que muestra varios comandos y tips para administración de solaris en general muy buen blog de Solaris, yo solo hago el re-post de algunos comandos.

También les comparto la siguiente liga donde me encontré una pequeña joya de comandos muy utilizados en sistemas linux, super completo http://www.marioalberto.com.mx/linux/linux.php

Ahora si vamos con los comandos
  • El comando uptime: 
    • la hora actual
    • el tiempo que el sistema está en marcha
    • el número de usuarios conectados
    • la carga promedio del sistema para los últimos 1, 5 y 15 minutos

#uptime
10:21:06 up 5 days, 19:11,  2 users,  load average: 0.08, 0.03, 0.00
  • El comando top: El comando top permite una visión dinámica del sistema en tiempo real. El comando muestra un listado de los procesos que se están ejecutando. Proporciona además un gran número de datos como el uso de la memoria y procesador…

#top
top - 10:21:48 up 5 days, 19:11,  2 users,  load average: 0.04, 0.03, 0.00
Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   3632736k total,  1049496k used,  2583240k free,   359636k buffers
Swap:  1991920k total,        0k used,  1991920k free,   255052k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                               
28566  user  16   0  2196 1088  856 R  0.3  0.0   0:00.02 top                                                                                   
    1 root      16   0  1564  532  464 S  0.0  0.0   0:01.21 init                                                                                 
  • free (solo en linux): el comando free muestra información relativa al uso de la memoria. Sin embargo, el resultado mostrado por este comando es estático, para poder visualizar el uso de la memoria de manera dinámica, se le puede agregar el comando watch:

#watch –n 1 –d free
Every 1,0s: free                                               Wed Sep 23 10:22:47 2009
             total     used       free              shared    buffers     cached
Mem:        3632736    1049556   2583180                 0     359644     255072
-/+ buffers/cache:     434840    3197896
Swap:1991920                0    1991920

La opción –n indica el tiempo de refrescamiento de la información y –d para resaltar la evolución de los snapshots.

ahora bien como se lee free?, en el caso de linux, recordemos que linux acostumbra paginar mucho y ocupar mucho espacio es decir hay veces en que la memoria luce menor con el commando top pero al revisarla con free en la segunda fila en memoria cache free, podemos ver que aunque se cacheo mucha memoria realmente tenemos 3197896mb libres, si queremos cambiar como se despliega y ver la memoria en megas o gigas solo usamos la opcio -m y -g respectivamente y asi sera mucho mas comodo, en la parte de arriba recueda que el valor en amarillo representa la memoria real libre y no la memoria total cacheada por el sistema.

  • vmstat: (solaris) proporciona información sobre el uso de la memoria virtual por los threads del núcleo, el disco y la actividad del procesador.

#vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 1  0      0 2583032 359664 255088    0    0     1    14   63    22  1  0 99  0
  • iostat: (solaris/linux)muestra estadísticas sobre la lectura/escritura de los dispositivos (ve detalle mas abajo)
  • iotop: (linux) Seria el equivalente solo para linux del comando iostat que solo aplica en solaris y algunas distros linux

#iostat
Linux 2.6.15-23-386 (owlt02.owliancet.local)  23.09.2009
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,53    0,03    0,04    0,07    0,00   99,33

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               1,53         1,21        28,79     604661   14429814
  • du: muestra el espacio en disco usado por los directorios y sub-directorios, por defecto, partiendo del directorio en uso ‘.’. Si se pasa el nombre de un directorio como parámetro, el análisis se hará sobre éste, por ejemplo si queremos saber cuanto pesan nuestros directorio home podemos dar du -sh /home, cabe mencionar que du suele ser mucho mas preciso que df y esto debido a la forma en la que obtienen los datos uno y otro (en algun otro momento entrare en detalle con algunos "bugs del sistema donde me resulto mas util du que df .
  • df: muestra la cantidad de espacio libre en los diferentes dispositivos montados o pasados como parámetro el ejemplo mas comun es df -h que muestra los puntos de montaje y el porcentaje ocupado en formato humano es decir en Megas y Gigas.
  • ps: muestra una lista de los procesos que se están ejecutando y el nombre del usuario actual, podemos usar como ejemplo ps -u nombredelusuario o ps -uf nombre del usuario  o ps -ef para que nos muestre todos los procesos.
  • who: muestra la lista de usuarios conectados si se usa solo, si usamos who -r veremos el runlevel del sistema, con who -b veremos la ultima ves que se reinicio el sistema o who -a nos da todas las anteriores.

Estos comandos que siguen aplican mas para solaris que para linux como tal y son comandos con información muy especifica, en el caso de vmstat, se explica con mayor profundidad cada una de las columnas, muy util para descifrar la información que realmente se requiere.

 sar (System Activity Reporter) // Solaris y algunas distros linux (red hat por ejemplo)
Esta es una de las mas potentes herramientas con las que cuenta solaris, basicamente sar se puede encender de varias formas aqui veremos cuando ya esta corriendo el servicio (
svcadm enable sar)
podemos usar sar -r para ver las estadisticas de la memoria en kilobytes
o bien el potente sar -u para ver el comportamiento del cpu, altamente recomendable y quiza algo mas atinado que prstat.


sar
-d => display activity for all block device
-g/p => actividades de paginado
-m => mensajes y actividades de semaforos
-u => utilización de  CPU
-v => reporta el estatus de un proceso, i-node (estos me parece tambien los puedes ver con df -i ).

la información del los historicos se salva dentro de /var/adm/sa para solaris o bien para linux en /var/log/sa

 iostat (Input/Output Statistics) en Solaris

Esta herramienta reporta de manera iterativa la actividad de E/S de terminales, discos y cintas, así como el uso del CPU.
La sintáxis típica del comando es algo como lo siguiente:
> iostat 1 5
Esto significa que cada intervalo de 1 segundo y por 5 veces, el comando nos mostrará

tty        sd21          sd23          sd24          sd25           cpu
tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
0   76   0   0    0    3   0   17  192   3   75   17   3    7    3  3 22 72
0  693   0   0    0    0   0    0    0   0    0   17   4    6    0  3 48 48
0  670   0   0    0    0   0    0    8   2    5   17   4    8    1  4 24 70
0  670   0   0    0    0   0    0    9   2   12   17   4   11    2  5 24 68
0  670   0   0    0    0   0    0  384   3    7    8   2    9    8  8 40 44


Esto es, se nos muestra información dividida por 6 bloques de columnas, el primer bloque (tty), concentra dos datos tin y tout, aquí lo que se muestra son los caracteres de entrada y de salida.
Las siguientes cuatro columnas (sd21 a sd25), se refieren a estadísticas de 5 discos duros.
Cada uno de estos discos tiene tres columnas que significan:
  • kps: Bloques por segundo.
  • tps: Transacciones por segundo.
  • serv: Tiempo de servicio promedio, en milisegundos.
Finalmente, viene una columna especial para el cpu:
  • us: En modo usuario.
  • sy: En modo de sistema.
  • wt: En espera de E/S.
  • id: En modo idle.
Antes de seguir adelante debo mencionarles que la primera línea corresponde a los valores acumulados desde el inicio del servidor hasta el momento de la siguiente iteración.
Las líneas siguientes se refieren a los datos obtenidos desde el momento de la última iteración hasta un segundo después (para efectos del ejemplo, aunque puede elegirse cualquier otro valor).

Sobre este comando, existe una variante en la cual podemos ver estadísticas extendidas

> iostat -xtc

Una salida típica de este comando sería:

    extended device statistics                      tty         cpu
device        r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b  tin tout  us sy wt id
sd21          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0    0    0   0  0  0 100
sd22          0.0    0.0    0.4    0.4  0.0  0.0   49.5   0   0
sd23          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
En donde cada columna significa:
  • r/s: porcentaje de Lecturas por segundo.
  • w/s: porcentaje de Escrituras por segundo.
  • Kr/s: Kb leídos por segundo. ---> importante para ver la cantidad de lectura
  • Kw/s: Kb escritos por segundo. --> importante para ver la escritura
  • wait: Número promedio de transacciones en espera de servicios (Longitud de la cola)
  • actv: Número promedio de transacciones activamente servidas.
  • svc_t: Tiempo promedio de servicio.
  • %w: Porcentaje de tiempo en que la cola no está vacía.
  • %b: Porcentaje de tiempo en que el procesador está ocupado.
En general este comando nos da información bastante útil respecto al uso que están teniendo los discos del sistema. Ahora, que lo que estaría más interesante sería saber qué procesos están haciendo uso de ellos. De alguna forma también nos puede auxiliar el comando ps, ya que entre sus variadas opciones nos puede mostrar datos sobre el uso de la memoria swap. Aunque esto es sólamente una parte muy pequeña del uso sobre el disco duro pues aún nos faltaría averiguar qué archivos tiene abiertos, en dónde está escribiendo o leyendo, etc.
otra opción seria iostat - xpnc que te arroja la utilización del total de los discos mas la controladora, te invito a que analices las opciones en el man de iostat.

3. lsof (LiSt of Opened Files)

Para tener una idea de qué procesos tienen abiertos archivos regulares, directorios, sockets (Unix e Internet), archivos especiales de bloques, etc; podemos servirnos del comando lsof, que aunque no es nativo de SunOS, se puede incorporar bajando el paquete de http://www.sunfreeware.com/ En donde se encuentra disponible para solaris 6, 8, 9 y 10, para sistemas Linux viene instalado por default (ubuntu, redhat, fedora, centoOS, etc...).

La sintaxis típica es

> lsof 

un ejemplo en linux es lsof elpid.

fuser (solaris 10 en adelante y Linux) : identifica qué procesos están utilizando un fichero o carpeta determinada o un socket por ejemplo tenemos fuser -cu nombredelarchivo o carpeta, o por ejemplo para saber quien esta ocupando un punto de montaje.
o fuser -c

como podemos ver en la imagen de mas arriba salen los procesos que se están ejecutando (PID ) y además el usuario de tal forma que si quiero desmontar /home/rev o simplemente evitar que la ocupen, podemos matar los procesos por ejemplo o monitorizar el uso de la carpeta
<<< comando ejecutado en ubuntu 14.04LTS>>>

para mas detalle sobre fuser da click aqui

revisa las opciones de man, fuser es un comando muy potente.

vmstat (Virtual Memory Statistics) (solo para Solaris)

Reporta estadísticas del uso de la memoria virtual sobre los hilos del kernel, discos, memoria virtual, traps y actividad del CPU su equivalente en Linux puede ser free o bien top que es algo menos preciso o bien cat /proc/meminfo.

La sintaxis simple es:

> vmstat

Y su salida es:
 kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr s3 -- -- --   in   sy   cs us sy id
0 0 0 3557544 166696 553 1866 6 3 3  0  0  8  0  0  0  397 10621 2212 9 12 78
En este caso

  • kthr: Reporta el número de hilos del kernel en cualquiera de los siguientes estados:
  1. r: El número de hilos en la cola de ejecución
  2. b: El número de hilos bloqueados, en espera de recursos de E/S.
  3. w: El número de procesos ligeros (LWPs) en swap, esperando por ecursos para finalizar.
> vmstat 2 5
 kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr s3 -- -- --   in   sy   cs us sy id
0 0 0 3557544 166696 553 1866 6 3 3  0  0  8  0  0  0  397 10621 2212 9 12 78
2 0 0 3437616 159800 2128 5211 0 0 0 0  0  0  0  0  0  438 13856 2318 35 19 46
5 0 0 3437616 159792 2324 5604 0 0 0 0  0  1  0  0  0  425 14711 2391 39 20 41
0 0 0 3439064 161616 200 552 0 4  4  0  0  2  0  0  0  362 7254 2126  9  6 86
0 0 0 3439064 161616 7  80  0  0  0  0  0  0  0  0  0  352 6649 2099  6  4 90


Aún con lo que hemos visto hay otra opción interesante para este comando que es el switch -p

> vmstat -p 2 3

Cuya salida sería como esta:

memory page executable anonymous filesystem
swap free re mf fr de sr epi epo epf api apo apf fpi fpo fpf
3555664 166616 553 1867 3 0 0 3 0 0 0 0 0 3 3 3
3439168 157080 7 93 0 0 0 0 0 0 0 0 0 0 0 0
3439160 157072 7 80 0 0 0 0 0 0 0 0 0 0 0 0


Como se observa, se agregan nuevas columnas, esto debido a que el modificador -p hace que vmstat reporte también la actividad de la paginación. Las columnas nuevas significan:

epi Executable page-ins.

epo Executable page-outs.

epf Executable page-frees.

api Anonymous page-ins.

apo Anonymous page-outs.

apf Anonymous page-frees.
fpi File system page-ins.

fpo File system page-outs.

fpf File system page-frees.


Debe decirse que en equipos multiprocesadores, vmstat presenta estadísticas promedio de los procesadores. A fin de tener los datos específicos de cada uno de ellos es necesario usar mpstat, herramienta que se describe a continuación.

 mpstat (Multi Processor Statistics)

Este comando devuelve reportes estadísticos de cada uno de los procesadores o bien, por grupo de procesadores.

La sintáxis común es:

> mpstat

Y su salida es:

CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
0 1028   0  177   353  243 1083   30  366   62    0  5631   10  13   0  77
1  839   0  205    44   14 1129   29  365   51    0  4990    9  12   0  79

Esto significa básicamente que en el sistema tenemos instalados dos procesadores, y si revisamos las cuatro últimas columnas encontraremos algo interesante, ahí se describe el porcentaje que el procesador ha dedicado a procesos de usuario (usr), procesos de sistema (sys), así como el porcentaje de tiempo que ha pasado esperando por E/S (wt) y finalmente el porcantaje de tiempo que el procesador ha estado inactivo (idl).

El resto de las columnas son:
  • minf: Fallas menores
  • mjf: Fallas mallores
  • xcal: Llamadas cruzadas interprocesadores.
  • intr: Interrupciones.
  • ithr: Interrupciones como hilos.
  • csw: Cambios de contexto
  • icsw: Cambios involuntario de contexto
  • migr: Migración de hilos (a otros procesadores)
  • smtx: Spins en mutexes (bloqueo no adquirido en el primerintento)
  • srw: Spins en bloqueos de lectura/escritura (bloqueo no adquirido en el primerintento)
  • syscl: Llamadas al sistema
  • set: Grupo de procesadores al que se pertenece
  • usr: Porcentaje de tiempo en procesos de usuario.
  • sys: Porcentaje de tiempo en procesos de sistema.
  • wt: El tiempo de espera de E/S no se calcula ya como porcentaje de tiempo de CPU, por lo tanto siempre va a regresar 0 su medición.
  • idl: Porcentaje de tiempo sin utilizar.

Comandos proc (Processes Commands)

Este conjunto de comandos toma información sobre los procesos en especial entonces si queremos buscar un proceso podemos usar pgrep y el PID (process ID) 
para problemas con Java podemos utilizar pstack siendo este comando sumamente util para ver el comportamiento de una app en cuanto a consumo de memoria.

Tambien tenemos el comando pkill y el process id para matar un proceso  muy similar al kill -9
  • pflags:
  • pcred
  • pldd
  • psig
  • pstack
  • pfiles
  • pstop
  • prun
  • pwait
  • ptime

Honor a quien honor merece y les dejo la fuente original

lunes, 21 de mayo de 2012

Seguridad Unix y Linux, parte 1 (Shadow)

 Shadow
Bueno pues en esta ocacion cito a grandes rasgos lo que maneja esta suite que ya tiene algun tiempo,
/etc/shadow, es un archivo de configuración para encriptar las passwords en sistemas Unix 



SHADOW
Seccion: Formato de Archivos (5)
NOMBRE
shadow - archivo de passwords encriptados
DESCRIPCIÓN
shadow contiene la información encriptada para las cuentas de usuarios y opcionalmente la información de caducidad del password.
Está incluido
- Nombre de usuario
- Password Encriptado
- Dias desde 1 Enero, 1970 que el password fue cambiado
- Dias antes de que el password pueda ser cambiado
- Dias despues de los cuales el password debe ser cambiado
- Dias antes en los que el usuario será advertido antes de que el password expire
- Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada     luego del password expirar
- Un campo reservado
El password debe ser llenado.
El password encriptado consiste en 13 a 24 carácteres del alfabeto de 64 caracteres de a hasta z, A hasta Z, 0 al 9, . y /. Referirse a crypt(3) para detalles acerca de como es interpretada esta cadena.
El dia del ultimo cambio de password es dado como el número de dias desde 1 Enero, 1970. El password no puede ser cambiado nuevamente hasta que esos dias hayan pasado, y debe ser cambiado antes número máximo de dias. Si el número mínimo de dias requerido es mayor que el máximo numero de dias permitido, este password no puede ser cambiado por el usuario.
Una cuenta es considerada como inactiva y deshabilitada si el password no es cambiado dentro de el número de dias especificado luego de que el password expire. Una cuenta tambien será deshabilitada en los dias especificados no obstante la información de expiracion restante.
Esta información trasciende cualquier password o información de tiempo de password presente en /etc/passwd.
Este archivo no debe ser leible por usuarios regulares si se mantendrá la seguridad de los passwords.
ARCHIVOS
/etc/passwd - user account information
/etc/shadow - encrypted user passwords
VER TAMBIEN
chage(1), login(1), passwd(1), su(1), passwd(5), pwconv(8), pwunconv(8), sulogin(8)
AUTOR
Julianne Frances Haugh (jockgrrl@ix.netcom.com)

De modo que tomando como ejemplo la linea correspondiente , en /etc/shadow , tenemos algo como esto:
jespinal:$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4:13918:0:::::0
Se sigue viendo medio feo, pero por lo menos se entiende, ya que sabemos que segun el man page:
Nombre de usuario
jespinal
Password Encriptado
$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4
Dias desde 1 Enero, 1970 que el password fue cambiado
13918
Dias antes de que el password pueda ser cambiado
0
Dias despues de los cuales el password debe ser cambiado
 vacio, es decir, no debo cambiarlo :) 
Dias antes en los que el usuario será advertido antes de que el password expire
 tampoco estoy usando este campo
Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada luego del password expirar
ya que mi cuenta no va  a expirar, tampoco se usa esto
Un campo reservado
0
Shadow maneja varios tipos de encripciones donde la mas comun es MD5
Opcionalmente se puede comenzar con un carácter "$". Esto significa que la contraseña encriptada se ha generado utilizando otro algoritmo (no DES). Por ejemplo, si comienza con "$ 1 $", significa que el algoritmo MD5 basado fue utilizado.

la wikipedia nos da mas detalles sobre los metodos de encripcion manejados, sobre lo que eh leido aunque MD5 no es el mas seguro si suele ser el estandar. 



Cambia la contraseña de usuario en linux/unix

Pues solo recordandoles un comdo muy sencillo para cambiar la contraseña de unix/linux,
"passwd" posteriormente te pedira teclear tu password anterior y lugo la nueva contraseña si lo haces como root cambiaras la password de administrador, ojo con este comando anota bien tus contraseñas ;-)

"passwd generalmente funciona manipulando el archivo donde se guardan los usuarios y sus contraseñas (comúnmente /etc/passwd, o /etc/shadow si se usan contraseñas shadow), lo que significa que la contraseña cambiada aplica sólo al computador en el cual se ejecutó el comando. Si se está usando PAM, en cambio, como puede ser en GNU/Linux, Solaris, FreeBSD o NetBSD, la instrucción passwd se puede usar para cambiar la contraseña del mecanismo de autenticación que esté usándose en el momento, sea NIS, Kerberos, LDAP, o cualquier otro para el que haya un módulo de PAM."

wikipedia

Comandos Basicos para Monitoreo linux/unix 1 update 05-01-2015

Saludos les publicare algunos tips sumamente basicos para el  monitoreo de nuestro sistema en Linux o unix, la segunda parte abarca algunos comandos mas avanzados comandos-para-monitoreo-parte-2-solaris/linux.html

primero empezaremos con " uname -a " el cual nos mostrara el nombre y versión del sistema operativo que estamos utilizando.
el comando funciona de manera genérica para cualquier plataforma unix.

También un comando sumamente importante es prtdiag -v dentro de solaris, este comando nos sirve para ver el estatus del servidor desde la ram hasta el estatus del todo el hardware que se encuentra funcionando, asi como la version de firmware y otros componentes.

Del mismo modo tenemos " psrinfo -v " que proporciona la información de los procesadores, de favor si me corrigen ya que ignoro si esto aplique también para osx, ya que me parece solo aplicaría para solaris y algunas distros linux.

Status of virtual processor 0 as of: 05/21/2012 11:21:18
  on-line since 05/06/2012 17:12:36.
  The sparcv9 processor operates at 2520 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 05/21/2012 11:21:18
  on-line since 05/06/2012 17:13:32.

Para ver la memoria disponible " prtconf | grep Memory " solo para solaris.
Memory size: 20480 Megabytes

Para conocer la cantidad de memoria ram de nuestro sistema Solaris, así como la cantidad y el tipo de CPU, tarjetas PCI y dispositivos externos con los que contamos ejecuta el siguiente comando:

/usr/platform/`uname -i`/sbin/prtdiag

Para saber el nombre de la maquina en unix o linux, tenemos 2 opciones, " uname -n " o bien hostname, ignoro si aplica para todas las distros, los eh probado en ubuntu y solaris.

Para saber nuestra ip, tecleamos " ifconfig -a " o solo " ifconfig " y nos proporcionara información referente a la ip (s) configuradas para nuestro equipo.

Uno muy util es cuando queremos saber los procesos asignados a nuestro usuario, en tal caso usuamos "ps -fu nombreusuario" en donde "nombreusuario" es el user id o nombre del usuario con el que iniciamos sesion o " ps -ef  " que también nos mostrara los procesos que se están ejecutando.

Para ver el estado de la memoria podemos hacerlo con "vmstat" aunque para este comando hay muchas opciones, podemos tomar por numero de muestras y/o intervalos de tiempo, para este comando le dedicare un poco mas de tiempo en futuras entradas, por lo pronto podemos usar el manual con "man vmstat" en la consola y un ejemplo seria vmstat 3 6 el cual toma muestras cada 3 segundos y tomara 6 muestras

 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr m0 m1 m3 m4   in   sy   cs us sy id
 0 0 0 199603904 164565344 94 409 62 134 134 0 0 0 0 0 0 6809 13802 7377 0 1 99
 1 0 0 196558024 160959592 0 78 0 206 206 0 0 0 0 0  0 6827 16920 7403 0  1 99
 1 0 0 196557528 160959304 0 2 0 73 73 0 0  0  0  0  0 6825 9409 7181  0  2 98
 0 0 0 196557528 160958624 47 51 0 377 377 0 0 0 0 0 0 7013 9912 7734  0  1 98
 0 0 0 196557312 160959712 105 720 0 76 76 0 0 0 0 0 0 7236 17293 8342 0  1 99
 0 0 0 196557528 160960160 0 30 0 102 102 0 0 0 0 0  0 6735 12328 6987 0  2 98

Para ver el espacio en disco podemos usar df -k (bytes) o df -h (formato megabytes o human)
df -h
Filesystem             size   used      avail capacity  Mounted on
/                           68G    8.7G    59G     13%    /
/HTTPServer       2.0G   254M   1.6G    14%    /HTTPServer
/NDM36             2.0G   387M   1.5G    20%    /NDM36
/WebSphere61    5.0G    2.3G    2.5G    48%    /WebSphere61
/arqnacar            10G     20M    9.4G     1%    /arqnacar
/backlogs            2.0G   18M     1.9G     1%    /backlogs
/bladelogic          2.0G   117M   1.8G     7%    /bladelogic
/ctrlmagt             2.0G   163M   1.7G     9%    /ctrlmagt
/dev                   68G     8.7G     59G     13%    /dev

Ahora bien para saber el espacio de una carpeta / filesystem podemos usar "du -ha", este comando informara sobre el tamaño de los archivos en una carpeta de forma re cursiva.

prstat -as cpu que muestra de forma ordenada los procesos que se están ejecutando y se actualiza mas o menos cada 2 segundos, solo aplica para ciertos sistemas unix  (Solaris) y sirve para monitorizar también el consumo de CPU, memoria ram, swap, usuarios, es el equivalente de top en linux.



Actualización ------------

También para ver los usuarios conectados podemos utilizar, who y finger, ambos comandos muestran las sesiones conectadas a nuestro sistema. finger proporciona mayor detalle y puede ser un comando restringido al proporcionar información sensible.

y tenemos uptime, que muestra el tiempo que lleva nuestro equipo funcionando desde el último reinicio o bien apagado.

Continua comandos-para-monitoreo-parte-2-solaris/linux.html

Have  nice day