序章
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
ルールファイル。
を開きます rules.v4
ルールファイルを使用して nano
またはお気に入りのテキストエディタ。
- sudo nano /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
出力は次のようになります。
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
出力は次のようになります。
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
その出力は次のようになります。
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
バグ、開いて host-deny.sh
のファイル /var/ossec/active-response
ダウンロードしたtarballからOSSECを抽出した後のディレクトリ。
- nano active-response/host-deny.sh
ファイルの終わりに向かって、以下で始まるコード内の2行を探します。 TMP_FILE =
、下 # Deleting from hosts.deny
コメント。 両方の行を編集して、の両側のスペースを削除します =
コードブロックが次のようになるように署名します。
# 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サーバーを自動的に検索します。
インストールが成功した場合、インストール後の出力の最後の数行は次のようになります。
- 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
メール設定はファイルの先頭にあり、次のようになります。
<global>
<email_notification>yes</email_notification>
<email_to>sammy@example.com</email_to>
<smtp_server>mail.example.com.</smtp_server>
<email_from>sammy@example.com</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
The /var/ossec/rules
ディレクトリには、次のような多くのXMLファイルが含まれています ossec_rules.xml
、OSSECのデフォルトのルール定義が含まれています。 local_rules.xml
、ここでカスタムルールを追加できます。
の ossec_rules.xml
、ファイルが監視対象ディレクトリに追加されたときに発生するルールはルール554です。 デフォルトでは、OSSECはそのルールがトリガーされたときにアラートを送信しないため、ここでのタスクはその動作を変更することです。 ルール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
、および次のようになります。
<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 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>
次に、新しいものを使用します IGNORED_WORD
ルール1002のカスタマイズされたバージョンの変数。これをルール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をインストールして設定するのに必要なのはこれだけです。 プロジェクトの公式ドキュメントで調べることができる、さらに多くのカスタマイズが利用可能です。