Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Logstash Port 514 Permission denied

Logstash Port 514 Permission denied

Tabla de contenidos

Al intentar iniciar el servicio de logstash con el puerto 514 en escucha podemos apreciar el siguiente problema.

CODE
[2022-11-29T10:30:18,202][ERROR][logstash.inputs.udp      ][main][dec7ab89e06b39e0468c97b39e3a559eccb915944cc44830732c52de29f9852a] UDP listener died {:exception=>#<Errno::EACCES: Permission denied - bind(2) for "0.0.0.0" port 514>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:200:in `bind'", "/usr/share/logstash/vendor/bundle/jruby/2.6.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:129:in `udp_listener'", "/usr/share/logstash/vendor/bundle/jruby/2.6.0/gems/logstash-input-udp-3.5.0/lib/logstash/inputs/udp.rb:81:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:411:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:402:in `block in start_input'"]}

Para poder solventar este problema tenemos varias opciones: Iniciar logstrash como root, dar permisos al proceso mediante setcap para que este proceso pueda escuchar por este puerto o cambiar de puerto.

En este post vamos a ver la segunda opción, agregaremos el servicio java de logstrash para que pueda escuchar por el puerto 514

CODE
setcap CAP_NET_BIND_SERVICE=+eip /usr/share/logstash/jdk/bin/java

Intentamos iniciar el servicio

CODE
systemctl start logstrash

Al intentar levantar el servicio vemos que no inicia y apreciamos el sisuigente error en el fichero /var/log/syslog

CODE
Nov 29 10:42:38 localhost logstash[76782]: /usr/share/logstash/jdk/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

mapeamos la librería

CODE
 ln -s /usr/share/logstash/jdk/lib/libjli.so /usr/lib/

Iniciamos el puerto

CODE
systemctl start logstrash

Comprobamos que iniciaron correctamente los puertos

BASH
 lsof -i -n | egrep 'syslog'
rsyslogd  15918                           syslog   10u  IPv4  168710      0t0  UDP *:56584
java      98717                         logstash  116u  IPv4  860435      0t0  UDP *:syslog

En caso de querer quitar estos permisos, simplemente ejecutamos el siguiente comando:

CODE
setcap CAP_NET_BIND_SERVICE=-eip /usr/share/logstash/jdk/bin/java

:wq!