○ Lynis & Rootkit Hunterでシステムチェック

・lynis,rkhunterで設定されている項目のみのチェックです
・行儀よくファイルがインストールされていない場合は
・設定項目の内容でチェックされないことがあります
・管理者(root)権限での実行が必要です

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文 (英文) を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:lynis-2.4.8.tar.gz (http://cisofy.com/lynis/)
:rkhunter-1.4.2.tar.gz  (http://rkhunter.sourceforge.net/)

○インストール環境

:OS CentOS 6.9
:selinux permissive or disabled
:インストール先  /usr/local
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行



○lynis-2.4.8

○lynisのインストール

・適当なディレクトリで展開します(例 /usr/local)
・1.6.0からディレクトリ名にヴァージョン番号がつきません
・2.3.0からcustom.prfを読み込む設定になっています

[root@venus:~]
# cd /usr/local
[root@venus:/usr/local]
# mv lynis lynis247
# tar zxf lynis-2.4.8.tar.gz

・custom.prfの作成 (下記参照)

# cp -a lynis247/custom.prf lynis/
# touch lynis/custom.prf

・ユーザ‥グループを変更します

# chown -R root:root lynis

・patchを当てます (下記参照)

# cd lynis
[root@venus:/usr/local/lynis]
# patch -p1 < ../lynis-centos6-include.patch
# patch -p1 < ../lynis-myset-include.patch

・default.prfの変更を調べます

# cd ..
[root@venus:/usr/local]
diff -urp lynis247/default.prf lynis/default.prf

○lynisの実行

・includeファイルを読み込むのでlynisディレクトリに移動します
・audit system 全てのtestを実行 --reverse-colors 背景色が白色の場合に指定
・--wait セクションごとに止めたい場合に指定 (2.3.2以降)
・lynisを実行すると、コンソール画面に結果が表示され、
・/var/logディレクトリにログファイルが作られます

# cd /usr/local/lynis
[root@venus:/usr/local/lynis]
# ./lynis audit system --reverse-colors

・セクションごとに止める場合

# ./lynis audit system --reverse-colors --wait

○設定ファイルの修正

・デフォルトではdefault.prf、custom.prfを読み込みます
・custom.prfでオリジナルの修正を加える方向のようです

:/usr/local/lynis/custom.prf (root root 644)

・lynisコマンドオプションを設定できます (全てではない)

・skip-testでテスト番号を指定してスキップします

・NETW-2705 (lynis/include/tests_networking)
・resolv.confのnameserverの数をチェックします

・FIRE-4513 (lynis/include/tests_firewalls)
・使われていないiptablesルールをチェックします

・FILE-6336 (lynis/include/tests_filesystems)
・fstabのswapオプションのチェックをします

・sysctlの設定値を自分の設定に合わせておきます

skip-plugins=yes
#verbose=yes
#debug=yes
#language=ja

# Skip a test (one per line)
skip-test=NETW-2705
skip-test=FIRE-4513
skip-test=FILE-6336

# Kernel
config-data=sysctl;kernel.exec-shield;2;1;No description;sysctl -a;url:https;//kernel.org/doc/Documentation/sysctl/kernel.txt;category:security;
# Network
config-data=sysctl;net.ipv4.tcp_timestamps;1;1;Do not use TCP time stamps;-;category:security;

:lynis/include/consts

・バイナリファイルのサーチパスを追加します
・バイナリの存在を確認して、testを実行するケースがあります

BINPATHS="/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin \
          /usr/local/libexec /usr/libexec /usr/sfw/bin /usr/sfw/sbin \
          /usr/sfw/libexec /opt/sfw/bin /opt/sfw/sbin /opt/sfw/libexec \
          /usr/xpg4/bin /usr/css/bin /usr/ucb /usr/X11R6/bin /usr/X11R7/bin \
          /usr/pkg/bin /usr/pkg/sbin /usr/local/apache2/bin /usr/local/mysql/bin"

:lynis/include/tests_nameservices

・chroot環境でのnamed-checkconf -t オプションへの対処です
・各自のchrootの方法に合わせて下さい

#
# Name services
#

・省略

#
    BIND_RUNNING=0
    BIND_CHROOT_DIR=`grep ROOTDIR /etc/sysconfig/named|sed "s%ROOTDIR=%%"`
    BIND_CONFIG_LOCS="/{ROOTDIR}etc ${ROOTDIR}etc/bind ${ROOTDIR}usr/local/etc ${BIND_CHROOT_DIR}/etc"
    BIND_CONFIG_LOCATION=""
    POWERDNS_RUNNING=0
    POWERDNS_CONFIG_LOCS="/etc/powerdns /usr/local/etc"

・省略

#
    # Test        : NAME-4206

・省略

        logtext "Test: searching for named-checkconf binary"
        if [ ! "${NAMEDCHECKCONFBINARY}" = "" ]; then
            logtext "Result: named-checkconf is installed"
        #YYY add chrooted environments
        if [ ! "${BIND_CHROOT_DIR}" = "" ]; then
        	BIND_CHROOT_CONFIG=`echo ${BIND_CONFIG_LOCATION}|sed "s%$BIND_CHROOT_DIR%%"`
        	FIND=`${NAMEDCHECKCONFBINARY} -t ${BIND_CHROOT_DIR} ${BIND_CHROOT_CONFIG}; echo $?`
        else
        	FIND=`${NAMEDCHECKCONFBINARY} ${BIND_CONFIG_LOCATION}; echo $?`
        fi
            if [ "${FIND}" = "0" ]; then
                logtext "Result: configuration file ${BIND_CONFIG_LOCATION} seems to be fine"
                Display --indent 4 --text "- Checking BIND configuration consistency..." --result "OK" --color GREEN

・省略

#

:lynis/include/tests_time

・chroot環境でのntp.confへの対処です
・各自のchrootの方法に合わせて下さい

・省略

#
    # Test        : TIME-3170

・省略

    NTPD_CHROOT_DIR=`grep chroot /etc/sysconfig/ntpd|awk '{ print $2 }'`
    if [ ! "${NTPD_CHROOT_DIR}" = "" ]; then
        FILE_ARRAY="${NTPD_CHROOT_DIR}/etc/ntp.conf"
    else
        FILE_ARRAY="/etc/ntp.conf /usr/local/etc/ntp.conf"
    fi
    Register --test-no TIME-3170 --weight L --network NO --category security --description "Check configuration files"
    if [ ${SKIPTEST} -eq 0 ]; then
        for FILE in ${FILE_ARRAY}; do

・省略

#

lynis-centos6-include.patch

・tests_nameservices,tests_time用です

lynis-myset-include.patch

・consts,tests_banners,tests_webservers用です

○lynisの再実行

# cd /usr/local/lynis
[root@venus:/usr/local/lynis]
# ./lynis audit system --reverse-colors

・実行者の名前を表示 (名前は""で囲む)

# ./lynis audit system --auditor "Your Name"

・テストIDを指定して実行します

# ./lynis --tests BOOT-5121

・または、テストカテゴリを指定して実行します

# ./lynis --tests-category boot_services

・テストカテゴリの分類の表示

# ./lynis --view-categories

・optionの表示

# ./lynis show options

・manの表示

# ./lynis --man

○実行スクリプトの作成

:/usr/local/sbin/lynis.sh (root root 700)

・lynisのオプションを一時的に追加したい場合は
・lynis.sh --waitのようにスクリプトを実行します

#!/bin/bash
cd /usr/local/lynis
./lynis audit system $*



○rkhunter-1.4.2

○rkhunterのインストール

・設定ファイルは /etc にインストールされます
・datファイルは/var/lib/rkhunter/dbにつくられます
・OSのバージョンアップ時には、datファイルを削除し
・rkhunter --updateから始めます

・旧設定ファイルを保存します

# cd ~
[root@venus:~]
# mv /etc/rkhunter.conf /etc/rkhunter.conf-old

・"--remove"オプションで旧ファイルを削除します

# cd ~/src
[root@venus:~/src]
# tar zxf rkhunter-1.4.2.tar.gz
# chown -R root:root rkhunter-1.4.2
# cd rkhunter-1.4.2
[root@venus:~/src/rkhunter-1.4.2]
# ./installer.sh --remove
# ./installer.sh --install

○rkhunterの実行

・rkhunterを実行してみる
・"--update" datファイルのアップデートを確認します
・"-c" 全てのチェック "--cs2" 背景が白色の場合に指定
・"-l" ログの出力 ログは/var/logに出力されます

# cd ~
[root@venus:~]
# rkhunter --update
# rkhunter -c -l --cs2

・全てのTESTを実行してはいません
・rkhunter.confで無効にしてあるTESTもあります

[root@venus:~]
# rkhunter --list tests

○設定ファイルの修正

:/etc/rkhunter.conf (root root 640)

# ターミナルの背景が白色の場合に設定

#COLOR_SET2=0
COLOR_SET2=1

# sshd_configの設定に合わせます

#ALLOW_SSH_ROOT_USER=no
ALLOW_SSH_ROOT_USER=without-password

# CentOSの環境に合わせます

#SCRIPTWHITELIST=/usr/bin/groups
SCRIPTWHITELIST=/usr/bin/ldd
SCRIPTWHITELIST=/usr/bin/whatis
SCRIPTWHITELIST=/sbin/ifup
SCRIPTWHITELIST=/sbin/ifdown

#ALLOWHIDDENDIR=/dev/.udev
#ALLOWHIDDENDIR=/dev/.mdadm
ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENDIR=/dev/.mdadm

#ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
#ALLOWHIDDENFILE=/usr/bin/.fipscheck.hmac
ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5login.5.gz
ALLOWHIDDENFILE=/usr/share/man/man5/.k5identity.5.gz
ALLOWHIDDENFILE=/usr/bin/.fipscheck.hmac
ALLOWHIDDENFILE=/sbin/.cryptsetup.hmac

#ALLOWDEVFILE=/dev/shm/sem.ADBE_*
ALLOWDEVFILE=/dev/.udev/queue.bin
ALLOWDEVFILE=/dev/.udev/rules.d/99-root.rules
ALLOWDEVFILE=/dev/.udev/db/block:*
ALLOWDEVFILE=/dev/.udev/db/sound:*

opensslのヴァージョンチェック

#APP_WHITELIST=""
APP_WHITELIST=openssl:1.0.2

# Xen domain0の場合に追加

#ALLOWPROMISCIF=eth0
ALLOWPROMISCIF=peth0
ALLOWPROMISCIF=vif1.0
ALLOWPROMISCIF=vif2.0

○datファイルの再構成とrkhunterの実行

・rkhunter.datにファイル名がハッシュ値を計算されて登録されているので
・yumなどでrpmの更新を行った場合や、rkhunter.confを修正した場合
・rkhunter_prop_list.dat, rkhunter.datを再構成してから行う
・"--propupd" rkhunter.dat, rkhunter_prop_list.datを作成します
・datファイルは /var/lib/rkhunter/db につくられます

・rkhunter_prop_list.dat, rkhunter.datの再構成

[root@venus:~]
# rkhunter --propupd

・rkhunterの実行

# rkhunter -c -l --sk

○datに記録されたファイルを含むRPMパッケージ

・CentOS 6.7 の場合です

:RPMパッケージの場合

bash, binutils, chkconfig, coreutils, curl
diffutils, e2fsprogs, ed, file, findutils
gawk, glibc-common, grep, initscripts, iproute
iputils, less, lsof, mailx, man, mlocate
module-init-tools, net-tools, openssh-clients
openssh-server, passwd, perl, policycoreutils
prelink, procps, psmisc, rpm, rkhunter, rsyslog
sed, shadow-utils, strace, sudo, sysvinit-tools
tcp_wrappers, tcsh, upstart, util-linux-ng
wget, which

:オリジナルファイルの場合

/etc/rkhunter.conf, /usr/local/bin/rkhunter
/usr/local/bin/ssh, /usr/local/sbin/sshd

○実行スクリプトの作成

:/usr/local/sbin/rkhunter.sh (root root 700)

・"--sk" 途中のキー(Enter)入力を省略します

#!/bin/bash
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter -c -l --sk

○ Copyright(c) 528p.com All Rights Reserved.