2014-08-12

Windows Updateで80072EE2エラーが出たとき

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
最近Windows Updateをすると80072EE2エラーが出てとまってしまっていました。

調べると以下のサイトの対応をとるとよい感じでした。
http://capacitor.blog.fc2.com/blog-entry-137.html

しかし、この対応を行ってもエラーが出続けていました。
マイクロソフトのサイトが混んでいることが原因で出ることもあると書いてあったのを見た気がしたので、しばらく様子を見ていたのですが全然復旧しませんでした。

というわけで本格的に原因を調べてみました。

どうやら
 [スタート]-[ファイル名を指定して実行] から %windir% を実行して開いたディレクトリにあるWindows Update.log
がWindows Updateのログになっているようなので、このファイルを見てみました。

私の場合は、
WSUS server
という記載があって、マイクロソフトのものでないサーバをさしている状態になっていました。
どうやらずいぶん昔にWindowsUpdateを別のサーバから取得するような設定にしていて、そのサーバが、ここ最近知らないうちに倒れていたようです。
そのため、WindowsUpdateの情報を取得しようとしたけどタイムアウトが起きて、エラーが出ていたようです。

というわけで、WindowsUpdateの取得先をデフォルトに戻すようにします。

レジストリを修正する必要があります。

変更内容は、以下のとおりです。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
の下の
WUServer
WUStatusServer
をそれぞれ空白に変更します。

そして
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
の下の
UseWUSer‌​ver
を0に変更します。

そしてWindows Updateサービスを再起動します。

これで私の場合は、エラーが解消されました。



2014-08-05

mysqlで監査ログを設定する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
MySQLでもデータベースの操作ログを取ったほうがよいのかなぁと思ってしまう今日この頃です。

というわけで、どのようにすれば監査ログを残せるのかを調べました。

Enterprise Editionには、監査の機能があるようですが、今回はEnterprise Editionのことは対象外です。

他にMcAfeeがMySQL用の監査ツールを提供しているようなので、こちらの使い方になります。


以下はすべてrootユーザで行うものとします。

まずはインストールです。

https://bintray.com/mcafee/mysql-audit-plugin/release
から自分の環境にあったものをダウンロードします。
今回の環境は、64bitCentOS6上のMySQL5.6とします。

ファイルを取得して、zip解凍してプラグイン用のディレクトリにコピーをします。
wget http://dl.bintray.com/mcafee/mysql-audit-plugin/1.0.5/audit-plugin-mysql-5.6-1.0.5-479-linux-x86_64.zip
unzip audit-plugin-mysql-5.6-1.0.5-479-linux-x86_64.zip

cp audit-plugin-mysql-5.6/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/


そして設定です。
/etc/my.cnf

[mysqld]セクションに以下を追加します。
------------------------------------------------
# McAfee Audit-Plugin
plugin-load=AUDIT=libaudit_plugin.so
audit_json_file = On
------------------------------------------------
他にも設定できる項目はあるのですが、とりあえず最低限動くようにするには上記でよさそうです。
他の項目に関しては、以下を参照してください。


設定が完了したらmysqlを再起動です。
service mysqld restart


プラグインが設定されているかの確認は、以下を実行してaudit系の設定が表示されればOKです。
mysql> SHOW VARIABLES LIKE 'audit_%';


これで監査ログが
/var/lib/mysql/mysql-audit.json
に出力されることになります。

出力されるログの内容に関しては以下が参考になります。


監査ログは、いっぱい出力されるのでファイルサイズが大きくなっていきます。
なので以下の設定をして必要なものだけに絞るのがよいかと思います。
audit_record_cmds:ロギング操作を限定する
audit_record_objs:ロギングしたいオブジェクトを限定する
audit_whitelist_users:ログキングしないユーザを限定する


それでも大きくなり続けるのは、なんとなくいやだったので、ログローテートを設定します。
以下のようにしてみました。
とりあえず毎日ローテートして30日分残すことにしてみました。

vi /etc/logrotate.d/mysql-audit-log-rotate
-----------------------------------
/var/lib/mysql/mysql-audit.json {
  daily
  rotate 30
  missingok
  compress
  delaycompress
  sharedscripts
  postrotate
    if test -x /usr/bin/mysqladmin && \
      /usr/bin/mysqladmin ping &>/dev/null
    then
      /usr/bin/mysql --defaults-extra-file=/root/.my.cnf -e "set global audit_json_file_flush=ON"
    fi
  endscript
}
-----------------------------------

上記で利用する.my.cnfも作成します。
vi /root/.my.cnf
-----------------------------------
[mysql]
password = xxxxxxxx
user = root
-----------------------------------
chmod 600 /root/.my.cnf


ログローテートの確認です。2回目のlsでログが増えていることを確認します。
ls -l /var/lib/mysql/mysql-audit.json*
logrotate -f /etc/logrotate.d/mysql-audit-log-rotate
ls -l /var/lib/mysql/mysql-audit.json*


監査ログはこんな感じで残せるようにできたけど、監査ログを確認して異常を検知する方法がよくわからないので、監査ログを活用する方法をちゃんと理解したいところです。