CentOS7のシステムログの収集(journald)とファイヤーウォール(firewalld)

# はじめに
CentOS7のシステムログの収集(journald)とファイヤーウォール(firewalld)についてまとめてみました

# systemd-journald
## journaldとは
systemdの環境で、標準的に提供されるログ管理のサービスです。正式名称は、下記の「systemd-journald.service」です。

参照
http://enakai00.hatenablog.com/entry/20141130/1417310904

## journal使い方
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0545

## システムログの収集
/var/log以下にアプリケーションからのログが出力されていますが、これはアプリケーションから直接出力されているものと、アプリケーション内でsyslog()関数を使ってrsyslogdプロセスに渡して出力している(syslogメッセージ)ものがあります

## rsyslogdとは？
* もともとsyslog(rsyslogdの前バージョン)が各アプリケーションからログを受け取りファイルに書き込んでいた。ログを他のサーバーに送信することもできる。
* CentOS6からsyslogの後継で高機能なrsyslogが採用されている。役割は同じ

# CentOS7でのシステムログの収集
### journaldの登場
* アプリケーション → jornald → jornaldDB
  - デフォルトの場所はvar/run/log/jounralなのでOS再起動でなくなる。場所は変えられる
* プロセスの標準出力/エラー出力もjournaldが受け取るようになった
* アプリケーション → jornald → rsyslogd 
  - rsyslogdが今まで通りログファイルに書き込む

# Firewalledによるパケットフィルタリング
* firewalledコマンドは**INPUTチェイン**のパケットフィルタリングルールを制御する。
* NATやフォワードの設定は別途
* firewalledが内部でnetfilterを使用している
  - netfileterがチェイン(チェック箇所、input,forwardなど7箇所)でパケットフィルタリングする

[CentOS 7システム管理ガイド systemd/NetworkManager/Firewalld徹底攻略](https://www.amazon.co.jp/CentOS-7%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%AE%A1%E7%90%86%E3%82%AC%E3%82%A4%E3%83%89-systemd-NetworkManager-Firewalld%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-ebook/dp/B01N27ZIL9/ref=sr_1_10?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=centos&qid=1579334095&sr=8-10)よりチェイン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273424/31b27a5d-5566-5099-541f-2f946c1d9e13.png)


## ゾーンとは
* ネットワークインターフェースを用途などによってグループ化したもの。
* 各ゾーンには役割を決めていて、その役割にあったサービスなどが最初っから許可されている
* デフォルトではすべてのインターフェースはpublicゾーンに所属している

## ICMP
デフォルトで許可

## 現在アクティブなゾーンの確認
デフォルトはpublicに所属

```bash

firewall-cmd --get-active-zones
public
  interfaces: ens192
```

```bash

firewall-cmd --get-default-zone
public
```
# firewall-cmd
firewall-cmd コマンドを利用して行います

## 永続とランタイム
firewall-cmd --add-service=http
firewall-cmd --permanent --add-service=http
firewall-cmd --runtime-to-permanent

ゾーンを指定しなければデフォルトのゾーンに対して設定される

## サービス
利用可能なサービス一覧


```
# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
```

サービス定義

ポートとプロトコルが指定されている

```
# cat /usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>
```
追加

```
# firewall-cmd --add-service=http --permanent
success

```
確認

```
# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s25
  sources:
  services: dhcpv6-client http ssh
```
## ポート
サービスに登録されていないサービス(ポート)