CentOS7にISC Kea インストールする

メモだけ

インストール

yum -y install epel-release
yum -y install gcc gcc-c++ boost-devel flex
yum -y install log4cplus-devel botan-devel
yum -y install mysql-devel postgresql-devel
curl -L http://ftp.isc.org/isc/kea/1.2.0/kea-1.2.0.tar.gz -o kea-1.2.0.tar.gz
tar axf kea-1.2.0.tar.gz
cd kea-1.2.0
./configure --with-dhcp-mysql --with-dhcp-pgsql --enable-shell --prefix=/opt/kea
make install
ldconfig

DB初期化(mariadb)

# yum -y install mariadb-server
# systemctl start mariadb
# mysqladmin -u root password 'root'
# mysql -u root -p
password: ****
mysql> create user 'kea'@'localhost' IDENTIFIED BY 'kea';
mysql> create database 'kea';
mysql> grant all on kea.* to 'kea';
mysql> exit;
# kea-admin  lease-init mysql -u kea -p kea -n kea

設定(databaseにMariadbを指定)

    "lease-database": {
        "type": "mysql",
        "name": "kea",
        "user": "kea",
        "password": "kea",
        "host": "localhost",
        "port": 3306
    },
     "hosts-database": {
         "type": "mysql",
         "name": "kea",
         "user": "kea",
         "password": "kea",
         "host": "localhost",
         "port": 3306
     },

データベースの内部については http://kea.isc.org/wiki/HostReservationsHowTo ここを。

IPV4なら hosts に いわゆる固定IPアドレス払い出し用情報、 lease4 に 払い出したIPv4 情報 が載ってます。

select (HEX(hwaddr)),(HEX(address)) from lease4;

とかでリースしているIPAddresとMacAddressの組み合わせが見られますね。

ログとれた

OSQuery で process_eventsをゲットしようとしてみたところ、どうもうまくいってない。

具体的には、audit.logにはどんどんログたまってるのに select * from process_events; しても1件も取れず。 osqueryd 動かしていても result.logが全く記録されない感じ。

環境

Process

[vagrant@localhost ~]$ ps aux | grep osquer[y]
root     18816  0.0  1.7 217572  8516 ?        SNsl 01:41   0:00 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
root     18819  0.0  1.8 357320  9432 ?        SNl  01:41   0:00 osqueryd: worker

config

[vagrant@localhost ~]$ cat /etc/osquery/osquery.conf
{
  "schedule": {
    "process_events": {
      "query": "select * from process_events;",
      "interval": 60
    },
    "user_events": {
      "query": "select * from user_events;",
      "interval": 60
    }
  }
}

flag

[vagrant@localhost ~]$ cat /etc/osquery/osquery.flags
--disable_events=false
--disable_audit=false
--audit_allow_config=true
--audit_persist=true

INFO

[vagrant@localhost ~]$ cat /var/log/osquery/osqueryd.INFO
Log file created at: 2017/08/07 01:41:22
Running on machine: localhost.localdomain
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0807 01:41:22.665422 18819 events.cpp:824] Event publisher failed setup: kernel: Cannot access /dev/osquery
I0807 01:41:22.665441 18819 events.cpp:824] Event publisher failed setup: syslog: Publisher disabled via configuration

追記

よくわからないけれど、再起動で拾えるようになった。

FileBeats Auditd module

Audit log をいい感じにParseするやつとして、 FileBeatsに Auditd module あるし、今ならきっとそれ使ってると思う。

というような発表をBuildersCon 2017 で聞いてきたのですが、前に触ったとき、いい感じに扱えなかった記憶があったので、再度見てみました。

Auditd module

まずダッシュボードを見ると、SYSCALL PATH CWD EXECVE が分かれているパイチャートが見える、この時点で すでにつらそう。

実際にログ吐き出させてみると、やはり行指向に、audit.log 1行が1レコードとして吐き出されるので、 何か検索した後、 msg=audit(xxxx.xxx:yyyy) みたいなところのyyyyが一致するもの…… として調べて回らないといけない感じです。

{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=SYSCALL msg=audit(1501996733.927:1232): arch=c000003e syscall=59 success=yes exit=0 0=26bcb40 a1=26b0220 a2=26afad0 a3=7fff295001e0 items=2 ppid=809 pid=68498 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm=\"sleep\" exe=\"/usr/bin/sleep\" ubj=system_u:system_r:ksmtuned_t:s0 key=(null)","offset":993081,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=EXECVE msg=audit(1501996733.927:1232): argc=2 a0=\"sleep\" a1=\"60\"","offset":993151,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=CWD msg=audit(1501996733.927:1232):  cwd=\"/\"","offset":993201,"source":"/var/log/audit/audit.log","type":"log"}
{"@timestamp":"2017-08-06T05:18:54.062Z","beat":{"hostname":"localhost.localdomain","name":"localhost.localdomain","version":"5.5.1"},"input_type":"log","message":"type=PATH msg=audit(1501996733.927:1232): item=0 name=\"/usr/bin/sleep\" inode=34113796 dev=08:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:bin_t:s0 objtype=NORMAL","offset":993381,"source":"/var/log/audit/audit.log","type":"log"}

いや、それが面倒だから1レコードにしてほしいんだけど。。

状態です。

やっぱり OSQuery がよさげなんですかね