ハニーポットCowrieについて 導入編

今日からブログを書き始めます。どうぞよろしくお願いします。第一回目はCowrieについて書くことにします。

Cowrieの概要

Cowrieはハニーポットの一種です。ハニーポットはここでは、サイバーセキュリティの世界で使われる攻撃を擬似的に受けるコンピューターのことを指します。セキュリティエンジニアやサイバーセキュリティを研究している人たちによって使われるようなコンピューターです。ハニーポットを利用することによって、サイバー攻撃を受け、受けた攻撃の内容を確認することができます。

ハニーポットをインターネット上に置くことによって、悪い人たちがハニーポットに対して、攻撃をしてきます。例えば、不正アクセスをしたり、マルウェアを置いたり、Webを改ざんしたりなどです。ハニーポットは、このような攻撃を擬似的に受け記録することができます。記録した攻撃内容を観察することによって、最新の攻撃手法やマルウェアに関する情報を把握することができます。

そして、Cowrieは不正アクセスの情報を知るためのハニーポットです。Cowrieは、sshやtelnetといったサーバーを遠隔操作するためのソフトウェアに対する不正アクセスの情報を記録できます。記録できる不正アクセスの情報は、”どのコンピューター”が、”どのようなアカウント情報(ユーザー名、パスワード)”を使って、不正アクセスをしようとしているかという情報です。例えば、IPアドレス172.16.12.108のコンピューターが、ユーザー名:root、パスワード:12345で不正アクセスをしようとしたといった情報が記録されます。

ProcSpace.netでは、Cowrieを使って不正アクセスのアカウント情報を収集し、統計情報として公開しています。

Cowrieに関連した公式の情報は下記となっています。

上記ドキュメントは英語のみとなっています。英語が分からないが興味はあるし運用してみたいという方もいらっしゃるかもしれませんので、インストール方法から設定方法までCowrieの使い方について書いていきます。

Cowrieの導入方法

それでは、上記ドキュメントの内容に多少アレンジや解説を加えながら、Cowrieをインストールし実際に動かすところまで書いていきます。ここでは、OSがUbuntu 16.04.6 LTS、Pythonはバージョン3を使った手順とします。

手順1 関係するソフトウェアのインストール

Cowrieを動かすために、Pythonに関連したソフトウェアが複数必要となります。そのソフトウェアのインストールを実施します。

$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython3-dev python3-minimal authbind

手順2 ユーザーの作成

Cowrieを動かすユーザーを作成します。作成するユーザー名はcowrieとします。下記コマンドを実行すると、いろいろと聞かれることになりますが、すべてEnterキーを押して進めてください。

$ sudo adduser --disabled-password cowrie

そして、今作成したcowrieユーザーにログインします。

$ sudo su - cowrie

手順3 Cowrieのダウンロード

GithubからCowrieをダウンロードします(Cowrieのリポジトリをクローンします。)。ダウンロード先は、cowrieユーザーのホームディレクトリ(/home/cowrie)とします。

$ git clone http://github.com/cowrie/cowrie

ダウンロード後、cowrieディレクトリ(/home/cowrie/cowrie)に移動します。

$ cd cowrie
$ pwd

手順4 仮想環境のセットアップ

Pythonの仮想環境を作り、セットアップします。virtualenvコマンドはpythonの仮想環境を作るコマンドです。Pythonの仮想環境を作ることで、同じサーバーに同居しているシステムに影響を与えることなく、Pythonのパッケージをインストールすることなどができます。

例えば、同じサーバー上にある他のシステムに全く影響を与えることなく、仮想環境の中で cryptographyというパッケージをインストールすることができます。ただし、仮想環境にインストールした場合は、他の共存しているシステムでは cryptography を利用することができません。

下記コマンドラインで仮想環境を作ります。

$ virtualenv --python=python3 cowrie-env

仮想環境を作成したら、有効化します。

$ source cowrie-env/bin/activate

仮想環境を有効化したら、Pythonのパッケージを仮想環境にインストールします。

(cowrie-env) $ pip install --upgrade pip
(cowrie-env) $ pip install --upgrade -r requirements.txt

ここまでで、Cowrieの一通りのインストールが完了しました。ここから、いくつかの設定を行い、Cowrieを動かすことをします。

手順5 SSHの設定

sshやtelnetでの不正アクセスで使われるポート番号は、基本的には既定値(ssh:22番、telnet:23番)です。そのため、sshは22番、telnetは23番のポート番号で不正アクセスを待ち受けるように、次の手順で設定します。

上記のポート番号の設定を行うと、自分自身(正規の管理者)が22番ポートや23番ポートを使って作業をすることができなくなってしまいます。不正アクセスとしても記録されてしまいます。そのため、正規の管理者がsshで作業をするためにsshdのポート番号を22番から別の番号(ここでは、2222とします) に変更します。telnetのポート番号の変更は、今回は対象外とします。

sshdのポート番号を変更するには、/etc/ssh/sshd_configのPortの値を変更します。なお、/etc/ssh/sshd_configを編集するためには、rootユーザーの権限が必要となります。 適切なユーザーを使って作業するようにしてください。

$ sudo vi /etc/ssh/sshd_config
変更前:
----------
Port 22
----------

変更後:
----------
Port 2222
----------

sshdのポート番号を2222に変更したら、sshdを再起動し、セッションを閉じます。

$ systemctl restart sshd 

sshdを再起動したら、今後は、sshdにはポート番号2222でアクセスすることになります。

手順6 Cowrieのポート設定

上記の手順の中で説明したように不正アクセスを、sshは22番、telnetは23番のポート番号で待ち受けるように設定します。

$ vi /home/cowrie/cowrie/etc/cowrie.cfg
変更前:
----------
[ssh]
listen_port = 2222
listen_endpoints = tcp:2222:interface=0.0.0.0

[telnet]
enabled = false
listen_port = 2223
listen_endpoints = tcp:2223:interface=0.0.0.0
----------

変更後:
----------
[ssh]
listen_port = 22
listen_endpoints = tcp:22:interface=0.0.0.0

[telnet]
enabled = true
listen_port = 23
listen_endpoints = tcp:23:interface=0.0.0.0
----------

Cowrieは、先程作成したcowrieユーザーで起動させることになります。cowrieユーザーはroot権限を持っていないため、特権ポートである22番ポートや23番ポートをオープンさせることができません。そのため、Authbindというプログラムを使って、特権ポートをオープンできるようにします。

$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/22
$ sudo chown cowrie:cowrie /etc/authbind/byport/22
$ sudo chmod 770 /etc/authbind/byport/22
$ sudo touch /etc/authbind/byport/23
$ sudo chown cowrie:cowrie /etc/authbind/byport/23
$ sudo chmod 770 /etc/authbind/byport/23

手順7 Cowrieの起動

ここまでで、基本的な設定は完了です。Cowrieを起動させます。

$ su cowrie
$ /home/cowrie/cowrie/bin/cowrie start
$ exit

正常にCowrieが起動できれば、/home/cowrie/cowrie/var/log/cowrieディレクトリに不正アクセスの内容が記録されていきます。

ここまで、閲覧していただきましてありがとうございました。不正アクセスログイン後にどのようなオペレーションが行われているかといったこともCowrieで記録することができます。次回はそのような機能について紹介します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です