Skip to content

Graylog þjónn


Hér er lýst uppsetningu á Graylog á FreeBSD 13.1 þjóni, en Graylog býður upp á miðlæga söfnun log-skráa.

Grunnuppsetning

Mongod

Graylog segist þurfa mongodb40 eða hærra, en ekki hærra en mongodb50. Graylog 5.0 styður einungis mongodb50 og mongodb60, þannig við setjum upp mongodb50 til að einfalda okkur uppfærsluna í Graylog 5.0 seinna meir.

# pkg install mongodb50

Virkum næst mongodb þjónustuna og látum hana keyra við ræsingu:

# service mongod start
# sysrc mongod_enable=YES

Opensearch

Graylog segist þurfa elasticsearch6 eða hærra, en heimasíða Graylog tekur fram að skilmálum hafi verið breytt og verður Elasticsearch ekki stutt eftir útgáfu 7.11 og er notendum bent á að nota Opensearch í staðinn. Graylog 4.3 styður opensearch13 og setjum við hann hér upp.

# pkg install opensearch13

Pakkinn openjdk11 er settur upp með þessum pakka, það þarf eftirfarandi línur í fstab til að keyra:

``` title = "/etc/fstab" . . . fdesc /dev/fd fdescfs rw 0 0 proc /proc procfs rw 0 0

Virkjum skráakerfin:

mount -a

Heimasíða Opensearch segir okkur að taka ýmsar ráðstafanir til að auka afköst, t.a.m. slökkva á `swap` og hækka `kern.maxfiles` gildin.

swapoff -a

sysctl kern.maxfiles=65536

sysctl kern.macfilesperproc=65536

echo "kern.maxfiles=65536" >> /etc/sysctl.conf

echo "kern.maxfilesperproc=65536" >> /etc/sysctl.conf

Opensearch finnur ekki `java` þar til við segjum kerfinu okkar hvar `java` er;

export JAVA_HOME=/usr/local/

Opensearch bætir svo `bin/java` við endann. 
Opensearch samanstendur af ýmsum plugin-um, þar á meðal `opensearch-security`, sem gerir það að verkum að Opensearch keyrir ekki fyrr en viðeigandi skírteini eru til staðar. Umhverfi höfundar er ekki með vottunarstöð þannig hér verður notast við staðbundin skírteini. 
Staðargildi í `/usr/local/etc/opensearch.yml` miða við `/usr/local/etc/opensearch/` sem rót, þannig að skírteinin þurfa að vera í undirmöppu þar, hér eru þau sett í `/usr/local/etc/opensearch/certs`.
Byrjum á rótarskírteininu:

openssl genrsa -out root-ca-key.pem 2048

Notum lykilinn til að búa til rótarskírteini fyrir þjóninn okkar:

openssl req -new -x509 -sha256 -key root-ca-key.pem -out root-ca.pem -days 730

Svarið spurningum með viðeigandi upplýsingum úr ykkar umhverfi.
Næst þurfum við að setja upp admin skírteini:

opennsl genrsa -out admin-key-temp.pem 2048

Breytum í Java-hæft form:

openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem

Gerum nú CSR, það virkar á milli undirskriftabeiðna og CA-isins. 

openssl req -new -key admin-key.pem -out admin.csr

Nú getum við gert admin skírteinið, það er notað fyrir admin störf í gegnum API o.fl.:

openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730

Gerum loks skírteinið fyrir þennan þjón, það er það sem við notum í stillingunum okkar:

openssl genrsa -out logs-key-temp.pem 2048

Breytum því í java form:

openssl pkcs8 -inform PEM -outform PEM -in logs-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out logs-key.pem

Græjum undirskriftabeiðni:

openssl req -new -key logs-key.pem -out logs.csr

Áður en við gerum sjálft skírteinið þurfum við að tilgreina SAN gildi til að fara eftir stöðlum  [RFC 2818](https://datatracker.ietf.org/doc/html/rfc2818). Notum A gildi DNS færslunnar fyrir þjóninn:

echo 'subjectAltName=DNS:logs.hb15.is' > logs.ext

Gerum þá skírteinið:

openssl x509 -req -in logs.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out logs.pem -days 730 -extfile logs.ext

Nú getum við uppfært `opensearch.yml` skrána. Fyrst þurfum við að setja inn upplýsingar um DN skírteinanna:

``` yml title="/usr/local/etc/opensearch/opensearch.yml"
plugins.security.authcz.admin_dn:
    - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
    - 'CN=node1.dns.a-record,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'

Note

Fáið gildin fyrir ykkar skírteini með skipuninni openssl x509 -subject -nameopt RFC2253 -noout -in logs.pem

Notum nú skírteinin okkar í opensearch.yml skránni okkar:

/usr/local/etc/opensearch/opensearch.yml
plugins.security.ssl.transport.pemcert_filepath: certs/logs.pem
plugins.security.ssl.transport.pemkey_filepath: certs/logs-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: certs/root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: certs/logs.pem
plugins.security.ssl.http.pemkey_filepath: certs/logs-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: certs/root-ca.pem
plugins.security.authcz.admin_dn:
    - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'                        # Notið ykkar gildi hér
plugins.security.nodes_dn:
    - 'CN=certs/logs.dns.a-record,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'  # Og hér

Eignum opensearch allar skrárnar og skírteinin sem við vorum að græja:

# chown -R opensearch:opensearch certs

Nú þegar opensearch-security ætti ekki að kvarta skulum við setja eftirfarandi stillingar í opensearch.yml.

/usr/local/etc/opensearch/opensearch.yml
cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/graylog/opensearch/data
path.logs: /var/log/opensearch
network.host: ${HOSTNAME}
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["127.0.0.1"]
action.auto_create_index: false

Note

Þið gætuð þurft að búa til möppurnar fyrir path.data og path.logs, munið þá að keyra chown -R opensearch:opensearch á þær.

Nú ættum við að geta keyrt þjónustuna:

# service opensearch start

og til að virkja hana við ræsingu:

# sysrc opensearch_enable=YES

Note

Þið getið athugað hvort Opensearch sé virkt með því að keyra netstat -an | grep 9200, ef hún er ekki í gangi getið þið skoðað /var/log/opensearch/graylog.log. Ef þjónustan fer í gang án nokkurrar villu, en er svo ekki í gangi stuttu seinna getið þið skoðað /var/log/messages, þar kemur fram villa frá Java sem gæti þýtt að vélin sé ekki með nóg vinnsluminni.

Graylog

Stutt leit eftir pakkanum graylog sýnir að við skrift þessa lesefnis er útgáfa 4.3.3 í boði í pakkalindum FreeBSD, á meðan nýjasta útgáfan er 5.0 og graylog mælir með þeirri útgáfu. Breytum þá stillingum lindanna okkar til að fá það besta og nýjasta:

# mkdir -p /usr/local/etc/pkg/repos
# cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/
Breytum svo fyrstu línunni í þessari skrá frá quarterly í latest þannig hún líti svona út:

/usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
    url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
    .
    .
    .
}
Uppfærum næst pakkalistann okkar
# pkg update -f
pkg search graylog keyrt núna er útgáfan í 4.3.9 sem eru ákveðin vonbrigði. Höldum ótrauð áfram og sækjum pakkann:
# pkg install graylog

Pakkinn openjdk8 sem er settur upp með graylog þarf sömu línur í fstab og openjdk11 gerir, við getum því hunsað þau skilaboð.

``` title = "/etc/fstab" . . . fdesc /dev/fd fdescfs rw 0 0 proc /proc procfs rw 0 0

Virkjum skráakerfin:

mount -a

Náum okkur í stilliskrána fyrir `graylog`:

cd /usr/local/etc/graylog/

cp graylog.conf.sample server/server.conf

Breytum skránni þannig að eftirfarandi línur séu til staðar:

``` title="/usr/local/etc/graylog/server/server.conf
is_leader = true
password_secret = <fæst með pwgen -N 1 -s 96>
root_password_sha2 = <fæst með echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 > þar sem lykilorðið er rótarlykilorðið
root_timezone = Atlantic/Reykjavik
http_bind_address = <ip tala þjónsins>
Áður en við getum ræst þjónustuna þurfum við að breyta rc ræsiskriftunni þannig að Graylog noti openjdk8, en ekki openjdk11, sem er sjáfgefna java-ð á kerfinu fyrst það er nýrra. Í skránni /usr/local/etc/rc.d/graylog eru línur sem vísa á /usr/local/bin/java, sem er sýndarhlekkur á /usr/local/bin/javavm, sem segist fara eftir því sem kerfisbreytan JAVA_HOME tilgreinir, en það virkar ekki, auk þess sem við þurfum hvort eð er að keyra opensearch á openjdk11, þannig við breytum bara /usr/local/bin/java í /usr/local/openjdk8/bin/java þannig að eftirfarandi hluti líti svona út:

/usr/local/etc/rc.d/graylog
.
.
.
command_args=" \
    -c \
    -t ${name} \
    -r \
    -p ${app_pidfile} \
    -P ${pidfile} \
    /usr/local/openjdk8/bin/java \
    ${java_options} \
    -jar ${graylog_dir}/graylog.jar server \
    --no-pid-file \
    --configfile ${graylog_config}"

required_files="/usr/local/openjdk8/bin/java ${graylog_config}"
.
.
.

Nú getum við virkjað og ræst þjónustuna:

# sysrc graylog_enable=YES
# service graylog start

Ef við keyrum netstat -an | grep 9000 ættum við að sjá að Graylog er að hlusta á tengi 9000, og við getum farið á :9000 í vafra og séð að graylog er í gangi