ログ [セキュリティ研究室]

 こんにちは!
 ナビゲータのEVEです。

 昨日は、ログファイルの肥大化対応をしていて、システム開発ができませんでしたが、本日は、障害により失った、バッチファイルの製造を行いました。
 障害前の製造では、いろいろ悩み、バッチ処理共通で使用するクラスを製造するなどしていたということもあり3~4日かかったのですが、今回は、2時間程度で製造してしまいました。まっ、悩む部分がなければこんな感じです。一応バッチ処理をどう作ろうかという方向性が決まったので、今後は、そんなに時間をかけずに製造できるような気がします。
 では、本日は、土曜日ということでセキュリティの日でということで、ログファイルについて書きたいと思います。
 今週は、ログファイルの肥大化という問題をかかえ、その原因が自分の不勉強だということが分かりました。Linuxは、1969年に産声を上げ、現在に至るまで、いろいろな技術を吸収し成長してきました。そのため、今回ログファイルと一言でいっても、いろいろな方法で出力していることが分かりました。
 今回は、問題となった、ufwのログを中心に話していきたいと思います。

[ufw]

 まず、ufwとはどんなツールなのか調べてみましょう。

 UFW(Uncomplicated Firewall)は、Linuxのファイアウォール管理ツールで、複雑なiptablesを簡単に扱えるように設計されたものです。Ubuntuでは標準搭載されており、初心者でも直感的にセキュリティ設定が可能です
    歴史
  • 開発背景:Linuxカーネルには強力なパケットフィルタリング機能「netfilter」があり、これを操作するツールがiptablesです。しかしiptablesは柔軟な反面、構文が複雑で初心者には扱いづらいという課題がありました。
  • UFWの登場:この課題を解決するため、Ubuntu公式が「Uncomplicated Firewall」として開発。Ubuntu 8.04 LTS(2008年)以降の全インストールで利用可能になりました。
  • 主な機能
  • iptablesのラッパー:内部ではiptablesを利用しつつ、ユーザーにはシンプルなコマンドを提供。
  • iptablesで同じことをする場合は複雑なオプション指定が必要。
  • 基本機能
  • ポート番号やサービス名で通信の許可/拒否
  • IPv4/IPv6両対応
  • 特定のIPアドレスやサブネット単位で制御
  • デフォルトポリシー(全拒否→必要な通信のみ許可)
  • 追加機能
  • アプリケーションプロファイル(例:ApacheやNginx用の定義済みルール)
  • ログ出力と監視機能
  • Rate Limiting(連続アクセス制限によるDoS対策)

 比較的新しいツールでありながら、最初にLinuxを使用した時にFWとして利用したiptablesという従来のシステムを利用しているのが分かります。

[ufwログ]

 では、ufwでは、どのようにログを出力しているのでしょうか?その流れをおってみます。

 UFW(Uncomplicated Firewall)は、Linuxのファイアウォール管理ツールで、複雑なiptablesを簡単に扱えるように設計されたものです。Ubuntuでは標準搭載されており、初心者でも直感的にセキュリティ設定が可能です
    パケット検知(netfilter/iptablesレイヤー)
  1. Liptablesがnetfilter機能を使って、パケットフィルタリング
  2. カーネルログへの書き込み
  3. LOG ターゲットにより、カーネルの netfilter logging subsystem がイベントを記録
  4. rsyslogによる収集
  5. rsyslogがカーネルログを監視し逐次情報を収集
  6. /var/log/ufw.log への出力
  7. rsyslogのルールに従い、抽出されたログは /var/log/ufw.log
この流れからわかりますが、ufwは、rsyslogの機能を使って、カーネルログから情報を取得し、それをログファイルとして書き出していました。今回、私は、新たに、rsyslog用のコントロールファイルを製造し、それにより新たにログを出力していますが、これが、今回の肥大化の原因だと分かりました。
 ここで、新たに出てきた用語があるので、調べておきましょう。
 まず、netfilterですが、これは、Linux系のパケットフィルタリング機能で、2001年から実装されたものになります。機能としては、パケットフィルタリング、NATなどで、iptables、ufwなどが利用しています。
 そして、次に、LOGターゲットですが、これは、ログに書き込む際のアクションになります。
 Linuxは、ルール→ 条件 → アクションという一連の流れでほぼすべてのシステムが動作しています。以上の流れで言うと、iptablesに記述されたルール、条件に基づき、LOGターゲットにより書き込むというアクションの部分に相当します。

[あとがき]

 今週は、ufwのログの出力方法について調べました。しかし、これは、ufw限定の動きであり、他のツールは別の方法を採用しています。できれば、今週は、その種類まで調べたかったのですが、時間が来てしまったので、ここまでとします。

 では、また!

コメント