改竄検知システム(AIDE)の導入と設定

AIDE は、ホスト型の侵入検知システムであり、ファイルの改竄を検知することができる。

公式サイト
AIDE - Advanced Intrusion Detection Environment

公式サイトによると、Advanced Intrusion Detection Environment の略らしい。
読み方は、「エイド」なのか「アイーデ」なのか不明。


【環境】
CentOS 7

CentOS 6でも、同等の手順で導入、設定できる。

導入

CentOS 6/7 なら、yum でインストールできる。

# yum install aide

インストールされるものは以下。

# rpm -ql aide
/etc/aide.conf
/etc/logrotate.d/aide
/usr/sbin/aide
/usr/share/doc/aide-0.15.1
/usr/share/doc/aide-0.15.1/AUTHORS
/usr/share/doc/aide-0.15.1/COPYING
/usr/share/doc/aide-0.15.1/ChangeLog
/usr/share/doc/aide-0.15.1/NEWS
/usr/share/doc/aide-0.15.1/README
/usr/share/doc/aide-0.15.1/README.quickstart
/usr/share/doc/aide-0.15.1/contrib
/usr/share/doc/aide-0.15.1/contrib/aide-attributes.sh
/usr/share/doc/aide-0.15.1/contrib/bzip2.sh
/usr/share/doc/aide-0.15.1/contrib/gpg2_check.sh
/usr/share/doc/aide-0.15.1/contrib/gpg2_update.sh
/usr/share/doc/aide-0.15.1/contrib/gpg_check.sh
/usr/share/doc/aide-0.15.1/contrib/gpg_update.sh
/usr/share/doc/aide-0.15.1/contrib/sshaide.sh
/usr/share/doc/aide-0.15.1/manual.html
/usr/share/man/man1/aide.1.gz
/usr/share/man/man5/aide.conf.5.gz
/var/lib/aide
/var/log/aide

設定

設定ファイルは、/etc/aide.conf である。

最初の方に、参照するデータベースやレポートの出力先などの定義がある。

@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide

# The location of the database to be read.
database=file:@@{DBDIR}/aide.db.gz

# The location of the database to be written.
#database_out=sql:host:port:database:login_name:passwd:table
#database_out=file:aide.db.new
database_out=file:@@{DBDIR}/aide.db.new.gz

# Whether to gzip the output to database.
gzip_dbout=yes

# Default.
verbose=5

report_url=file:@@{LOGDIR}/aide.log
report_url=stdout
#report_url=stderr
#NOT IMPLEMENTED report_url=mailto:root@foo.com
#NOT IMPLEMENTED report_url=syslog:LOG_AUTH


デフォルトでは、次のようになっている。

データベース:/var/lib/aide/aide.db.gz
新しく書き込むデータベース:/var/lib/aide/aide.db.new.gz
ログファイル:/var/log/aide/aide.log

「NOT IMPLEMENTED」とあるが、メールやsyslogへ出力する機能を予定しているのかもしれない。
(AIDE の最終更新が2016年だけど・・・)


設定ファイルでは、監視対象と除外のディレクトリ/ファイルを列挙する。
例えば、デフォルトでは、下記のディレクトリが監視対象になっている。

/boot   NORMAL
/bin    NORMAL
/sbin   NORMAL
/lib    NORMAL
/lib64  NORMAL
/opt    NORMAL
/usr    NORMAL
/root   NORMAL

デフォルトでは、下記のディレクトリが監視対象から除外されている。
(先頭に ! を付けると除外になる)

# These are too volatile
!/usr/src
!/usr/tmp


「NORMAL」は、検査ルールであり、設定ファイルのコメントに記載がある。
<ルールの一覧>

# These are the default rules.
#
#p:      permissions
#i:      inode:
#n:      number of links
#u:      user
#g:      group
#s:      size
#b:      block count
#m:      mtime
#a:      atime
#c:      ctime
#S:      check for growing size
#acl:           Access Control Lists
#selinux        SELinux security context
#xattrs:        Extended file attributes
#md5:    md5 checksum
#sha1:   sha1 checksum
#sha256:        sha256 checksum
#sha512:        sha512 checksum
#rmd160: rmd160 checksum
#tiger:  tiger checksum

#haval:  haval checksum (MHASH only)
#gost:   gost checksum (MHASH only)
#crc32:  crc32 checksum (MHASH only)
#whirlpool:     whirlpool checksum (MHASH only)

FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256

#R:             p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5
#L:             p+i+n+u+g+acl+selinux+xattrs
#E:             Empty group
#>:             Growing logfile p+u+g+i+n+S+acl+selinux+xattrs

# You can create custom rules like this.
# With MHASH...
# ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
# Everything but access time (Ie. all changes)
EVERYTHING = R+ALLXTRAHASHES

# Sane, with multiple hashes
# NORMAL = R+rmd160+sha256+whirlpool
NORMAL = FIPSR+sha512

# For directories, don't bother doing hashes
DIR = p+i+n+u+g+acl+selinux+xattrs

# Access control only
PERMS = p+i+u+g+acl+selinux

# Logfile are special, in that they often change
LOG = >

# Just do sha256 and sha512 hashes
LSPP = FIPSR+sha512

# Some files get updated automatically, so the inode/ctime/mtime change
# but we want to know when the data inside them changes
DATAONLY =  p+n+u+g+s+acl+selinux+xattrs+sha256


上記によると、
 FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256
 NORMAL = FIPSR+sha512
である。
それぞれの識別子の意味は、以下の通り。

p:パーミッション
i:i-node番号
n:対象のファイルを指すリンク数
u:所有者
g:グループ
s:サイズ
m:修正日時
c:アクセス日時
acl:アクセスコントロール
selinuxSELinuxセキュリティ・コンテキスト
xattrs:拡張ファイル属性
sha256:チェックサム
sha512:チェックサム



例えば、/var/log/lastlog ファイルは、デフォルトで LSPP がセットされているが、これではユーザがログインする度に変更が発生する。
パーミッションだけチェックするように変更するには、次のようにする。

/var/log/lastlog LSPP
 ↓
/var/log/lastlog PERMS

使い方

最初に、データベースの初期化を以下のコマンドで行う。

# aide -i

AIDE, version 0.15.1

### AIDE database at /var/lib/aide/aide.db.new.gz initialized.


表示される通り、DBは「aide.db.new.gz」として作成される。
実際にAIDEによる検査を行う際は、ここで作成した新しい定義を参照する用のファイルへコピーする必要がある。

データベースのファイル名は設定ファイルに定義があるが、デフォルトでは次のように上書きする。

# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

検査

以下のコマンドで行う。

# aide -C

AIDE, version 0.15.1

### All files match AIDE database. Looks okay!


試しに、「/bin/aide-dummy」というダミーファイルを作成し、AIDEに検出させてみる。

# touch /bin/aide-dummy
# aide -C
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2018-11-03 13:23:39

Summary:
  Total number of files:        68462
  Added files:                  1
  Removed files:                0
  Changed files:                1


---------------------------------------------------
Added files:
---------------------------------------------------

added: /usr/bin/aide-dummy

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /usr/bin

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------


Directory: /usr/bin
 Mtime    : 2018-11-03 08:35:57              , 2018-11-03 13:23:37
 Ctime    : 2018-11-03 08:35:57              , 2018-11-03 13:23:37


チェック結果はコマンドの戻り値でも確認できる。

変更がある場合

# echo $?
5

変更が無い場合

# echo $?
0


結果は、/var/log/aide/aide.log にも出力されるが、追記ではなく上書きされる模様。
CentOS 7.x/AIDE Ver-0.15.1 の場合)

また、/etc/logrotate.d/aide にはログローテーションの設定があるが、ログファイルは追記ではなく上書きなので、デフォルトのままではローテーションされにくい。
必要に応じて、daily などを設定して、ローテーションすると良い。

データベースの更新

セキュリティパッチを適用した後などは、AIDE のデータベースを更新する必要がある。

更新は、以下のコマンドで行う。

# aide -u
# cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz


実際の運用では、
 ・定期的にAIDEによる改竄チェックを実行
 ・セキュリティパッチ適用前には、改竄チェックを行い、異常が無い事を確認後に適用する
 ・セキュリティパッチ適用後には、AIDE のデータベースを更新
のようになると思われる。

定期的にAIDE でチェックを行うには、シェルスクリプトをcronなどで実行する方法が考えられる。


簡単なチェックスクリプトの例(変更があった場合のみ、root へメールする。AIDE のデータベースを更新するまで通知し続ける)

#!/bin/bash

MAIL_TO="root"
MAIL_SUBJECT="AIDE detected warning"
MAIL_TEXT=`mktemp /tmp/temp.XXXXXX`

aide -C > $MAIL_TEXT

if [ $? -gt 0 ]; then
  mail -s "$MAIL_SUBJECT" $MAIL_TO < $MAIL_TEXT
fi

rm -rf $MAIL_TEXT

参考

RHEL セキュリティ: ファイル監視による侵入検知 AIDE
http://aikotobaha.blogspot.jp/2011/11/rhel-aide.html

OpenSUSE - 第12章 AIDE を利用した侵入検知
http://manual.geeko.cpon.org/ja/cha.aide.html

CIFSマウント時の SMB バージョンのデフォルトが 1.0 ではなくなった

【環境】
CentOS Linux release 7.6.1810 (Core)
kernel-3.10.0-957.1.3.el7.x86_64
util-linux-2.23.2-59.el7.x86_64


CentOS 7.5 → 7.6 へ更新したら、CentOS からNASをCIFSマウントできなくなった。

/var/log/messages へ次のようなエラーが出力される。

Dec  8 08:22:16 host_name kernel: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.

バージョンが上がった事で、SMB接続する際のデフォルトバージョンが1.0→2.1 になったらしい。

どのパッケージが影響したか分からない。
 ・カーネル(cifs.ko.xz?)
 ・util-linux(mountコマンドが入っている)
あたり?


SMB1.0で接続したければ、マウント時に vers=1.0 オプションを指定しろとの事。

autofs でマウントする場合も同様に、このオプションの指定がなければマウントエラーになる。

マウントするNASが古いなどで、SMB 1.0にしか対応していない場合は、このオプションが必要。

手元のNASLinuxベース)も古いので、「ついに使えなくなったか!?」と一瞬焦った。

光コラボらしき勧誘が来て困る

ネットにも多くの情報があるのですが、我が家にも光コラボと思われる勧誘の電話がありました。

せっかくなのでメモ。

「」:会話
():心の声


相手「NTTフレッツ光の料金の件でご案内の御電話となります」

私「えっ?は、はい?」

相手「来月以降もNTTフレッツ光りをご利用の場合、来月から料金が安くなります」

私「そうなんですかー」

相手の社名を聞き逃したかと思って、

私「NTTさんでしょうか?ハガキなどで以前にもご案内頂いていましたか?」

相手「NTTから委託されています、○○サポートと申します。今回はお電話での案内となります」

続けて、

相手「今は6000円~7000円くらいの月額かと思われますが、これがもっと安くなります」

私「ご案内頂いているものは、ホームページでも確認できますか?」

相手「いいえ、このお電話でのご案内となります。フレッツ光をご利用の方に特別のご案内をしております」

私(!?怪しい・・・)

私「は、はぁ」

相手「NTTフレッツ光りのホームページから、転用承諾番号をご確認頂くと、すぐに手続きが可能となります」

私「この部屋にはパソコンがありませんので、確認できないのですが・・・」

相手「それでは、お部屋をご移動頂いて、5分後くらいにもう一度お電話いたします」

私「すみません。パソコンはデスクトップで移動できませんし、この固定電話は、有線なので移動できません」

相手「それでは携帯電話を教えて頂ければ、そちらへお掛けしますが」

私「携帯電話番号を教えるのはちょっと・・・。こちらから掛け直す電話番号はありますか?」

相手「ございません。発信専用の電話となっております」

私(相手も情報を出さないなぁ・・・)

私「料金は今のもので不満はありませんし、他社へ変更するつもりはありません。すみませんが、お断りいたします」


といった感じでした。


この手の勧誘電話は、総務省からも注意が出ています。

光コラボレーションモデル 不適切な電話勧誘にご注意ください! - 総務省
http://www.soumu.go.jp/main_content/000388714.pdf


何度か同じような電話を受けているのですが、今はもう面倒なので、「光コラボの勧誘ですか?不要ですので」と言って終わります。

いつも思うのは、以下の点。

  • 相手の社名を聞きとれない(もしくは最初に名乗らない)
  • やたら使われる「NTT」という名前に意識が行ってしまう(NTTからの電話に思ってしまう人がいるかもしれない)
  • どうにかして転用承諾番号を確認、取得させようとする(NTTからの電話だと思った人は、教えてしまいそう)
  • ホームページや問い合わせ先の情報を要求しても、教えてくれない


ADSLだった頃、「光へ移行しませんか」という電話が多く掛って来た時期がありました。

光を使っていると、今度は「コラボへ移行しませんか?」な勧誘が来るのです。

光コラボそのものや自社のサービスの案内をせず、とりあえず転用承諾番号を確認、取得させようとするところも不審な訳ですが、

そもそも「フレッツ光を使っているという事を知って勧誘電話してくる」のが嫌で、

こういうの何とかならないのかなぁと思った次第でした。


で、調べてみると・・・NTT東西にて、勧誘停止登録受付窓口なるものがあるらしい。

www.ntt-east.co.jp

www.ntt-west.co.jp


読んでみると、

勧誘を停止するにあたり、停止登録頂いた電話番号及び住所・氏名等お客さま情報を弊社代理店等へ提供いたしますので、予めご了承願います。

えーーーーー、でも停止するための情報を伝えるとなると、そうなるか・・・。

これの効果がどれほどか分かりませんが、もう暫し様子を見たり調べたりして考えよう。


と、光コラボそのものが悪いと言っている訳ではありません。

ユーザによっては、プロバイダやdocomoなどの光コラボがマッチするケースもあり、サービスそのものが悪い訳ではありません。

得体の知れない変な勧誘が悪いのです。



最後に、光コラボらしき勧誘には気をつけましょう。

もし、同居していない実家に勧誘電話がかかってきたら、両親が契約してしまうかもしれません。

気をつけましょう。

VMware vCenter Converter Standalone 5.5.3 のダウンロード

止められない古い仮想マシンがあり、そのパーティションサイズを変更したかったが、Converter 6.x では出来なかった。

古いバージョン(5.5)を使おうと思ったものの、公式サイトでリンクを辿っても、6.x へリダイレクトされてしまい、ダウンロードリンクが見つけられなかった。


色々探していたら、コミュニティで直リンクを見かけた。
communities.vmware.com



以下は、2018/11/5時点では有効なダウンロードリンクだが、いつか消えると思われる。
ダウンロード先は公式サイトのURLだけど、サイト検索しても辿り着けないので直リンクを。

ダウンロードには、VMwareアカウントが必要。


同じ境遇の人がいるかもしれないので、メモ。


【2022/8/24追記】
Converter はダウンロードを停止しています。以下の記事に書きました。
shobon.hatenablog.com

無線中継器をPLCアダプタ(TP-LINK TL-WPA4220 KIT)へ置き換えた話

家のネットワークには、

  • 1階にONU(無線なし、ルータ)と無線ルータ
  • 2階に無線ルータ

があった。

モバイルはWifi接続で良いが、2階にあるデスクトップPCやNAS、プリンタは有線が必要で、どうにかして1階と2階のネットワークを繋ぐ必要があり、無線中継器を使っていた。

無線ルータは、2台とも NEC Aterm WR8165N。構成は以下のような感じ。

f:id:savakan:20181107144520p:plain

WR8165N は、コンパクトで軽く、設置するには非常に優秀な無線ルータだった。
ただ、時々ネットワークに接続できない事があった。

はっきりした原因は追究できなかったが、以下が、類似例。とても参考になった。
d.hatena.ne.jp

私の環境の場合、有線接続したデスクトップPCでもWifiでも接続出来ない現象が発生した。
DHCPがダメなのかと思い、試しにデスクトップのIPを固定IPに設定してもダメだった。
無線の電波は良好で、Androidアプリのアナライザで調べた限りは、周辺と競合している感じもしない。

PCの場合は、切断されるとブラウザが応答しなくなる等で気が付くが、スマホの場合は自動的にキャリア回線に切り替わり、気付きにくい。
その間にギガを食っていくので、これはマズイと思った。


この機種の前は、BUFFALOの無線ルータで中継器を構成していたが、片方のルータのACアダプタが故障してしまい、代用を探せなかったためWR8165Nを2台購入した過去がある。
shobon.hatenablog.com


別な中継器にするか、PLCにするか悩んだが、また中継器で失敗するのも怖いのでPLCを購入する事にした。

PLCアダプタを探すと・・・

という事で、TP-Link にした。


TP-LinkのPLCアダプタは、Wifi機能を持たない製品(TL-PA4010 KIT)とWifi機能を持つ製品(TL-WPA4220)がある。

私の場合、1階と2階をPLCで接続して2階から既存のWifiルータで無線を飛ばしても、1階ではその電波が弱くなるようだった。

このTP-Linkの機種は、片方が無線機能を提供できるので、その点では良い仕様だった。

1階から2階へPLCで有線を引くと同時に、1階ではPLCアダプタからWifiの電波を飛ばせる。

価格・機能的には良いのだけど、これが国産だったら良かったなぁ(´・ω・`)


楽天のTP-Linkから購入。

私が購入したのは、2018年の9月。
価格は、7,072円(税込)だったが、クーポン300円を適用して6,772円で購入。


製品が届いたら、開封の儀。 f:id:savakan:20181107141530j:plain 筐体は小さいが、Wifi機能を持った方は少し大きい。 f:id:savakan:20181107141525j:plain コンセントに他の機器を挿していると、邪魔になるかもしれない。 f:id:savakan:20181008114243j:plain LANケーブルが付属してきたけど、Cat5 だった。使わない。
さっそく設置して配線。ネットワーク構成は以下のようになった。
f:id:savakan:20181107201343p:plain
PLCで問題として取り上げられる速度の測定。
USENのサイトで、2階のPCから以下の3パターンを測定した。

  • 無線中継器の構成(WR8165N):35Mbps
  • PLC(2階だけACタップにPLCアダプタを配線):35Mbps
  • PLC(2階もPLCアダプタをコンセントに直結):50Mbps


やはり、ACタップを経由すると速度は落ちるらしい。

以前より早くなったので良し。

1ヶ月くらい使ったが、以前の構成の時のようにネットから切断されなくなったので、目的は達成したかな・・・。

Windows 10でNFSクライアントを有効にするとSambaの応答が悪くなる謎

【環境】
クライアント:Windows 10 1803
サーバ:CentOS 6/7 の標準リポジトリのSambaで構築した共有フォルダ


コンパネからWindowsの機能として、NFSクライアントを有効にしたところ、Sambaの共有フォルダの応答が悪くなった。

ちょっとテストでWindowsクライアントが必要になり、Windowsの機能から有効にした時に気が付いた。


症状としては・・・

  • NFSクライアントを有効にしただけ(マウントしていない状態)で発生する。
  • ファイルをクライアント→Sambaの共有フォルダへコピーすると、99%のところで停止し、Windowsエクスプローラーが応答しなくなる。
  • 共有フォルダ上のファイルを右クリックしてプロパティを出そうとすると、出ない。Windowsエクスプローラーが応答しなくなる。
  • Samba側のログにエラーなどは出ていない

なお、

  • 同じクライアント~サーバ間で、FTP/SFTPでやり取りする分には、問題ない。
  • WindowsNFSクライアントを無効にしてWindowsを再起動すると、問題は起こらなくなる。

なので、WindowsNFSクライアントが原因と思っているけど、調査に難航しそう。

相性の問題?

freshclam コマンドが「Can't create new socket」を出す

環境

CentOS 6.x/7.x
clamav-0.99.4-1.el6.x86_64 ~ clamav-0.100.0-1.el6.x86_64
clamav-0.99.4-1.el7.x86_64 ~ clamav-0.100.0-2.el7.x86_64

2018年の5月下旬頃からか、以下のエラーが出るようになった。

/etc/cron.daily/freshclam:

ERROR: Can't create new socket: Address family not supported by protocol

cronで定期実行されているclamavシグネチャの更新時に、何やらエラーが出ているようだった。

エラーメッセージを見る限り、IPv4/IPv6関係か(?)と思い、
/etc/freshclam.conf の設定を見ると、

 DatabaseMirror

の設定値はIPv4のものだけになっていて、IPv6向けの設定はコメントされている。
OS側のネットワーク設定でも、IPv6を無効化しているので、問題ないように思えた。

ClamAVのMailing List Archiveにも、同様の問題が投稿されていて、以下が最後に確認したものだった。
https://lists.gt.net/clamav/users/73099

リプライが途中で終わっていた。

暫くして、ClamAVのMailing List Archive を見たら、
https://lists.gt.net/clamav/users/73229

The error you're referring to has been fixed in 0.100.1. Unfortunately,
unless you enable ipv6 for your computer/network, you'll have to live
with the error until you're able to upgrade to 0.100.1.

とあった。

このバージョンがyumリポジトリに来るのを待っていたら、7/25 にyum updateしたところ更新された。

更新後のバージョンは、以下の通り。

clamav-0.100.1-1.el6.x86_64
clamav-0.100.1-1.el7.x86_64

このバージョンに更新後、freshclam で同様のエラーが出なくなった。