사실, 이 포스팅은 ELK 셋팅인 듯 하지만, 70%는 방화벽을 다루는 것입니다. 그리고 나머지 절반은 로그를 보는 포스팅입니다. 저는 ubuntu 20.04 LTS를 쓰고 있습니다. 그리고 elk 버전은 7.9.3입니다. 다른 os에서는 방화벽을 설정하는 방법이 다를 수도 있습니다. (ex. firewall-cmd)

 


 먼저, client에 대한 정보를 보겠습니다.

 

 

 ipconfig를 보시면 무선 LAN 어댑터가 눈에 들어오는데요. IPv4 주소가 위와 같습니다. 서브넷은 255.255.255.0이니 /24겠군요.

 

 

 우분투 서버의 정보입니다. inet 주소는 위와 같고, netmask는 /24입니다. 그러면, 172.30.1.0/24를 허용하면, 172.30.1.x가 모두 허용된다는 이야기입니다.

 

 

 명령어는 위와 같이 입력하면 됩니다. 그리고 ufw reload를 입력하면, 방화벽을 다시 로드하게 됩니다.

 

 

 status를 보게 되면, 5601과 9200, 5044에 대해서 어디서 출발한 것에 대해서만 ALLOW를 하는지 보여줍니다. 각 줄마다 '규칙'이 있습니다. [] 안에 있는 것은 번호를 의미하는데, 규칙을 삭제할 때 유용하게 쓰일 수 있습니다.

 

 

 delete NUM을 입력하면 앞에 붙은 NUM번 규칙이 삭제 됩니다. 9200번 포트에 대한 기존의 규칙이 있었는데 바꾸고 싶다면, 삭제하고 새롭게 규칙을 추가한 다음에, reload를 하셔도 됩니다.

 

 

 status verbose를 입력하면, 기본 설정과 활성화 상태를 보여줍니다. 내부로 들어오는 것은 default가 deny로 되어 있네요. 그러면 9200번 포트에 대해서 기본적으로는 deny이지만, 172.30.1.0/24에 대해서는 ALLOW가 된다. 정도로만 해석하셔도 되겠네요.

 


elasticsearch.yml 파일을 열어봅시다.

 

 저는 여기서 network.host랑 discovery.seed_host를 0.0.0.0으로 바꿔주었습니다. 공식 문서에 따르면 이것은 모든 ip와 bind가 된다는 것을 의미합니다.

 

 

 그리고 elasticsearch를 재시작 하였습니다.

 

 

 서버의 주소 172.30.1.50을 치면 잘 접속이 됩니다. 그런데 클라이언트 컴퓨터에서 서버의 공인 ip 주소:9200을 치면 접속이 되지 않습니다. 이건 왜 그런지 모르겠습니다. 우분투에서는 ufw.log가 로그들을 남기는데요. 이 로그들을 봅시다.

 

 

 무엇인지는 모르겠지만 59나 39나 36으로 시작하는 것은 외부 IP일 듯 하네요. 그리고, 210으로 시작하는 것이 제 주소인데요. DST인, 수신자가 저인 셈입니다. DPT는, 보나 마나 destination port 정도로 보시면 되겠네요. 제 서버에서 elasticsearch는 9200번 포트를 쓰니까 ufw.log에서 DPT=9200을 패턴으로 찾으면 되겠네요.

 

 그런데, 이것조차도 너무 기니까, 최근 3개의 시도만 보겠습니다. tail -n 3은 제일 밑의 3개 줄만 출력해주는 명령입니다.

 

 

 그러면, 중간에 SRC가 125로 시작하는 것을 볼 수 있는데요. 이것은 제 클라이언트, Window 10 컴퓨터의 공인 IP 주소입니다. 210. x. x. x로 쳤을 때, 중간에 어떤 일이 일어났는지는 모르겠지만, 125. x. x. x로 접근하려고 했기 때문에, ufw에 의해서 BLOCKED가 되었다는 사실을 알 수 있었습니다.