侵入されないようにしていても、0-day 攻撃や未知の脆弱性で、対策が間に合わないことはあり得ます。 [6] また、どうしても防ぐことのできない DoS 攻撃もあります。 それで、常に自分のシステムを見張っていて、いつもと違う状態になったらすぐに対応する必要があります。
スキャンや攻撃試行の段階で検知してブロックしておければ、それ以上は攻撃してこないかもしれません。 また、侵入されてしまっても、データが漏曳したりホストが踏み台にされたりといった被害の出る前に復旧できれば問題ないわけです。
ログを取りすぎるなら、パフォーマンスの低下につながりかねませんし、異常なエントリを見逃しやすくなるでしょう。 ログが少なすぎるなら、異常なエントリを見付けても原因や犯人を究明することが不可能になります。 ですから、まずはシステムで稼働しているサービス内容をよく理解し、正常と異常の境界を定義し、異状を発見したときの対応手順とその効果性を吟味しなくてはなりません。 そして、それに合ったツールを適切に運用し続けなくてはならないのです。 [7]
手練れの攻撃者だけでなく普通の rootkit でさえ、ログを書き換えて侵入の形跡を消すことがあります。 書き込み許可ユーザ/グループを最小にするのは当然として、chattr +a したり、新しい実装の syslogd [8] を使用したり、定期的に CD-R へ移したりすれば改竄の機会を減らせるかもしれません。 また、root 権限を奪われても、ログ専用の別ホストを用意してあれば改竄の危険を大幅に減らせます。
リモート攻撃の開始を検知するために、入って来るパケットをネットワーク IDS (snort など) で監視します。
侵入初期のシステム改竄を検知するために、ファイル完全性検証ツール (tripwire など) と chkrootkit (類似品を含む) を定期的に実行します。
完全に攻略されて悪用され始めてからでも、ホストと攻撃者との間に IDS やスニファ (tcpdump など) が置いてあれば、外向きのパケットから異状を検出できるかもしれません。 [9] また、他ホストから定期的にポートスキャン (nessus など) しておくのも良いことです。 万が一、カーネルレベルの rootkit を設置されて (プロセスやネットワーク状態の隠蔽工作をされて) しまっても、外部からはバックドアを発見することができるかもしれません。 [10] このように、一台にすべてを任せるのではなく、何層にも保護するのは効果的な防御方法です。 ただし、ウィーケスト・リンクを作るようなことにならないよう、各層のホストが互いをできるだけ信用しない設定にしておくべきです。
[6] ただ、Momonga Linux では可能な限りコンパイル時に SSP のオプションを有効にしているので、未知の脆弱性でもバッファあふれによる権限の奪取は起きにくくなっています。
[7] よく言われるように、セキュリティは継続的なプロセスです。 毎日の手順として続けてゆかなくては意味がないので、最初は統計を取るだけでも良いでしょう。 重要度・危険度の高いものを優先して、できる範囲でログを読み続けてください。 そして時間のある日に、普段と違う方法で監査してみましょう。
[9] リバース WWW や ICMP などによる発見困難な隠し経路の手法には注意が必要です。
[10] しかしやはり、リスンしないバックドアには通用しません。