NtopNG
Desde hace mucho tiempo se viene hablando de las bondades de NtopNG. El portal ElHacker.net la define como "una poderosa herramienta que permite analizar en tiempo real el tráfico de red. Esto te permite evaluar el ancho de banda utilizado por ips o hosts individuales, por puertos, e identificar los protocolos de red más utilizados".
Entre sus características más destacadas tenemos: ordenar el tráfico de red de acuerdo con muchos protocolos; mostrar tráfico de red y IPv4/v6 hosts activos; guardar el disco estadísticas persistentes de tráfico en formato RRD; geolocalizar anfitriones; descubre los protocolos de aplicación mediante el aprovechamiento de NDPI, ntops marco DPI; caracterizar el tráfico HTTP mediante el aprovechamiento de los servicios de caracterización proporcionadas por block; mostrar la distribución del tráfico IP entre los diversos protocolos; analizar el tráfico IP y ordenarla de acuerdo con el origen / destino; matriz de subred Tráfico Mostrar IP (que está hablando con quién?); uso de protocolos IP Reportar ordenados por tipo de protocolo, etc, etc. En fin, una auténtica navaja suiza lo suficientemente buena como para que cualquier sysadmin la considere seriamente en su arsenal de herramientas de monitoreo de red.
Adicionalmente esta aplicación cuenta con una alta frecuencia de actualizaciones, lo que demuestra el constante trabajo de mejoras que realizan sus desarrolladores, y también cuenta con un soporte muy profesional, con un tiempo de respuesta bastante rápido; algo muy raro, tanto en el software libre como el privativo.
Adicionalmente esta aplicación cuenta con una alta frecuencia de actualizaciones, lo que demuestra el constante trabajo de mejoras que realizan sus desarrolladores, y también cuenta con un soporte muy profesional, con un tiempo de respuesta bastante rápido; algo muy raro, tanto en el software libre como el privativo.
Pero (en linux siempre hay un "pero" y NtopNG no es la excepción) no es una aplicación exenta de fallos; aunque, para ser justos, estos fallos, en su mayoría, no son precisamente de NtopNG sino de sus dependencias.
Problemas de Redis
Por ejemplo, redis-server, una dependencia de código abierto de NtopNG, que sirve como almacén de estructura de datos de valores de clave en memoria rápido, a veces causa más problemas de los que podemos manejar.
Hay infinidades de tutoriales en internet sobre cómo instalar NtopNG ( medium, howtoforge, linuxhelp, etc.), pero casi ninguno aborda la gran cantidad de problemas de esta dependencia.
Por ejemplo, redis-server, una dependencia de código abierto de NtopNG, que sirve como almacén de estructura de datos de valores de clave en memoria rápido, a veces causa más problemas de los que podemos manejar.
Hay infinidades de tutoriales en internet sobre cómo instalar NtopNG ( medium, howtoforge, linuxhelp, etc.), pero casi ninguno aborda la gran cantidad de problemas de esta dependencia.
redis bind problem |
La solución más simple es la que propone DigitalOcean, que consiste en reemplazar 127.0.0.1 ::1 por 0.0.0.0 garantizando así que funcione en cualquier escenario (y de paso que no se detenga la instalación de NtopNG). Si no queremos editar el archivo de configuración podemos hacerlo con el comando sed (como dice BunIF). A continuación los comandos de instalación de Redis y NtopNG en secuencia (puede ponerlos en un bash script):
apt -y install redis-server service redis-server stop # systemctl stop redis-server.service sed -i '/^bind/s/bind.*/bind 0.0.0.0/' /etc/redis/redis.conf if [ ! -d /var/run/redis ]; then mkdir -p /var/run/redis && chown redis /var/run/redis; fi service redis-server start # systemctl start redis-server.service wget http://apt.ntop.org/18.04/all/apt-ntop.deb dpkg -i apt-ntop.deb apt update -y aapt install pfring-dkms nprobe ntopng n2disk cento -y
Más problemas
Sin embargo estos no son los únicos problemas de redis. Una vez iniciado genera algunos errores que son tantos que es imposible mencionarlos todos. Para solventarlos hay que agregar algunos parámetros a los archivos de configuración de Linux /etc/security/limits.conf y /etc/sysctl.conf , ejecutando en el terminal:
Sin embargo estos no son los únicos problemas de redis. Una vez iniciado genera algunos errores que son tantos que es imposible mencionarlos todos. Para solventarlos hay que agregar algunos parámetros a los archivos de configuración de Linux /etc/security/limits.conf y /etc/sysctl.conf , ejecutando en el terminal:
sh -c 'echo "httpd soft nofile 4096" >> /etc/security/limits.conf' sh -c 'echo "httpd hard nofile 10240" >> /etc/security/limits.conf' sh -c 'echo "fs.file-max = 100000" >> /etc/sysctl.conf' sh -c 'echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf' sh -c 'echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf'
Se recomienda desactivar IPv6 si no lo va a usar (opcional):
Siguen los problemas
Otro de los problemas que acarrea redis (y que perjudica a NtopNG) son sus constantes caídas. Por esta razón, lo mejor es crear un script vigilante, para que se cerciore que los servicios están levantados y que deje constancia en syslog.
Por ejemplo crearemos un script bash que llamaremos ntopredis-reload.sh en /etc/init.d/:
net.ipv6.conf.all.disable_ipv6 = 1Y activar el NAT (opcional):
# temporal echo 1 > /proc/sys/net/ipv4/ip_forward # default 0 # permanente net.ipv4.ip_forward=1Y finalmente recargar sysctl y sus variables sin reiniciar (con privilegios):
sysctl -p sysctl --systemLo anterior soluciona muchos problemas con redis. Se exceptúa el de hugpages:
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.Que se soluciona parcialmente con el comando explicado anteriormente:
sh -c 'echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf'Y para solucionarlo completamente, puede seguir las instrucciones descritas en stackoverflow.
Siguen los problemas
Otro de los problemas que acarrea redis (y que perjudica a NtopNG) son sus constantes caídas. Por esta razón, lo mejor es crear un script vigilante, para que se cerciore que los servicios están levantados y que deje constancia en syslog.
Por ejemplo crearemos un script bash que llamaremos ntopredis-reload.sh en /etc/init.d/:
#!/bin/bash ### BEGIN INIT INFO # Provides: ntopng-redis # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time. # Description: Enable service provided by daemon. ### END INIT INFO # Ntopng date=`date +%d/%m/%Y" "%H:%M:%S` if [[ `ps -A | grep ntopng` != "" ]];then echo -e "\nONLINE" else echo -e "\n" killall ntopng >/dev/null 2>&1 systemctl start ntopng.service echo "Ntopng start $date" >> /var/log/syslog fi # Redis-Server date=`date +%d/%m/%Y" "%H:%M:%S` if [[ `ps -A | grep redis-server` != "" ]];then echo -e "\nONLINE" else echo -e "\n" killall redis-server >/dev/null 2>&1 systemctl start redis-server.service echo "redis-server start $date" >> /var/log/syslog fi'Y en el terminal ejecutamos el siguiente comando para programarlo en el cron que se ejecute cada 10 minutos:
sudo chmod +x /etc/init.d/ntopredis-reload.sh sudo crontab -l | { cat; echo "*/10 * * * * /etc/init.d/ntopredis-reload.sh"; } | sudo crontab -Falsos positivos
Otro mensaje recurrente de redis es que no encuentra el PID:
En realidad es un falso positivo, ya que con el comando descrito anteriormente:
if [ ! -d /var/run/redis ]; then mkdir -p /var/run/redis && chown redis /var/run/redis; fi
Nos aseguramos de que exista el directorio /var/run/redis, que tenga el propietario correcto y que al reiniciar redis, cree el PID redis-server.pid. Hay una solución para este problema, pero no aplica para todos los sistemas linux. Además, el mensaje desaparece cuando haya conexión con redis.
Redis no inicia
Otro fallo puede ser en el servicio de redis:
Otro fallo puede ser en el servicio de redis:
Failed to start redis.service: Unit redis-server.service is maskedSolución:
systemctl unmask redis-server.serviceFallos de NtopNG
NtopNG en Mozilla Firefox Quantum |
Logs desbordados
Otro problema con NtopNG es que sale el siguiente error cada 3 segundos desbordando syslog:
[Utils.cpp:1713] ERROR: Could not open /var/lib/ntopng/category_lists/Cisco Talos Intelligence.txt.new for write [LuaEngine.cpp:8741] WARNING: Script failure [/usr/share/ntopng/scripts/callbacks/system/housekeeping.lua][/usr/share/ntopng/scripts/lua/modules/lists_utils.lua:259: attempt to index a number value (local 'res')]La solución es actualizar el aplicativo y ejecutar en el terminal:
systemctl stop ntopng rm -rf /var/lib/ntopng/category_lists systemctl start ntopngOtro mensaje, que sale cada segundo y que también puede desbordar los logs, es uno relacionado con la dependencia cento ( flow exporter for lo):
Afortunadamente, con reiniciar NtopNG es suficiente para que el molesto mensaje desaparezca, mostrando un WARNING que la dependencia cento ha expirado el modo demo.
Aviso de segmentación ( large send offload LSO y generic segmentation offload GSO): Un aviso recurrente de NtopNG está relacionado con la segmentación:
Este mensaje es normal si no ha declarado las interfaces de red en el archivo de configuración de NtopNG (switch -i. Ejemplo: -i=wlp1s0 etc). Sin embargo no es imprescindible declarar las interfaces de red, ya que ntopng las detecta automáticamente, así que pueden ignorar este aviso o ejecutar el siguiente comando:
ethtool -K lo gro off gso off tso offPara mayor información vea el issue#2462.
Error: rrd_update_r
Otro error es de permisos sobre la carpeta /var/lib/ntopng/
Problemas de permisos sobre /var/lib/ntopng |
systemctl stop ntopng chown -R ntopng:ntopng /var/lib/ntopng find /var/lib/ntopng -type d -exec chmod 700 {} + find /var/lib/ntopng -type f -exec chmod 600 {} + systemctl restart ntopngInvalid Packet Received
Otro problema de configuración, descrito en el issues #1268, muestra los siguientes mensajes:
invalid packet |
-m="192.168.0.0/24"Cambie el CIDR en dependencia de su red local
Parámetros recomendados
A continuación algunos parámetros recomendados de NtopNG. Ejecute en el terminal:
systemctl stop ntopng.service # para convertir ntopng en un demonio: sh -c 'echo "--daemon" >> /etc/ntopng/ntopng.conf' # para activar la licencia de la comunidad (free): sh -c 'echo "--community" >> /etc/ntopng/ntopng.conf' # para resolver tanto las IPs locales como las que no lo son: sh -c 'echo "--dns-mode 1" >> /etc/ntopng/ntopng.conf' systemctl start ntopng.service
Licencias
Tenga en cuenta que si bien NtopNG tiene una versión comunitaria (free), nprobe y cento (otras dos dependencias de NtopNG) requieren de licenciamiento y trabajan en modo demo, por tanto si cuenta con los recursos económicos, vale la pena adquirir la versión completa de este aplicativo web de monitoreo.
Actualización del script de instalación para Ubuntu 20.04
Para cualquier otra información, consulte Ntop Guides
Tenga en cuenta que si bien NtopNG tiene una versión comunitaria (free), nprobe y cento (otras dos dependencias de NtopNG) requieren de licenciamiento y trabajan en modo demo, por tanto si cuenta con los recursos económicos, vale la pena adquirir la versión completa de este aplicativo web de monitoreo.
Actualización del script de instalación para Ubuntu 20.04
sudo apt -y install redis-server sudo systemctl stop redis-server.service sudo systemctl unmask redis-server.service sudo sed -i '/^bind/s/bind.*/bind 0.0.0.0/' /etc/redis/redis.conf if [ ! -d /var/run/redis ]; then sudo mkdir -p /var/run/redis && sudo chown redis /var/run/redis; fi sudo systemctl start redis-server.service wget http://apt-stable.ntop.org/20.04/all/apt-ntop-stable.deb sudo apt install ./apt-ntop-stable.deb sudo apt update && sudo apt -y upgrade && sudo apt -y install --fix-missing && sudo apt-get -f -y install sudo apt install pfring-dkms nprobe ntopng n2disk cento -y sudo systemctl stop ntopng.service echo "--daemon" | sudo tee -a /etc/ntopng/ntopng.conf echo "--community" | sudo tee -a /etc/ntopng/ntopng.conf echo "--dns-mode 1" | sudo tee -a /etc/ntopng/ntopng.conf echo "-m=192.168.0.0/24" | sudo tee -a /etc/ntopng/ntopng.conf sudo rm -rf /var/lib/ntopng/category_lists sudo chown -R ntopng:ntopng /var/lib/ntopng sudo find /var/lib/ntopng -type d -exec chmod 700 {} + sudo find /var/lib/ntopng -type f -exec chmod 600 {} + sudo systemctl start ntopng.service sudo ethtool -K lo gro off gso off tso off echo "Ntopng: http://localhost:3000 user: admin pass: admin"
Para cualquier otra información, consulte Ntop Guides
Post a Comment