GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak centralizovat správu protokolů pomocí Graylog pomocí Dockeru

Hledáte systém, který dokáže interpretovat vaše protokolové soubory, ukládat je v zabezpečeném prostředí a shromažďovat dobře organizovaná data pro analýzu? No, centralizace správy protokolů pomocí Graylog pomocí Dockeru by mohla být to, co hledáte!

V tomto tutoriálu se naučíte, jak používat Graylog a Docker k vytvoření centralizovaného systému protokolů pro shromažďování dat Syslog z vašeho počítače Ubuntu.

Čtěte dále a začněte centralizovat správu protokolů!

Předpoklady

Tento příspěvek bude návodem krok za krokem. Chcete-li pokračovat, ujistěte se, že máte následující:

  • Dva počítače Ubuntu (jeden hostitel a jeden klient) – Tento výukový program používá Ubuntu 20.04, ale budou fungovat i další distribuce Linuxu.
  • Rsyslog na klientském počítači.
  • Docker nainstalovaný na hostitelském počítači. Verze Dockeru použitá v tomto tutoriálu je 20.10.7
  • Docker-compose nainstalovaný na hostitelském počítači.
  • Aby bylo možné vygenerovat náhodné tajné heslo, musí být na hostitelském počítači nainstalován nástroj Pwgen.

Nasazení Graylog pomocí Docker Compose

Co je vůbec Graylog? Graylog je open-source platforma pro správu protokolů. Graylog může shromažďovat, indexovat a analyzovat strukturovaná a nestrukturovaná data ze zdrojů. Jedním z těchto zdrojů jsou operační systémy v reálném čase.

Před nasazením Graylogu musíte nejprve nainstalovat Graylog na svůj hostitelský počítač pomocí Docker Compose.

Předpokládejme, že používáte cloudový počítač Ubuntu 20.04. V takovém případě budete muset upravit pravidla skupiny zabezpečení nebo brány firewall tak, aby umožňovala následující porty:1514 a 12201 pro připojení TCP i UDP a 9000 pouze pro připojení TCP.

1. Otevřete svého oblíbeného klienta SSH a připojte se k počítači.

2. Dále spusťte níže uvedené příkazy k vytvoření nového adresáře ve vašem domovském adresáři a přepněte se do tohoto adresáře. Adresář můžete pojmenovat, jak chcete. Ale pro toto demo se adresář jmenuje ~/graylog.

mkdir graylog
cd graylog

3. Vytvořte soubor YAML s názvem docker-compose.yml ve vašem ~/graylog adresář, pak naplňte soubor s konfigurací níže. Změny ale zatím neukládejte. Chcete-li chránit přihlašovací údaje Graylog a omezit přístup k vašim datům, budete si muset vygenerovat tajné heslo.

V nově vytvořeném souboru najdete konfiguraci pro nastavení komponent Graylog, MongoDB a ElasticSearch. Graylog vyžaduje, aby všechny tyto komponenty byly nastaveny a spuštěny současně, aby Graylog fungoval efektivně.

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  MongoDB: # Mongodb service
    image: mongo:4.2 # Version of Mongodb docker image 
    volumes:
      - mongo_data:/data/db # Persisted mongodb data
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
  elasticsearch: # ElasticSearch service
		
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 # Version of elasticsearch image
    volumes:
      - es_data:/usr/share/elasticsearch/data # Persisted elasticsearch data 
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      # Unlimited amount of memory set for elasticsearch container
      memlock:
        soft: -1
        hard: -1
		# Resource limit for elasticsearch set to 1 gigabyte
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:4.2 # Version of Graylog docker image
    volumes:
      - graylog_data:/usr/share/graylog/data # Persisted Graylog data
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      - GRAYLOG_WEB_ENDPOINT_URI=http://127.0.0.1:9000/api
		# Command to run as soon as components are started
    entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
		# Containers that Graylog depends on 
    links:
      - mongodb:mongo
      - elasticsearch
    restart: always # Graylog container set to always restart when stopped
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:
  mongo_data:
    driver: local
  es_data:
    driver: local
  graylog_data:
    driver: local

4. Nyní spusťte pwgen příkaz níže pro vygenerování jediného náhodného hesla (-N ) s 96 (-s 96 ) znaky.

pwgen -N 1 -s 96

5. Vaše vygenerované tajné heslo bude vypadat podobně jako heslo níže. Poznamenejte si své tajné heslo, které si nastavíte v docker-compose.yml soubor (krok šest).

6. Vraťte se na docker-compose.yml soubor a nahraďte somepasswordpepper v GRAYLOG_PASSWORD_SECRET s vaším nově vygenerovaným tajným heslem (krok 5). Toto heslo použijete pro šifrování hesla a solení. Bez tohoto tajného hesla se kontejner Graylog nespustí.

7. Spusťte níže uvedený příkaz a vygenerujte SHA2 hash vámi zvoleného hesla. Toto heslo je vyžadováno pro první přihlášení do Graylogu.

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Po zobrazení výzvy zadejte heslo správce podle svého výběru, jak je uvedeno níže, a stiskněte ENTER. Jakmile zadáte heslo, vygeneruje se vaše hashované heslo.

Poznamenejte si své hashované heslo, které jste nastavili v docker-compose.yml soubor (krok osm).

8. Nahraďte hodnotu GRAYLOG_ROOT_PASSWORD_SHA2 proměnná prostředí v docker-compose.yml soubor s heslem hash SHA2, které jste dříve vygenerovali (krok sedm). Uložte změny do docker-compose.yml soubor a ukončete editor.

9. Nakonec spusťte docker-compose up příkaz níže k nasazení kontejnerů ElasticSearch, MongoDB a Graylog Docker v odděleném režimu (-d ). Tento příkaz je stáhne z centra Docker a spustí je jako kontejnery, aby Graylog fungoval správně.

# Starting up MongoDB, ElasticSearch, and Graylog containers in detached mode
sudo docker-compose up -d

Obrázek níže ukazuje, že obrázky MongoDB, ElasticSearch a Graylog Docker byly staženy z centra Docker a spuštěny jako kontejnery.

Změna hodnoty úlomků indexu pro ElasticSearch

Právě jste nasadili Graylog a to je velký krok vpřed v centralizaci správy protokolů. Ale nyní je čas nakonfigurovat Graylog. Hodnotu útržků ElasticSearch změníte v závislosti na tom, kolik uzlů/kontejnerů ElasticSearch používáte.

Shard je jednotka, ve které Elasticsearch distribuuje data kolem více uzlů. Optimální počet úlomků na uzel je jeden.

1. Otevřete svůj oblíbený webový prohlížeč a přejděte na https://:9000 , kde HOST_IP je IP adresa vašeho hostitelského počítače. Pokud vše půjde dobře, dostanete se na níže uvedenou přihlašovací obrazovku Graylogu.

Zadejte admin jako uživatelské jméno a zadejte heslo správce, které jste vytvořili v části „Nasazení Graylog pomocí Docker Compose“ (krok sedm). Pro tento tutoriál je heslo adamtheautomator.

Po přihlášení se vám zobrazí stránka Graylog's Getting Started, jak je uvedeno níže.

2. Dále klikněte na Systém menu —> Indexy , jak je znázorněno níže, pro přístup k Indexům a indexům (krok tři), kde můžete upravit výchozí sadu indexů.

3. Klikněte na Upravit ke správě výchozí sady indexů Graylog a změně hodnoty fragmentu ElasticSearch. Výchozí hodnota pro fragmenty ElasticSearch je čtyři a budete to muset změnit (krok čtyři).

4. Nakonec změňte počet fragmentů ElasticSearch na jeden (1 ), protože používáte pouze jeden uzel/kontejner ElasticSearch, a klikněte na Uložit v dolní části stránky.

Nastavení Graylogu pro shromažďování protokolů ze Syslogu

Právě jste nakonfigurovali Graylog změnou hodnoty pro indexové fragmenty pro ElasticSearch. Ale budete také muset nastavit Graylog, aby shromažďoval data protokolu ze Syslog na klientském počítači. Jak? Vstupy Graylog nastavíte tak, aby přijímaly data protokolu odesílaná z vašeho klientského počítače přes Syslog pro analýzu v hostitelském počítači.

Díky Syslogu jako standardnímu síťovému protokolovacímu protokolu můžete do Graylogu přenášet zprávy událostí vašeho klientského počítače nebo protokolová data.

1. Klikněte na Systém menu —> Vstupy pro přístup k Vstupům stránku, kde nastavíte vstup Syslog UDP.

2. Vyhledejte a vyberte Syslog UDP ve vyhledávacím poli, jak je znázorněno níže, a poté klikněte na Spustit nový vstup .

3. Nakonec nakonfigurujte nový vstup Syslog UDP pomocí následujícího a klikněte na Uložit ve spodní části vyskakovacího okna, abyste zachovali a použili změny:

  • Vyberte svůj uzel z Uzel rozevíracím seznamu.
  • Nastavte Název na jakékoli slovo, které si přejete. Název této ukázky je syslog .
  • Nastavte Vazat adresu na 0.0.0.0, takže Graylog může poslouchat příchozí události kdekoli.
  • Nastavte Port k portu Syslog UDP 1514 jak je definováno v docker-compose.yml soubor pod Syslog UDP .

Níže uvidíte, že vstup Syslog UDP běží jako součást Místních vstupů po konfiguraci.

Konfigurace Rsyslog pro odesílání dat Syslog do Graylog

Nastavili jste vstup Syslog UDP pro příjem dat odeslaných z vašeho klientského počítače, ale jak odešlete data do Graylogu? Rsyslog to udělá!

Vytvoříte konfigurační soubor pro Rsyslog, který přenese vaše data Syslog z vašeho klientského počítače do Graylog spuštěného na vašem hostitelském počítači.

1. Vytvořte konfigurační soubor v /etc/rsyslog.d adresář na vašem klientském počítači. Soubor můžete pojmenovat, jak chcete, ale pro tuto ukázku se soubor jmenuje 90-graylog.conf.

2. Dále přidejte následující řádek do 90-graylog.conf soubor, uložte změny a zavřete editor. Nahraďte 34.76.103.44 s IP adresou vašeho hostitelského počítače, kde běží Graylog.

Níže uvedená konfigurace odesílá data Syslog (RSYSLOG_SyslogProtocol23Format ) z hostitelského počítače (@34.76.103.44 ) do Graylogu.

*.* @34.76.103.44:1514;RSYSLOG_SyslogProtocol23Format

3. Spuštěním níže uvedeného příkazu restartujte rsyslog aby se změny projevily.

sudo systemctl restart rsyslog

4. Přepněte zpět do webového rozhraní Graylog a klikněte na Hledat zobrazíte shromážděná data Syslog úhledně analyzovaná podobně jako níže.

Závěr

V tomto tutoriálu jste se naučili vytvářet svůj vlastní centralizovaný systém správy protokolů pomocí Graylog pomocí Dockeru a ověřili jste úspěšně shromážděná data Syslog z vašeho klientského počítače.

V tuto chvíli jste si uvědomili, že shromažďování a ukládání dobře organizovaných dat v bezpečném prostředí pro analýzu již nebude bolestí.

Jaké další protokoly můžete sbírat pomocí Graylog? Možná nastavit webového hostitele pro odesílání protokolů NGINX do Graylogu pro další analýzu a analýzu?


Docker
  1. Nastavte Nextcloud s Redis pomocí Dockeru

  2. Jak nainstalovat Docker pomocí Ansible [Debian/Ubuntu]

  3. Jak nainstalovat Jenkins pomocí Docker

  1. Jak nainstalovat WordPress pomocí Docker

  2. Jak nasadit mikroslužby s Dockerem

  3. Jak nasadit aplikace s Rancherem

  1. Jak nasadit kontejner nginx s Dockerem na Linode

  2. Jak nainstalovat Docker na CentOS

  3. Jak podložit soubor pomocí FF pomocí dd?