Comandos para Servidores Web Linux

Cargando
Facebook RSS Twitter
+ Responder Tema + Crear Nuevo Tema
Resultados 1 al 2 de 2
  1. #1
    Miembro Guru svyatoslav tiene un aura espectacular svyatoslav tiene un aura espectacular svyatoslav tiene un aura espectacular Avatar de svyatoslav
    Fecha de Ingreso
    11 nov, 09
    Mensajes
    1,543
    Nacionalidad
    Users Flag!

    Predeterminado Comandos para Servidores Web Linux

    Comandos Estadisticos para Servidores Linux


    Un one-line command (o comando de una sola línea) es una secuencia de varios comandos encadenados entre sí, de forma que la salida de un comando, es la entrada del siguiente. Es muy común la construcción de comandos one-line en lenguajes y/o herramientas como Perl, AWK o entornos de sistemas operativos.

    En este pequeño manual veremos 10 comandos one-line, especialmente indicado para administradores web que trabajan y manipulan registros de acceso y logs en servidores.

    Ejemplo
    Si no tienes claro como funcionan las redirecciones y los comandos de este tipo, veamos un pequeño y sencillo ejemplo antes de empezar.
    Si eres muy nuevo en este tipo de artículos y quieres aprender desde un punto de vista más básico, puedes echarle un vistazo a 10 comandos para trabajar en Linux.

    Cuenta el número de directorios de la ruta actual

    Código HTML:
    ls -l | grep "^d" | wc -l
    
    En este pequeño one-line command estamos utilizando tres comandos diferentes bajo una terminal Linux: ls (listar archivos), grep (filtrar) y wc (contar).

    Así pues, en el primer comando, ls -l, listamos todos los archivos de la ruta actual (el parámetro -l muestra una linea por archivo, con sus propiedades).
    drwxr-xr-x 2 diviertenet group 4096 Apr 24 14:58 folder1
    -rwxr-xr-x 2 diviertenet group 4096 Jun 12 12:47 readme.txt
    drwxr-xr-x 2 diviertenet group 4096 Apr 24 14:58 folder2
    -rwxr-xr-x 2 diviertenet group 4096 Jun 12 12:47 MAKEFILE
    drwxr-xr-x 2 diviertenet group 4096 Jun 12 12:47 temporal A ese listado, filtramos las líneas que empiecen por d (directorios) con una expresión regular, quedándonos con ellas y descartando las líneas que no empiezan por d (no son directorios).
    drwxr-xr-x 2 diviertenet group 4096 Apr 24 14:58 folder1
    drwxr-xr-x 2 diviertenet group 4096 Apr 24 14:58 folder2
    drwxr-xr-x 2 diviertenet group 4096 Jun 12 12:47 temporal Finalmente, con wc (y el parámetro -l) contamos las líneas que nos quedan, devolviendonos el número de directorios.

    1. Los 35 recursos más pedidos

    Con este one-line command conseguiremos que se nos muestren los 35 recursos más pedidos a nuestro servidor web, con la transferencia acumulada y el tamaño de cada recurso independientemente (entre paréntesis).

    Código HTML:
    cat access.log | cut -d" " -f10,7 | sort -n | uniq -c | awk '{printf("%2.2fMB (%2.2fKB) %s\n", ((($3*$1)/1024)/1024), (($3)/1024), $2)}' | sort -n | tail -35
    
    Es muy útil para optimizar nuestro sitio web con respecto a la transferencia, ya que podemos observar que ficheros son los más pedidos y actuar en consecuencia.

    Ejemplo de resultado

    28.56MB (91.98KB) /weblog/geek-nogeek-2.png
    28.64MB (13.85KB) /ttf/sansation.ttf
    29.24MB (3.71KB) /img/imgload.jpg
    39.58MB (10.53KB) /img/social-susc.png
    48.43MB (130.18KB) /weblog/ajedrez-ag-piezas.jpg

    2. Los 50 agentes de usuario menos comunes

    Un agente de usuario es la identificación del navegador (o aplicación) que se utiliza para acceder al recurso del servidor web. Se ordenarán por número de peticiones realizadas.
    Código HTML:
    cat access.log | cut -d" " -f12- | egrep -v "MSIE|Gecko|Safari|Opera" | sort | uniq -c | sort -n | tail -50
    
    En este ejemplo filtraremos los navegadores basados en el motor del Internet Explorer, Gecko, Safari y Opera.

    Ejemplo de resultado

    113 "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
    120 "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
    126 "Mozilla/5.0 (PLAYSTATION 3; 1.00)"
    194 "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
    277 "msnbot/2.0b (+http://search.msn.com/msnbot.htm)"
    504 "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
    567 "Mediapartners-Google"
    816 "Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)"

    3. 50 referers más activos

    Con este comando y sustituyendo diviertenet.com por nuestro dominio (para excluirlo) veremos cuales son los referers (referidos, lugares de donde vienen nuestros lectores) más activos, que nos mandan más tráfico.
    Código HTML:
    egrep -v "diviertenet.com" access.log | cut -d" " -f11 | cut -d"/" -f3 | sort | uniq -c | sort -n | tail -50
    
    El resultado sería un listado de dominios según el tráfico que nos envían hacia nuestra web (en orden creciente).

    Ejemplo de resultado

    77 http://www.meneame.net
    201 search.conduit.com
    216 http://www.friki.net
    275 rho.bloglines.com
    341 http://www.google.com.ar
    484 http://www.google.com.mx
    800 http://www.google.com
    1494 http://www.taringa.net
    2148 http://www.google.es

    4. Las 15 IPs/Hosts que más peticiones realizan

    Por norma general, si ordenamos el tráfico recibido por IP o direcciones de host, siempre encontraremos un determinado usuario / robot que consume más tráfico de lo normal.
    Puede tratarse de un usuario que utilice mucho nuestra web o navegue mucho por ella, sin embargo, suelen aparecer muchos robots o aplicaciones automatizadas (spammers, robots extractores de emails, bots...) que se pueden detectar facilmente de esta forma.

    Código HTML:
    cat access.log | cut -d" " -f1 | sort | uniq -c | sort -n | tail -15
    
    Una pista interesante suele ser el hacer un nslookup a la IP en cuestión para examinar su dns inverso o comprobar si se puede acceder introduciendo la IP en el navegador web (generalmente son servidores mal configurados que aprovechan los spammers*).
    Si quieres saber más, lee este artículo sobre bots de spam en blogs y como detenerlos o bloquearlos.

    Ejemplo de resultado

    541 128.242.240.212
    660 msnbot-65-55-3-192.search.msn.com
    742 crawl-66-249-68-99.googlebot.com
    950 b3091344.crawl.yahoo.net
    1503 69.63.189.16
    50083 mail.micro-system-fail.com
    53406 http://www.power-balancing-corporation.co.uk

    5. Examinar posibles problemas del servidor

    Es posible mostrar las peticiones que han devuelto un 404 error (no encontrado), y así observar las que se repitan demasiado, que pueden implicar algún tipo de problema en nuestro sitio (enlace incorrecto, recurso borrado, etc...).

    Código HTML:
    grep "HTTP/.... 404 " access.log | cut -d" " -f6-7 | sort | uniq -c | sort -n | tail -15 | tr -d \"
    
    Esto nos mostrará un listado con las peticiones más frecuentes con error 404 y si se trata de una petición GET o POST (recibir datos externos).

    Ejemplo de resultado

    3 GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=6415&STRMVER=4&CAPREQ=0
    8 GET /img/tro-banner.png
    8 POST /comments/
    13 GET /img/logo.png
    48 GET /apple-touch-icon-precomposed.png
    48 GET /apple-touch-icon.png
    128 GET /index.css Es posible, también, con el siguiente comando, obtener un listado de los códigos HTTP emitidos, para hacernos una idea global, y posteriormente, examinar con el one-line command anterior, modificando el 404 por el código a revisar.

    Código HTML:
    cat access.log | cut -d" " -f9 | sort | uniq -c | sort -n | tail -50
    
    6. Descubrir probables spammers de comentarios

    Mucho cuidado con este punto. El código nos mostrará un listado de los IPs/Hosts que envian datos al servidor (formularios, comentarios, envío de correos, etc...). No tienen porque ser spammers o bots.

    Código HTML:
    grep " \"POST /" access.log | cut -d" " -f1,7 | sort | uniq -c | sort -n | tail -50
    
    Sin embargo, es muy sencillo localizar peticiones desproporcionadas (con respecto al resto), peticiones extrañas o hosts muy sospechosos (con dominios rusos o similares) para investigar un poco más.
    Un buen sistema para evitar ataques automatizados y peticiones de spam o similares es mediante el uso de Mod Security.
    Además, bloqueando mediante firewall se suele reducir el consumo de CPU y memoria RAM del servidor.

    Ejemplo de resultado


    1 oracle1.wrt-inc.com //xmlrpc.php
    1 xi.delaware.net /articulos/10-trucos-para-blogs-conseguir-mas-visitas/contact.php
    2 xi.delaware.net /contact.php
    8 80.144.51.10 /comments.php
    78 mail.power-balancing.com /administrator.php

    7. Los 25 accesos SSH fallidos más insistentes

    Cuando tenemos un servidor Linux, generalmente tenemos disponible un servidor SSH para abrir una terminal remota y trabajar sin necesidad de tener acceso físico al equipo.
    Obviamente, a este servidor puede acceder cualquier persona, a parte de nosotros, y sus intentos de acceso son (por defecto de syslog) registrados en /var/log/secure.

    Código HTML:
    zgrep "Failed password for " /var/log/secure* | sed "s/invalid user //" | tr -s " " | awk '{print $11" "$9}' | sort | uniq -c | sort -n | tail -25
    
    Con este one-line command conseguirás un listado de las IPs/Hosts que más intentos han realizado para hacerse con una terminal en el servidor, y con los usuarios que lo han intentado.

    Ejemplo de resultado

    62 202.102.120.202 admin
    66 85.132.34.250 oracle
    67 200.17.236.254 ftpuser
    224 216.205.103.46 diviertenet
    441 115.238.28.155 root
    682 66.240.52.5 root
    2000 86.120.31.18 root
    2866 202.102.120.202 root

    Normalmente se trata de ataques automatizados (nombres genéricos: mysql, root, admin, oracle...), pero hay que tener especial cuidado con los accesos con nombres aparentemente inteligentes (diviertenet no forma parte de un diccionario, se trata de un ataque personalizado).

    8. ¿Cuántos suscriptores RSS tenemos?

    La mayoría de suscriptores RSS cuando acceden a la página original del editor, dejan un rastro en su User Agent que indican los suscriptores a su feed rss en la actualidad.
    egrep "subscriber" access.log | cut -d" " -f12- | sort | uniq | sort | tr -d \" Utilizando el one-line command anterior podremos obtener esta información. Si quieres más datos sobre esto, puedes echarle un vistazo a ¿Cuántos suscriptores RSS tiene nuestro blog?.

    Ejemplo de resultado


    Bloglines/3.1 (http://www.bloglines.com 329 subscribers)
    Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1439 subscribers) feed-id=2165378610225046384)
    Feedshow/2.0 (http://www.feedshow.com; 1 subscriber)
    Netvibes (http://www.netvibes.com/; 220 subscribers; feedID: 57337)
    NewsGatorOnline/2.0 (http://www.newsgator.com; 51 subscribers)
    PostRank/2.0 (postrank.com; 1 subscribers)

    9. Palabras clave que buscan en Google

    Construir un listado exacto de todas las palabras que se escriben en el buscador de Google para llegar a nuestro sitio web sería muy complicado, pero con este one-line command realizamos una aproximación de esta tarea.

    Código HTML:
    cat access.log | cut -d" " -f11 | egrep -i "http://(www.)?google" | sed "s/q=/©/" | cut -d"©" -f2 | cut -d"&" -f1 | grep "\+" | sort | uniq -c | sort | tail -50
    
    Siempre podemos variar este último tail -50 para que en lugar de mostrarnos las más frecuentes, nos muestre las que sólo se buscan una vez (útil para hacer zeitgeists) con head -50, o verlas todas debidamente paginadas con less o more.

    Ejemplo de resultado

    7 fondos+para+twitter
    9 punto+ciego
    13 aplicaciones+android
    13 trucos+tuenti
    49 memoria+ram
    82 musica+de+los+80

    10. Los 50 smartphones más usados en tu web

    Con este sencillo one-line command accederemos a un listado donde se nos mostrará, como siempre, en orden creciente, un listado de los smartphones más comunes con los que visitan nuestra página.

    Código HTML:
    cat access.log | cut -d" " -f12- | egrep "MIDP|iPhone|Android" | sort | uniq -c | sort -n | tail -50 | tr -d \"
    
    Lo que nos mostraría un listado similar al siguiente:

    Ejemplo de resultado

    136 Opera/9.80 (Android; Opera Mini/5.1.21126/20.2479; U; es) Presto/2.5.25
    152 Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/50.0.005[...]
    158 Mozilla/5.0 (Linux; U; Android 1.6; es-es; Orange_Boston Build/DONUT)[...]
    158 Mozilla/5.0 (Linux; U; Android 2.1-update1; es-es; HTC Legend 1.23.161.1[...]
    175 BlackBerry9700/5.0.0.593 Profile/MIDP-2.1 Configuration/CLDC-1.1[...]
    218 Mozilla/5.0 (Linux; U; Android 1.5; en-us; eee_701 Build/CUPCAKE)[...]
    290 Mozilla/5.0 (Linux; U; Android 2.2; es-es; Nexus One Build/FRF91)[...]
    291 Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; es-es)[...]
    435 Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; es-es)[...]

    Consideraciones finales


    Varias consideraciones finales a tener en cuenta sobre este artículo:

    * El mantra sort | uniq -c | sort -n se utiliza para ordenar un listado de resultados, de modo que queden adyacentes los que sean iguales. De este listado ordenado, suprimimos las lineas repetidas, contandolas (y añadiendo ese número al principio), para posteriormente organizarlas (en orden creciente de números naturales).
    * La mayoría de los comandos que se relatan a continuación son para la estructura de los logs y registros de servidores como Apache y Syslog (con su patrón de registro por defecto). Por lo que si tienes otro, o has cambiado el tuyo, debes tenerlo en cuenta.
    * La mayoría de resultados no ofrecen una estadística real, puesto que dependen mucho de la estructura de archivos de tu página web. Sirve sólo para hacerse una idea e identificar datos concretos.
    * En cada punto, estamos haciendo un volcado del registro (access_log, error_log, secure, messages...) completo. Esto dependerá de la configuración que tengas establecida en tu servidor. Normalmente se usan herramientas como logrotate para rotar y que el registro no se haga demasiado grande, aunque hay animales que tienen archivos gigantescos.
    Última edición por svyatoslav; 29/12/2010 a las 14:13
    Un deporte para los hombres de verdad

  2. #2
    Miembro Guru svyatoslav tiene un aura espectacular svyatoslav tiene un aura espectacular svyatoslav tiene un aura espectacular Avatar de svyatoslav
    Fecha de Ingreso
    11 nov, 09
    Mensajes
    1,543
    Nacionalidad
    Users Flag!

    Predeterminado

    Agradecimientos: emezeta.com
    Un deporte para los hombres de verdad

Temas Similares

  1. Manual de comandos para nmap Linux

    Por svyatoslav en el foro Seguridad y Redes
    Respuestas: 0
    Último Mensaje: 07/03/2011, 23:09
  2. Soporte Servidores Linux en Bogotá

    Por anuncios en el foro Anuncios
    Respuestas: 0
    Último Mensaje: 14/02/2011, 22:09
  3. Respuestas: 0
    Último Mensaje: 14/01/2011, 10:14
  4. Historial de comandos en la Terminal de Linux

    Por svyatoslav en el foro Linux
    Respuestas: 0
    Último Mensaje: 14/01/2011, 10:07
  5. Comandos para administrador de redes en Linux

    Por dimitri en el foro Linux
    Respuestas: 0
    Último Mensaje: 21/09/2010, 23:10

Etiquetas para este Tema

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes

LinkBacks Enabled by vBSEO