Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Monitorix: Monitoriza tu servidor Linux


Monitorix es una herramienta libre (open-source) para monitorizar gráficamente el estado de un servidor, tipo Nagios, Cacti o Zabbix, mrtg,  monit, munin, etc   y accesible vía web. Está escrita en Perl y es muy sencilla la instalación y configuración. Apenas consume recursos y estaba inicialmente diseñada para sistemas basados en Red Hat, Fedora y CentOS Linux pero funciona en cualquier distribución GNU/Linux e incluso en otros sistemas UNIX, como FreeBSD, OpenBSD and NetBSD.






Permite monitorizar cargas del procesador, uptime, los procesos activos, uso de la memoria ram, porcentaje de uso del disco duro (espacio libre), actividad del disco duro (I/O), temperaturas de los discos duros, del sistema, de la placa base, de la tarjeta gráfica gpu (sólo nvidia), velocidad rpm de los ventiladores, actividad del disco duro (con lmsensors), espacio usado en disco (en %), tráfico de red (entrada y salida y ahora también con estadísticas de red netstat), tráfico paquetes, monitorizar tráfico en un determinado puerto en concreto (tanto tcp como upd, entrada y salida (input/ouput), monitorizar cargas y uso de servicios tan populares como:

Servidores Web
Servidores FTP

  • ProFTPD
  • vsftpd
  • Pure-FTPd
Servidores Correo

  • Sendmail
  • Postfix
Y otros servicios tan comunes como:
  • BIND (named), MySQL, Squid, NFS, Fail2banRaspberry Pi, NFS, Squid, APC (Alternative PHP Cache), Memcached,  Icecast Streaming Media Server,  Wowza Media Server, APC UPS (apcupsd), NTP,


Puede mostrar el gráfico diariamente, semanalmente, mensualmente y anualmente, y con las nuevas versiones se pueden guardar hasta 5 años de historial.

Instalación

Se puede instalar mediante paquete rpm, deb o compilando el código fuente con las sources.

Usando repositorio epel


yum -y install epel-release
yum -y update
yum clean all

yum -y install monitorix


Pre requisitos:
# yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI 
perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple perl-IO-Socket-SSL

Nuevas versiones: 

# yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI
perl-DBI perl-Config-General perl perl-HTTP-Server-Simple perl-IO-Socket-SSL
perl-MIME-Lite perl-XML-Simple


La manera correcta de actualitzar es usando

rpm -Uvh monitorix*.rpm
Arrancar el servicio

systemctl start monitorix

Habilitar inicio arranque sistema

    systemctl enable monitorix


Verificar servicio:

systemctl status monitorix 

Requerimientos:

  • Servidor web con soporte CGI  (Apache, Nginx, lighttpd, etc.) (Opcional a partir de la versión 3.0.0)
  • Perl
  • Perl-CGI
  • Perl-MailTools
  • Perl-MIME-Lite
  • Perl-libwww
  • Perl-DBI
  • Perl-XML-Simple
  • Perl-Config-General
  • RRDtool y sus enlaces a Perl (perl-rrdtool or rrdtool-perl)

 A partir de la versión 3.0.0 en adelante ya no necesita un servidor web externo para funcionar, ya lleva un servidor embedido (HTTP server built-in) para funcionar.

Instalar el rpm para CentOS y derivados:
rpm -ivh http://www.monitorix.org/monitorix-3.5.1-1.noarch.rpm
Arrancar el servicio:
service monitorix start
Si algo falla podemos mirar el fichero /var/log/monitorix en busca de errores o warnings:

Sun Jun 8 12:19:43 2014 - Starting Monitorix version 3.5.1 (pid 9617).

Configuración


El fichero de configuración /etc/monitorix.conf

 Podemos activar los gráficos Y (yes), N (no)
# Graphs (de)activation
# -----------------------------------------------------------------------------
our %GRAPH_ENABLE = (
    "system"    => "Y",
    "kern"        => "Y",
    "proc"        => "Y",
    "hptemp"    => "N",
    "lmsens"    => "Y",
    "nvidia"    => "N",
    "disk"        => "Y",
    "fs"        => "Y",
    "net"        => "Y",
    "netstat"        => "Y",
    "process"        => "Y",
    "serv"        => "Y",
    "mail"        => "N",
    "port"        => "Y",
    "user"        => "Y",
    "apache"    => "Y",
    "nginx"        => "N",
    "lighttpd"    => "N",
    "mysql"        => "Y",
    "squid"        => "N",
    "nfss"        => "N",
    "nfsc"        => "N",
    "bind"        => "N",
    "ntp"        => "N",
    "fail2ban"    => "N",
    "icecast"    => "N",
    "int"        => "Y",
);
 En la web oficial del proyecto están explicados todos los parámetros de configuración:

http://www.monitorix.org/documentation.html

En las nuevas versiones el fichero de configuración se encuentra en /etc/monitorix/monitorix.conf

# Graphs (de)activation
# -----------------------------------------------------------------------------

system = y
kern = y
proc = y
hptemp = n
lmsens = y
nvidia = n
disk = y
fs = y
net = y
netstat = y
process = y
serv = y
mail = y
port = y
user = y
ftp = n
apache = y
nginx = n
lighttpd = n
mysql = y
squid = n
nfss = n
nfsc = n
bind = y
ntp = n
fail2ban = y
icecast = n
raspberrypi = n
phpapc = y
memcached = n
apcupsd = n
wowza = n
int = y
Opciones interesantes de configuración:

# habilitar vista de la última hora
enable_hourly_view = y
# guardar hasta 5 años histórico
max_historic_years = 5

Configuración con Apache 2.x  2.2.x 2.4.x

Existe un fichero de ejemplo en:

/usr/share/doc/monitorix/monitorix-apache.conf
#
# Monitorix is a lightweight system monitoring tool
#

Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi

<Directory /var/lib/monitorix/www/>
	<IfModule mod_authz_core.c>
		# Apache 2.4
		Require all denied
		Require ip 127.0.0.1
	</IfModule>
	<IfModule !mod_authz_core.c>
		# Apache 2.2
		Order deny,allow
		Deny from all
		Allow from 127.0.0.1
	</IfModule>
</Directory>

<Directory /var/lib/monitorix/www/cgi/>
        DirectoryIndex monitorix.cgi
        Options ExecCGI
</Directory>

# Apache rules to restrict access to Monitorix:
# Don't forget to add <username> in .htpasswd with the 'htpasswd' command.
#
#<Directory "/var/lib/monitorix/www">
#    Options Indexes Includes FollowSymLinks
#    <IfModule mod_authz_core.c>
#       # Apache 2.4
#       Require all denied
#       Require ip 127.0.0.1
#    </IfModule>
#    <IfModule !mod_authz_core.c>
#       # Apache 2.2
#       Order deny,allow
#       Deny from all
#       Allow from 127.0.0.1
#    </IfModule>
#    AllowOverride None
#    AuthUserFile  /etc/httpd/conf/.htpasswd
#    AuthGroupFile /dev/null
#    AuthName      "Monitorix: Restricted access, sorry."
#    AuthType      Basic
#    Require user  <username>
#    Satisfy Any
#</Directory>

Añadir al fichero httpd.conf las siguientes líneas (ver fichero monitorix-apache.conf)

Versiones monitorix antiguas 2.x

Alias /monitorix /usr/share/monitorix
ScriptAlias /monitorix-cgi /usr/share/monitorix/cgi-bin

        DirectoryIndex monitorix.cgi
        Options ExecCGI
        order deny,allow
        deny from all
        allow from all
        allow from 127.0.0.1

Configuración para Apache nuevas versiones Monitorix 3.x

Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi

        DirectoryIndex monitorix.cgi
        Options ExecCGI
Order deny,allow
Deny from all
        allow from all
        allow from 127.0.0.1
Y recordar deshabilitar el servidor httpd built n añadiendo enabled = n o saldrá un error 403 forbidden


enabled = n
host =
port = 8080
user = nobody
group = nobody
log_file = /var/log/monitorix-httpd
hosts_deny =
hosts_allow =

enabled = n
msg = Monitorix: Restricted access
htpasswd = /var/lib/monitorix/htpasswd
Es posible configurar apache como un proxy reverso (reverse proxy) para servir las imágenes del http built del puerto 8080

Ejemplo que nos dan:
<VirtualHost *:80>
     ServerAdmin me@mydomain.com
     ServerName monitorix.mydomain.com
     ProxyRequests Off

     # setup the proxy
     <Proxy *>
         Order allow,deny
         Allow from all
     </Proxy>
     ProxyPass  "/" "http://mydomain.com:8080/"
     ProxyPassReverse "/" "http://mydomain.com:8080/"
</VirtualHost>
Es posible hacer que el proxy sea transparente y no muestre el puerto 8080

<VirtualHost *:80>
     ServerAdmin alex@elhacker.net
     ServerName monitorix.elhacker.net
     ProxyRequests Off
     CustomLog /home/alex/logs/monitorix_access_log combined
     ErrorLog  /home/alex/logs/monitorix_error_log
     # para esconder el :8080 de las img generadas por monitorix
     ProxyPreserveHost On
     # setup the proxy
     <Proxy *>
         Order allow,deny
         Allow from all
     </Proxy>
     # 8080
     # mejor en local mas rápido y fiable
     ProxyPass  "/" "http://localhost:8080/"
     ProxyPassReverse "/" "http://localhost:8080/"
</VirtualHost>

Nuevo módulo (netstat.pm) permite monitorizar estadísticas de red con netstat el tráfico ipv4 y ipv6

Los gráficos (imágenes) se guardan por defecto en la carpeta:
/var/lib/monitorix/www/imgs
Puedes guardar un histórico e Monitorix haciendo una copia de seguridad de dicha carpeta.

Monitorizar Conexiones Tráfico de Red

con el comando ss o netstat
  • Established
  • Closed
  • Listen
  • Syn_sent
  • Syn_recv (muy útil para ver ataques DDoS syn-flood)
  • fin_wait1
  • fin_wait2
  • Closing IPV4-IPV6
  • Time_wait IPV4-IPV6
  • Estadísticas UDP
  •  
    Ejemplo Gráfica netstat = y

Nuevo módulo Process statistics (process.pm) a partir de la versión > 3.5.1 que permite monitorizar estadísticas de procesos directamente desde el Kernel.

Ejemplo gráfica  process    = y




Para este gráfico se requiere un núcleo Linux versión 2.6.20, al menos, para apoyar el proceso de contabilidad de E / S. Sin embargo en algunos sistemas con kernels más antiguos también podría funcionar

Permite monitorizar:

  • Tiempo de CPU usado (CPU time usage)
  • Memoria RAM usada (Memory usage)
  • Uso de disco (Disk usage) 
  • Tráfico de red usado (Network usage)
  • Ficheros abiertos (Opened files)
  • Número de hilos ( Number of threads)
  • Context switches
  • Número de procesos (Number of processes)

Máximo 10 procesos por list (grupo)

# PROCESS graph
# -----------------------------------------------------------------------------

 
  0 = httpd, sshd, ntopng, mysqld, proftpd, fail2ban-server, miniserv.pl, sendmail, named, ts3server_linux
              1 =  psybnc, scp, tshark, dumpcap, awstats.pl
 
 
  httpd = Apache
  proftpd = FTP
#  imap = Dovecot
  fail2ban-server = fail2ban
              miniserv.pl = webmin
  named = Bind
              ts3server_linux = TeamSpeak3
              psybnc = irc
              scp = backup
              awstats.pl = awstats
 
 rigid = 2, 0, 0, 0, 0, 0, 0, 0
 limit = 100, 1000, 1000, 1000, 1000, 1000, 1000, 1000

Para saber el nombre del proceso
ps -eo pid,comm,command

El comm es el ejecutable, el nombre del "process" que debemos añadir en list

Ejemplos Gráficas


Gráfico carga CPU (System Load) top



Gráfico tráfico puerto 80 HTTP (Apache) semanal




Gráfica Apache Workers diaria




Gráfica APC (Alternative PHP Cache statistics)




Gráfico MySQL (queries per second qps) semanal





BIND (DNS)



Podéis ver un ejemplo real en funcionamiento del servidor de warzone.elhacker.net en:


Relacionado: