Debian8でローカルOSSECインストールを設定する方法
序章
OSSECは、オープンソースのホストベースの侵入検知システム(HIDS)であり、ログ分析、整合性チェック、Windowsレジストリ監視、ルートキット検出、時間ベースのアラート、およびアクティブな応答を実行します。 サーバー内で何が起こっているかを監視したい場合は、サーバーにインストールするアプリケーションです。
OSSECは、インストールされているサーバーのみを監視するためにインストールできます。これは、OSSECの用語ではローカルインストールです。または、サーバーとしてインストールして、1つ以上のエージェント[ X199X]。 このチュートリアルでは、OSSECをインストールして、インストールされているDebian 8サーバー、つまりローカルOSSECインストールを監視する方法を学習します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- sudo非rootユーザーとSSHキーを備えたDebian8ドロップレット。これは、このチュートリアルに従って設定できます。
ステップ1—必要なパッケージのインストール
このステップでは、OSSECに必要なパッケージをインストールします。 まず、パッケージデータベースを更新します。
sudo apt-get update
次に、利用可能なアップデートをインストールします。
sudo apt-get -y upgrade
最後に、OSSECの依存関係(build-essential
およびinotify-toops
)とネットワークタイムプロトコルサービスであるntp
をインストールします。
sudo apt-get install build-essential inotify-tools ntp
最後に、NTPサービスを有効にします。 これにより、サーバーは正確な時刻を自動的に維持できます。
sudo systemctl start ntp
ステップ2—ファイアウォールを有効にする
Debian 8サーバーの新規インストールには、アクティブなファイアウォールアプリケーションがありません。 このステップでは、IPTablesファイアウォールアプリケーションを有効にする方法と、再起動後もランタイムルールが持続することを確認する方法を学習します。
これを実現する最も簡単な方法は、次を使用してiptables-persistent
パッケージをインストールすることです。
sudo apt-get install -y iptables-persistent
認証後、IPv4およびIPv6ファイアウォールルールを別々のファイルに保存するように求められます。 両方のプロンプトでENTERを押して、デフォルトの場所である/etc/iptables/rules.v4
と/etc/iptables/rules.v6
を受け入れます。
デフォルトでは、これらのファイルにはルールがないため、サーバーを保護し、SSH接続を開いたままにするためにルールを作成する必要があります。 IPv4ルールのみに関心があるため、rules.v4
ルールファイルのみを変更します。
nano
またはお好みのテキストエディタを使用して、rules.v4
ルールファイルを開きます。
sudo nano /etc/iptables/rules.v4
そのファイルの完全な内容は次のようになります。
元の/etc/iptables/rules.v4
# Generated by iptables-save v1.4.21 on Sat May 9 01:27:00 2015 *filter :INPUT ACCEPT [5722:416593] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [4372:503060] COMMIT # Completed on Sat May 9 01:27:00 2015
次のデフォルトのルールセットは、サーバーを保護してSSH接続を維持するのに十分なので、:OUTPUT ACCEPT [4372:503060]行とCOMMIT行の間にコピーして貼り付けます。 これらのルールは、公式Debianドキュメントから取られました。 インラインコメントで各ルールの機能を確認できます。
# Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/8 -j REJECT # Accept all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allow all outbound traffic -A OUTPUT -j ACCEPT # Uncomment the next two lines to allow HTTP and HTTPS connections #-A INPUT -p tcp --dport 80 -j ACCEPT #-A INPUT -p tcp --dport 443 -j ACCEPT # Allow SSH connections. If you changed your SSH port, do same here. -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT # Allow ping -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Drop all other inbound - default deny unless explicitly allowed policy -A INPUT -j DROP -A FORWARD -j DROP
ファイルを保存して閉じます。 次に、新しいルールセットを適用するには、iptables-persistent
を再起動します。
sudo systemctl restart netfilter-persistent
これで、このコマンドを使用してルールが設定されていることを確認できます。
sudo iptables -L
出力は次のようになります。
iptables-L出力
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable . . . Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere
ステップ3—OSSECのダウンロードと検証
OSSECは、圧縮されたtarballとして提供されます。 このステップでは、tarballが改ざんされていないことを確認するために使用されるチェックサムファイルとそのチェックサムファイルをダウンロードします。 プロジェクトのウェブサイトで最新バージョンを確認できます。 この記事の執筆時点では、OSSEC2.8.1が最新の安定したリリースです。
tarballをダウンロードするには、次のように入力します。
wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz
次に、を使用してチェックサムファイルをダウンロードします
wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt
両方のファイルをダウンロードした後、圧縮されたtarballのmd5sumを確認します。
md5sum -c ossec-hids-2.8.1-checksum.txt
出力は次のようになります。
md5sum出力
ossec-hids-2.8.1.tar.gz: OK md5sum: WARNING: 1 line is improperly formatted
その後、SHA1チェックサムを確認します。
sha1sum -c ossec-hids-2.8.1-checksum.txt
その出力は次のようになります。
sha1sum出力
ossec-hids-2.8.1.tar.gz: OK sha1sum: WARNING: 1 line is improperly formatted
いずれの場合も、WARNING行は無視してください。 OK 行は、ファイルが正常であることを確認するものです。
ステップ4—OSSECのインストール
このステップでは、OSSECをインストールします。 まず、それを解きます。
tar xf ossec-hids-2.8.1.tar.gz
ossec-hids-2.8.1
というディレクトリに解凍されます。 そのディレクトリに移動します。
cd ossec-hids-2.8.1
注:バージョン2.8.1で導入されたOSSECのバグがあります。 このバグにより、/etc/hosts.deny
ファイルの内容が上書きされます。 バージョン2.9にはすでに恒久的な修正があり、まもなくリリースされる予定です。
/etc/hosts.deny
のバグを修正するには、ダウンロードしたtarballからOSSECを抽出した後、/var/ossec/active-response
ディレクトリのhost-deny.sh
ファイルを開きます。
nano active-response/host-deny.sh
ファイルの終わりに向かって、# Deleting from hosts.deny
コメントの下にあるTMP_FILE =
で始まる以下のコードの2行を探します。 両方の行を編集して、=
記号の両側のスペースを削除し、コードブロックが次のようになるようにします。
host-deny.shコードブロックを変更しました
# Deleting from hosts.deny elif [ "x${ACTION}" = "xdelete" ]; then lock; TMP_FILE=`mktemp /var/ossec/ossec-hosts.XXXXXXXXXX` if [ "X${TMP_FILE}" = "X" ]; then # Cheap fake tmpfile, but should be harder then no random data TMP_FILE="/var/ossec/ossec-hosts.`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -1 `" fi
ファイルを保存して閉じます。 これでバグ修正は終了です。
次に、インストールを開始します。
sudo ./install.sh
インストールプロセス全体を通して、入力を入力するように求められます。 最初に、インストール言語を選択するように求められます。デフォルトでは、英語(en)です。 希望する言語の場合は、ENTERを押してください。 それ以外の場合は、最初にサポートされている言語のリストから2文字を入力します。 次に、もう一度ENTERを押してインストールを開始します。
質問1は、どのような種類のインストール(サーバー、エージェント、ローカル、ハイブリッド、またはヘルプ)が必要ですか?を尋ねます。 local と入力し、ENTERを押します。
以下のすべての質問については、 ENTER を押してデフォルトを受け入れますが、質問3.1ではメールアドレスの入力を求められることに注意してください。 それを入力すると、インストーラーはそれを使用して対応するSMTPサーバーを自動的に検索します。
インストールが成功した場合、インストール後の出力の最後の数行は次のようになります。
OSSECの正常なインストール出力
- Configuration finished properly. - To start OSSEC HIDS: /var/ossec/bin/ossec-control start - To stop OSSEC HIDS: /var/ossec/bin/ossec-control stop - The configuration can be viewed or modified at /var/ossec/etc/ossec.conf . . .
ステップ4—OSSECの電子メール設定をカスタマイズする
ここでは、前の手順で指定した電子メールの資格情報とOSSECが自動構成した電子メールの資格情報が正しいことを確認します。
電子メール設定は、OSSECのメイン構成ファイル-ossec.conf
にあり、これは `` / var / ossec/etc`ディレクトリにあります。 OSSECファイルにアクセスして変更するには、最初にrootユーザーに切り替える必要があります。
sudo su
ルートになったら、OSSECの構成ファイルがあるディレクトリに移動します。
cd /var/ossec/etc
次に、構成ファイルのバックアップコピーを作成します。
cp ossec.conf ossec.conf.00
nano
テキストエディタまたはお好みのテキストエディタを使用して元のファイルを開きます。
nano ossec.conf
メール設定はファイルの先頭にあり、次のようになります。
/var/ossec/etc/ossec.conf
<global> <email_notification>yes</email_notification> <email_to>[email protected]</email_to> <smtp_server>mail.example.com.</smtp_server> <email_from>[email protected]</email_from> </global>
' インストール中に送信したメールです。 アラートはそのメールアドレスに送信され、 ' インストールスクリプトによって自動検出されたSMTPサーバーです。 これらの値を変更する必要はありません。
' OSSECのアラートが送信されているように見える電子メールアドレスです。 デフォルトでは、OSSECのメールユーザーアカウントとサーバーのホスト名に基づいて作成されます。 これを有効な電子メールアドレスに変更して、電子メールプロバイダーのSMTPサーバーによってスパムとしてタグ付けされる可能性を減らす必要があります。 ご了承ください ' と ' 受信側のSMTPサーバーに厳密なスパムポリシーがない場合も同じです。
メール設定を変更したら、ファイルを保存して閉じます。 次に、OSSECを起動します。
/var/ossec/bin/ossec-control start
受信トレイで、OSSECが開始されたことを通知する電子メールを確認してください。 OSSECインストールから電子メールを受信した場合、将来のアラートも受信トレイに届くことがわかります。 そうでない場合は、スパムフォルダを確認してください。
ステップ6—アラートを追加する
デフォルトでは、OSSECはサーバー上のファイルの変更やその他のアクティビティについてアラートを発行しますが、新しいファイルの追加についてはアラートを送信せず、リアルタイムでアラートを送信しません—スケジュールされたシステムスキャン(79200秒(または22)後のみ)時間)デフォルトで。 このセクションでは、OSSECを変更して、ファイルの追加をリアルタイムでアラートできるようにします。
まず、ossec.conf
を開きます。
nano ossec.conf
下にスクロールして ' セクション。 <frequency>
タグのすぐ下に、< alert\_new\_files>yes< /alert\_new\_files >
を追加します。
<syscheck> <!-- Frequency that syscheck is executed - default to every 22 hours --> <frequency>79200</frequency> <alert_new_files>yes</alert_new_files>
ossec.conf
を開いたまま、OSSECが監視するシステムディレクトリのリストを確認します。これは、変更した最後の行のすぐ下にあります。 report_changes="yes" realtime="yes"
を両方のディレクトリタグに追加します。
<!-- Directories to check (perform all possible verifications) --> <directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
OSSECが監視するように構成されているディレクトリのデフォルトのリストの他に、監視したいディレクトリを追加することもできます。 たとえば、ホームディレクトリを追加できます。 これを行うには、この新しい行を他のディレクトリ行のすぐ下に追加し、ユーザー名に置き換えます。
<!-- Directories to check (perform all possible verifications) --> <directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories> <directories report_changes="yes" realtime="yes" check_all="yes">/home/<^sammy</directories><^>
次に、ossec.conf
を保存して閉じます。
次に変更するファイルは/var/ossec/rules
ディレクトリにあるので、そのディレクトリに移動します。
cd /var/ossec/rules
/var/ossec/rules
ディレクトリには、OSSECのデフォルトのルール定義を含むossec_rules.xml
や、カスタムルールを追加できるlocal_rules.xml
など、多くのXMLファイルが含まれています。
ossec_rules.xml
では、ファイルが監視対象ディレクトリに追加されたときに発生するルールはルール554です。 デフォルトでは、OSSECはそのルールがトリガーされたときにアラートを送信しないため、ここでのタスクはその動作を変更することです。 ルール554はデフォルトで次のようになります。
/var/ossec/rules/ossec_rules.xmlのルール554
<rule id="554" level="0"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule>
ルールがレベル0に設定されている場合、OSSECはアラートを送信しないため、そのルールをlocal_rules.xmlにコピーし、アラートをトリガーするように変更します。 これを行うには、local_rules.xml
を開きます。
nano local_rules.xml
ファイルの最後の行の前に以下を追加します鬼ごっこ。
<rule id="554" level="7" overwrite="yes"> <category>ossec</category> <decoded_as>syscheck_new_entry</decoded_as> <description>File added to the system.</description> <group>syscheck,</group> </rule> </group> <!-- SYSLOG,LOCAL --> <!-- EOF -->
ファイルを保存して閉じ、OSSECを再起動して変更を適用します。
/var/ossec/bin/ossec-control restart
これで、ファイルまたは追加、変更、または削除されるたびにアラートを受信するはずです。 OSSECは、システム全体をスキャンした後でのみ、リアルタイムでファイルの追加を警告しないことに注意してください。
ステップ6(オプション)—IPTables拒否アラートの停止
このステップはオプションですが、強くお勧めします。IPTablesが拒否されたメッセージでアラートを出さないようにOSSECを構成します。
このチュートリアルの最初に、IPTablesファイアウォールを有効にしました。 OSSECをインストールした後、ルール1002でアラートを出します。これは、IPTablesが攻撃者を拒否し、その発生をsyslogに記録したときにトリガーされます。 攻撃者がいつ失敗したかを知ることは良いことですが、そのようなアラートは毎日数百にのぼり、受信トレイを詰まらせる可能性があります。
これらのアラートを削除するには、ルール1002をカスタマイズする必要があります。 そのルールは/var/ossec/rules/syslog_rules.xml
にあり、次のようになります。
/var/ossec/rules/syslog_rules.xmlのルール1002
<rule id="1002" level="2"> <match>$BAD_WORDS</match> <options>alert_by_email</options> <description>Unknown problem somewhere in the system.</description> </rule>
syslog_rules.xml
を開いて編集します。
nano /var/ossec/rules/syslog_rules.xml
BAD_WORDS
変数を見つけます。この変数は、そのファイルの先頭に定義されており、いくつかのキーワードが含まれています。 次のようになります。
/var/ossec/rules/syslog_rules.xmlのBAD_WORDS定義
<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>
BAD_WORDS
定義の下に、この新しい変数IGNORED_WORD
をコピーして貼り付けます。 変数にはキーワードが1つだけ含まれています。
<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var> <var name="IGNORED_WORD">denied</var>
次に、ルール1002のカスタマイズされたバージョンで新しいIGNORED_WORD
変数を使用します。これを、ルール100031と呼びます。 完全なルールを以下に示します。 ファイルの一番下、グループタグのある行の前にコピーして貼り付けます。
<rule id="100031" level="0"> <if_sid>1002</if_sid> <match>$IGNORED_WORD</match> <description>Ignored IPTables deny messages.</description> </rule> </group> <!-- EOF -->
ファイルを保存して閉じます。 変数とカスタマイズされたルールを設定したら、OSSECを再起動します。
/var/ossec/bin/ossec-control restart
これにより、OSSECはIPTables拒否メッセージのアラートの送信を停止する必要があります。
結論
Debian8サーバーにローカルOSSECをインストールして設定するのに必要なのはこれだけです。 プロジェクトの公式ドキュメントで調べることができる、さらに多くのカスタマイズが利用可能です。