본문 바로가기
IT기타/기타

Logstash Permission denied - bind Error 발생시

by Joe! 2019. 12. 11.
반응형

Logstash Permission denied - bind Error 발생시

 

Linux System에서 TCP 및 UDP 1- 1024 Prot는 root 권한 사용자만 사용 가능하여 일반 사용자 권한으로 logstash 실행시에 1024 이하 Port사용시 정상적으로 해당 포트를 오픈할 수 없는 문제 때문에 아래와 같은 에러가 발생합니다.

 

[2019-12-06T16:16:37,724][ERROR][logstash.inputs.udp      ][main] UDP listener died {:exception=>#<Errno::EACCES: Permission denied - bind(2) for "0.0.0.0" port 514>,

 

해결 방안은 크게 아래 3가지가 있습니다.

 

1) logstash를 root 권한으로 실행하기
2) setcap을 사용하여 Java에서 1024이하 포트 번호를 사용할 수 있도록 권한 부여. 
3) iptables 또는 Proxy를 통하여 권한이 있는 다른 포트로 Forwording.

 

1번의 경우 가장 간단한 해결방법이긴 하지만 잠깐 TEST를 위한 사용이 아니라면 보안상의 이유로 추천하지 않습니다.

logstash 관련 보안 취약점이 발견될 경우 해커는 해당 취약점을 악용하여 Linux System에서 root 권한으로 공격 코드를 실행 할 수 있습니다.

 

3번의 경우 1번과 다르게 크게 보안상 이슈될 만한 부분은 없지만 다른 해결 방법이 비해 설정이 복잡하며 향후 관리상의 이슈가 발생할 가능성도 있기 때문에 setcap명령을 통하여 java에 1024이하 port 사용에 대한 권한을 부여하는 2번 방법을 추천합니다.

 

권한 부여를 위한 명령어의 예는 아래와 같으며

setcap cap_net_bind_service=+epi /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
setcap cap_net_bind_service=+epi /usr/lib/jvm/java-1.7.0-openjdk-amd64/jre/bin/java

 

명령어 마지막 부분에 java 경로는 실제로 서버에 java가 설치된 경로를 확인하여 변경하시면 됩니다.

 

명령어 실행 후 logstash를 실행하면 정상적으로 port를 open하는 것을 확인 할 수 있습니다.

 

만약 Java 경로를 모른다면 find 명령을 활용하세요.

반응형

댓글