웹사이트 검색

Ubuntu 14.04에서 Graylog2를 설치하고 로그를 중앙 집중화하는 방법


소개

이 자습서에서는 Graylog2(v0.20.2)의 설치를 다루고 중앙 위치에서 시스템의 syslog를 수집하도록 구성합니다. Graylog2는 SSH 로그인 및 비정상적인 활동 모니터링에서 애플리케이션 디버깅에 이르기까지 많은 사용 사례가 있는 강력한 로그 관리 및 분석 도구입니다. Elasticsearch, Java, MongoDB 및 Scala를 기반으로 합니다.

참고: 이 튜토리얼은 Graylog2의 오래된 버전을 위한 것입니다. 여기에서 새 버전을 사용할 수 있습니다. Ubuntu 14.04에 Graylog 1.x를 설치하는 방법.

Graylog2를 사용하여 다양한 로그를 수집하고 모니터링할 수 있지만 이 자습서의 범위는 syslog 수집으로 제한됩니다. 또한 Graylog2의 기본 사항을 시연하고 있기 때문에 단일 서버에 모든 구성 요소를 설치할 것입니다.

Graylog2 구성 요소 정보

Graylog2에는 네 가지 주요 구성 요소가 있습니다.

  • Graylog2 서버 노드: 메시지를 수신 및 처리하고 다른 모든 비서버 구성 요소와 통신하는 작업자 역할을 합니다. 성능은 CPU에 따라 다릅니다.
  • Elasticsearch 노드: 모든 로그/메시지를 저장합니다. 성능은 RAM 및 디스크 I/O에 따라 다릅니다.
  • MongoDB: 메타데이터를 저장하고 로드가 많지 않음
  • 웹 인터페이스: 사용자 인터페이스

다음은 Graylog2 구성 요소의 다이어그램입니다(메시지는 다른 서버에서 전송됨).

매우 기본적인 설정의 경우 모든 구성 요소를 동일한 서버에 설치할 수 있습니다. 대규모 프로덕션 설정의 경우 일부 고가용성 기능을 설정하는 것이 좋습니다. 서버, Elasticsearch 또는 MongoDB 구성 요소가 중단되면 Graylog2가 중단 중에 생성된 메시지를 수집하지 않기 때문입니다.

전제 조건

이 튜토리얼에서 설명하는 설정에는 최소 2GB의 RAM이 있는 Ubuntu 14.04 VPS가 필요합니다. 또한 루트 액세스 권한이 필요합니다(Ubuntu 14.04에서 초기 서버 설정의 1-4단계).

RAM이 2GB 미만인 VPS를 사용하는 경우 모든 Graylog2 구성 요소를 시작할 수 없습니다.

소프트웨어 설치를 시작하겠습니다!

몽고DB 설치

MongoDB 설치는 간단하고 빠릅니다. 다음 명령을 실행하여 MongoDB 공개 GPG 키를 apt로 가져옵니다.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

MongoDB 소스 목록을 만듭니다.

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

적절한 패키지 데이터베이스를 업데이트하십시오.

sudo apt-get update

다음 명령을 사용하여 안정적인 최신 MongoDB 버전을 설치합니다.

sudo apt-get install mongodb-org

이제 MongoDB가 시작되어 실행 중이어야 합니다. Java 7 설치로 이동하겠습니다.

자바 7 설치

Elasticsearch에는 Java 7이 필요하므로 지금 설치하겠습니다. Elasticsearch.org에서 권장하는 Oracle Java 7을 설치하겠습니다. 그러나 해당 경로로 이동하기로 결정한 경우 OpenJDK와 잘 작동합니다.

apt에 Oracle Java PPA를 추가합니다.

sudo add-apt-repository ppa:webupd8team/java

적절한 패키지 데이터베이스를 업데이트하십시오.

sudo apt-get update

다음 명령을 사용하여 안정적인 최신 버전의 Oracle Java 7을 설치하고 표시되는 라이선스 계약에 동의합니다.

sudo apt-get install oracle-java7-installer

이제 Java 7이 설치되었으므로 Elasticsearch를 설치해 보겠습니다.

Elasticsearch 설치

Graylog2 v0.20.2에는 Elasticsearch v.0.90.10이 필요합니다. 다음 명령을 사용하여 다운로드하고 설치합니다.

cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb
sudo dpkg -i elasticsearch-0.90.10.deb

Elasticsearch cluster.name 설정을 변경해야 합니다. Elasticsearch 구성 파일을 엽니다.

sudo vi /etc/elasticsearch/elasticsearch.yml

cluster.name을 지정하는 섹션을 찾습니다. 주석을 제거하고 기본값을 "graylog2\로 바꾸면 다음과 같이 표시됩니다.

cluster.name: graylog2

또한 Elasticsearch 인스턴스(포트 9200)에 대한 외부 액세스를 제한하여 외부인이 데이터를 읽거나 HTTP API를 통해 Elasticseach 클러스터를 종료할 수 없도록 해야 합니다. network.bind_host를 지정하는 행을 찾아 다음과 같이 주석 처리를 제거하십시오.

network.bind_host: localhost

그런 다음 파일의 어딘가에 다음 줄을 추가하여 동적 스크립트를 비활성화합니다.

script.disable_dynamic: true

저장하고 종료합니다. 다음으로 Elasticsearch를 다시 시작하여 변경 사항을 적용합니다.

sudo service elasticsearch restart

몇 초 후 다음을 실행하여 Elasticsearch가 제대로 실행되고 있는지 테스트합니다.

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

이제 Elasticsearch가 실행 중이므로 Graylog2 서버를 설치해 보겠습니다.

Graylog2 서버 설치

필요한 다른 소프트웨어를 설치했으므로 이제 Graylog2 서버를 설치하겠습니다. /opt에 Graylog2 Server v0.20.2를 설치합니다. 먼저 다음 명령을 사용하여 Graylog2 아카이브를 /opt에 다운로드합니다.

cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz

그런 다음 아카이브를 추출하십시오.

sudo tar xvf graylog2-server-0.20.2.tgz

디렉터리 이름을 단순화하기 위해 새로 생성된 디렉터리에 대한 심볼릭 링크를 생성해 보겠습니다.

sudo ln -s graylog2-server-0.20.2 graylog2-server

예제 구성 파일을 /etc의 적절한 위치에 복사합니다.

sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf

암호 비밀 키를 생성하는 데 사용할 pwgen을 설치합니다.

sudo apt-get install pwgen

이제 admin 암호와 비밀 키를 구성해야 합니다. 비밀번호 비밀 키는 graylog2.conf에서 password_secret 매개변수로 구성됩니다. 다음 두 명령을 사용하여 임의 키를 생성하고 Graylog2 구성에 삽입할 수 있습니다.

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf

admin 암호는 원하는 암호의 shasum을 생성하고 Graylog2 구성 파일의 root_password_sha2 매개변수에 할당하여 할당됩니다. 다음 명령을 사용하여 원하는 암호의 shasum을 만들고 강조 표시된 "암호\를 자신의 암호로 바꿉니다. sed 명령은 이를 Graylog2 구성에 삽입합니다.

<예비>

이제 관리자 암호가 설정되었으므로 Graylog2 구성을 열어 몇 가지 사항을 변경해 보겠습니다.

sudo vi /etc/graylog2.conf

위의 단계에서 실행한 명령으로 인해 password_secretroot_password_sha2에 임의의 문자열이 있음을 확인할 수 있습니다. 이제 Graylog2 웹 인터페이스가 서버와 통신하는 방법인 rest_transport_uri를 구성합니다. 모든 구성 요소를 단일 서버에 설치하므로 값을 127.0.0.1 또는 localhost로 설정하겠습니다. rest_transport_uri를 찾아 주석 처리를 해제하고 다음과 같이 값을 변경합니다.

<예비>

다음으로 Elasticsearch 샤드(이 서버에서 실행 중)가 하나만 있으므로 elasticsearch_shards 값을 1로 변경합니다.

<예비>

저장하고 종료합니다. 이제 Graylog2 서버가 구성되어 시작할 준비가 되었습니다.

옵션: 테스트하려면 다음 명령을 실행하십시오.

sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug

당신은 많은 출력을 볼 수 있습니다. 다음 줄과 유사한 출력이 표시되면 Graylog2 서버가 올바르게 구성되었음을 알 수 있습니다.

2014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/>
2014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running.

CTRL-C를 눌러 테스트를 종료하고 셸로 돌아갑니다.

이제 Graylog2 초기화 스크립트를 설치하겠습니다. graylog2ctl을 /etc/init.d에 복사합니다.

sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2

다음 두 sed를 실행하여 Graylog2 로그를 /var/log에 넣고 /opt/graylog2-server에서 Graylog2 서버 JAR 파일을 찾도록 시작 스크립트를 업데이트합니다. 명령:

<예비>

다음으로 시작 스크립트를 설치합니다.

sudo update-rc.d graylog2 defaults

이제 service 명령으로 Graylog2 서버를 시작할 수 있습니다.

sudo service graylog2 start

다음 단계는 Graylog2 웹 인터페이스를 설치하는 것입니다. 지금 해보자!

Graylog2 웹 인터페이스 설치

다음 명령을 사용하여 /opt에 Graylog2 v.0.20.2 웹 인터페이스를 다운로드하고 설치합니다.

cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz
sudo tar xvf graylog2-web-interface-0.20.2.tgz

디렉터리 이름을 단순화하기 위해 새로 생성된 디렉터리에 대한 심볼릭 링크를 생성해 보겠습니다.

sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface

다음으로 웹 인터페이스의 비밀 키인 graylog2-web-interface.confapplication.secret 매개변수를 구성하려고 합니다. Graylog2 서버 구성에서 했던 것처럼 다른 키를 생성하고 다음과 같이 sed와 함께 삽입합니다.

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

이제 다음 명령을 사용하여 웹 인터페이스 구성 파일을 엽니다.

sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

이제 웹 인터페이스의 구성을 업데이트하여 graylog2-server.uris 매개변수를 지정해야 합니다. 이것은 서버 REST URI의 쉼표로 구분된 목록입니다. Graylog2 서버 노드가 하나만 있으므로 값은 Graylog2 서버 구성(예: "http://127.0.0.1:12900/”)의 rest_listen_uri 값과 일치해야 합니다.

<예비>

이제 Graylog2 웹 인터페이스가 구성되었습니다. 테스트를 위해 시작해 보겠습니다.

sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface

다음 두 줄이 표시되면 제대로 시작되었음을 알 수 있습니다.

[info] play - Application started (Prod)
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

웹 인터페이스를 종료하려면 CTRL-C를 누르십시오. 이제 시작 스크립트를 설치하겠습니다. 직접 만들거나 이 자습서용으로 만든 것을 다운로드할 수 있습니다. 홈 디렉토리에 스크립트를 다운로드하려면 다음 명령을 사용하십시오.

cd ~; wget https://assets.linux-console.net/articles/graylog2/graylog2-web

다음으로 /etc/init.d에 복사하고 소유권을 root로 변경하고 권한을 755로 변경합니다.

sudo cp ~/graylog2-web /etc/init.d/
sudo chown root:root /etc/init.d/graylog2-web
sudo chmod 755 /etc/init.d/graylog2-web

이제 다음 명령을 사용하여 웹 인터페이스 초기화 스크립트를 설치할 수 있습니다.

sudo update-rc.d graylog2-web defaults

Graylog2 웹 인터페이스를 시작합니다.

sudo service graylog2-web start

이제 Graylog2 웹 인터페이스를 사용할 수 있습니다. 지금 해보자.

Syslog 메시지를 수신하도록 Graylog2 구성

Graylog2 웹 인터페이스에 로그인

선호하는 브라우저에서 VPS 공용 IP 주소의 포트 9000으로 이동합니다.

<예비>

로그인 화면이 나타납니다. 사용자 이름으로 "admin”을 입력하고 이전에 설정한 관리자 암호를 암호로 입력합니다.

로그인하면 다음과 같은 내용이 표시됩니다.

깜박이는 빨간색 "1\은 알림입니다. 클릭하면 실행 중인 입력이 없는 노드가 있다는 메시지가 표시됩니다. UDP를 통해 syslog 메시지를 수신하기 위한 입력을 추가해 보겠습니다. 지금.

Syslog UDP 입력 만들기

syslog 메시지를 수신하기 위한 입력을 추가하려면 오른쪽의 시스템 메뉴에서 입력을 클릭하십시오.

이제 드롭다운 메뉴에서 Syslog UDP를 선택하고 Launch new input을 클릭합니다.

"Launch a new input Syslog UDP\ 창이 팝업됩니다. 다음 정보를 입력하십시오.

  • 제목: syslog
  • 포트: 514
  • 바인드 주소: gl2_private_IP

그런 다음 시작을 클릭합니다.

이제 다음과 같이 로컬 입력 실행 섹션에 "syslog\라는 입력이 표시되어야 합니다(그리고 "실행 중\이라고 적힌 녹색 상자가 있어야 함).

이제 Graylog2 서버가 서버에서 syslog 메시지를 수신할 준비가 되었습니다. 이제 syslog 메시지를 Graylog2로 보내도록 서버를 구성하겠습니다.

Graylog2 서버로 보내도록 rsyslog 구성

Graylog2에 syslog 메시지를 보내려는 모든 서버에서 다음 단계를 수행하십시오.

/etc/rsyslog.d에 rsyslog 구성 파일을 만듭니다. 우리는 90-graylog2.conf라고 부를 것입니다:

sudo vi /etc/rsyslog.d/90-graylog2.conf

이 파일에서 다음 행을 추가하여 syslog 메시지를 Graylog2 서버로 보내도록 rsyslog를 구성합니다(gl2_private_IP를 Graylog2 서버의 사설 IP 주소로 대체).

<예비>

저장하고 종료합니다. 이 파일은 지금부터 rsyslog 구성의 일부로 로드됩니다. 이제 변경 사항을 적용하려면 rsyslog를 다시 시작해야 합니다.

sudo service rsyslog restart

모니터링하려는 모든 서버에서 rsyslog 구성을 완료한 후 Graylog2 웹 인터페이스로 돌아가겠습니다.

Graylog2 소스 보기

선호하는 브라우저에서 VPS 공용 IP 주소의 포트 9000으로 이동합니다.

<예비>

상단 표시줄에서 소스를 클릭합니다. rsyslog를 구성한 모든 서버 목록이 표시됩니다. 다음은 표시되는 예입니다.

소스의 호스트 이름은 왼쪽에 있고 Graylog2에서 수신한 메시지의 수는 오른쪽에 있습니다.

Graylog2 데이터 검색

Graylog2가 얼마 동안 메시지를 수집하도록 한 후 메시지를 검색할 수 있습니다. 예를 들어 "sshd\를 검색하여 서버에서 어떤 종류의 SSH 활동이 발생하는지 확인하겠습니다. 다음은 결과의 스니펫입니다.

보시다시피 예제 검색 결과는 다양한 서버에 대한 sshd 로그와 실패한 많은 루트 로그인 시도를 나타냅니다. 결과는 다를 수 있지만 권한이 없는 사용자가 서버에 액세스하려는 방법을 포함하여 많은 문제를 식별하는 데 도움이 될 수 있습니다.

모든 소스에 대한 기본 검색 기능 외에도 특정 호스트 또는 특정 시간 프레임의 로그를 검색할 수 있습니다.

Graylog2의 데이터를 통해 검색하는 것은 예를 들어 사건이 발생한 후 서버 또는 여러 서버의 로그를 검토하려는 경우에 유용합니다. 중앙 집중식 로깅을 사용하면 발생한 모든 이벤트를 보기 위해 여러 서버에 로그인할 필요가 없기 때문에 관련 사건을 더 쉽게 연관시킬 수 있습니다.

검색창 작동 방식에 대한 자세한 내용은 공식 문서인 The Search Bar Explained를 확인하십시오.

결론

이제 Graylog2를 설정했으므로 제공하는 다른 기능을 자유롭게 탐색하십시오. 다른 유형의 로그를 Graylog2로 보내고 추출기를 설정(또는 logstash와 같은 소프트웨어로 로그 형식을 다시 지정)하여 로그를 보다 구조화하고 검색할 수 있도록 만들 수 있습니다. 구성 요소를 분리하고 중복성을 추가하여 Graylog2 환경을 확장하여 성능과 가용성을 높일 수도 있습니다.

행운을 빌어요!

작성: Mitchell Anicas