開発者ドキュメント

SSHハニーポットであるKippoをUbuntuクラウドサーバーにインストールする方法

ステータス:非推奨

この記事は非推奨になり、保守されなくなりました。

理由

Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。

プロジェクトREADMEによると、 Kippo は保守されなくなり、Cowrieに置き換えられました。

代わりに参照してください

この記事は参照として役立つ場合がありますが、ベストプラクティスに従わなかったり、このリリースまたは他のUbuntuリリースで機能しない場合があります。 使用しているUbuntuのバージョン用に作成された、Kippoの後継プロジェクトであるCowrieに関する最近の記事を使用することを強くお勧めします。

現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

序章

Kippoは、Pythonで記述されたSSHハニーポットツールであり、ブルートフォース攻撃と、攻撃者によって実行されたシェルの相互作用をログに記録できます。 このチュートリアルでは、Kippoをセットアップする方法と、クラウドサーバーへのブルートフォース攻撃を防ぐのに役立つ簡単なソリューションを追加する方法を紹介します。

Kippoが提供するいくつかの興味深い機能:

Kippoの作成者であるdesasterによるqouteとして、次のように述べています。 実生活と同じように、そのようなことをすることで、自分を守る方法をよく知っているはずです!」

キッポの詳細については、こちらをクリックしてください。

注:このガイドは、クラウドサーバーの作成方法を既に知っていることを前提としています。 そうでない場合は、続行する前にこのガイドに従ってください。 さらに、これはUbuntu12.10×32サーバーの新規インストールに基づいています。

ステップ1:Ubuntuクラウドサーバーにアクセスして更新/アップグレードする

SSHを使用してクラウドサーバーにログインします。

ssh root@YOUR_IP_HERE

次のコマンドを入力します。

apt-get update

apt-get upgrade

ステップ2:SSHポートを変更する

Kippoは、ポート2222を介してアクセスされたすべてのものをログに記録します。 しかし、ハッカーが使用するほとんどの自動化ツールは、デフォルトでポート22にSSHを使用します。 したがって、代わりにkippoにポート22をリッスンさせることをお勧めします。 これを行うには、サーバーがSSHに使用するポートを変更する必要があります。 セキュリティの問題のためにSSHポートを変更することもお勧めしますが、他のサードパーティプログラムを扱う場合はこれを覚えておく必要があります。

これからは、viをテキストエディタとして使用します。 nanoのようなものを使用する場合は、viをnanoに置き換えてください。

vi /etc/ssh/sshd_config

以下のファイルが表示されます。

ポート番号を別のものに変更する必要があります。 この例では、8925になります。

# What ports, IPs and protocols we listen for
Port 8925

これは期待される結果であるはずです。 ファイルを保存して、ターミナルで終了します。

SSHを再起動する必要があります。 入力:

reload ssh

ステップ3:依存関係をインストールする

kippoの依存関係をインストールする必要があります。 次のコマンドがあります。

apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted 

次に、「subversion」を使用してkippoをダウンロードします。

:-$ apt-get install subversion 

ステップ4:Kippoユーザーを作成する

ユーザーを追加し、ホームディレクトリを/ home / kippoに設定し、デフォルトのログインシェルを/ bin / bashに設定してから、ホームディレクトリを作成します。 最後に、このユーザーにsudo権限を付与します。

useradd -d /home/kippo -s /bin/bash -m kippo -g sudo

手順5:ポート番号をポート22に変更します

Linuxシステムでは、rootユーザーが1024未満のポートを実行できる唯一のユーザーです。 また、セキュリティ上の理由から、Kippoをrootとして実行することはあまり良い考えではありません。 このトピックについては、長い間多くの議論がありました。 ただし、このチュートリアルでは、使いやすさのためにAuthBindを使用します。

(別の方法を使用したい場合は、それを実行して、ステップ6にスキップできます。)

AuthBindをインストールします。

apt-get install authbind

新しいファイルを作成します。

touch /etc/authbind/byport/22

所有権をKippoユーザーに変更します。

chown kippo /etc/authbind/byport/22

読み取り、書き込み、および実行するファイルのアクセス許可を変更します。

:-$ chmod 777 /etc/authbind/byport/22

ステップ6:Kippoのダウンロードと構成

これからは、kippoユーザーを使用します。 次の方法でkippoにアクセスします。

su kippo

Kippoのホームディレクトリにいることを確認してください。

cd

kippos SVNをダウンロードする:

svn checkout http://kippo.googlecode.com/svn/trunk/ ./kippo 

ダウンロードしたディレクトリにディレクトリを変更します。

cd kippo

ポート番号を、kippoがデフォルトでリッスンする2222からポート22に変更します。 提供されている構成ファイルを移動して名前を変更します。

mv kippo.cfg.dist kippo.cfg

次に、ファイルを編集します(Viを使用していることを思い出してください)。

vi kippo.cfg

構成ファイルは次のようになります。

ここから、これを編集します。

# Port to listen for incoming SSH connections.
#
# (default: 2222)
ssh_port = 2222

# Port to listen for incoming SSH connections.
#
# (default: 2222)
ssh_port = 22

保存して終了します。

ステップ7:スタートアップスクリプト

この時点で、SSHソリューションにAuthBindを使用するようにkippoの起動スクリプトを編集することをお勧めします。

スクリプトを開きます。

vi start.sh

次のように表示されます。

#!/bin/sh
echo -n "Starting kippo in background..."
twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid

変更します:

twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid

authbind --deep twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid

ファイルを保存して終了します。

次に、スクリプトを開始します。 サーバーが再起動した場合は、これを自動化できます。

./start.sh

これで、すべてが/ home / kippo / kippo /log/に記録されます。

Kippoでのロギング

追加の設定なしでログに記録されるものがいくつかあります。 その1つは、不正アクセスのログ記録です。 たとえば、誰かがSSHを使用してクラウドサーバーにログインしようとすると、ポート番号が変更されたことを知らずに、次のように表示されます。

start.sh スクリプトが実行されている限り、イベントは/home/kippo/kippo/log/kippo.logに記録されます。 そのファイルを(選択した)テキストエディタで開いて、何がログに記録されているかを確認しましょう(私は上記のディレクトリにいます)。

vi kippo.log

これを行うと、次の行が表示されます。

これを分解して、何が起こっているのかを理解しましょう。

2013-05-09 00:34:55+0000 [-] Log opened.
2013-05-09 00:34:55+0000 [-] twistd 12.2.0 (/usr/bin/python 2.7.3) starting up.
2013-05-09 00:34:55+0000 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2013-05-09 00:34:55+0000 [-] HoneyPotSSHFactory starting on 22
2013-05-09 00:34:55+0000 [-] Starting factory 

まず、ログファイルを開いて、kippoが追加できるようにします。 Python環境を起動します。 ここから、ログの3行目に、イベントループを定義します(それが何であるかを知りたい場合は、ここをクリックをクリックしてください)。 Kippo環境は、前に構成ファイルで指定したポート22に設定されます。 最後に、Kippoが行う作業の大部分を実行する工場環境を開始します。

これで、侵入者のログが表示されます。 これまで見てきたように、デフォルトのSSHポート22を介して接続することはできます。 ただし、これはダミーのアクセスポイントであることを忘れないでください。 これは、侵入者がクラウドサーバーを「ハッキング」しているときに侵入者に信じてもらいたいことです。 これにより、ユーザー情報とターミナルウィンドウに入力された内容をログに記録できるようになるため、これが重要になります。

2013-05-09 00:35:21+0000 [kippo.core.honeypot.HoneyPotSSHFactory] New connection: 176.255.34.109:47908 (198.211.109.193:22) [session: 0]
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] Remote SSH version: SSH-2.0-OpenSSH_6.1p1 Debian-4
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] kex alg, key alg: diffie-hellman-group1-sha1 ssh-rsa
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] outgoing: aes128-ctr hmac-md5 none
2013-05-09 00:35:21+0000 [HoneyPotTransport,0,176.255.34.109] incoming: aes128-ctr hmac-md5 none
2013-05-09 00:35:26+0000 [HoneyPotTransport,0,176.255.34.109] NEW KEYS
2013-05-09 00:35:26+0000 [HoneyPotTransport,0,176.255.34.109] starting service ssh-userauth

ご覧のとおり、kippoは、攻撃者がSSHを使用してサーバーに侵入しようとしたときに接続が検出されたことをログに記録しています。 ご覧のとおり、IPアドレスと使用しているポートを取得します(ダミーのデフォルトポートであるポート22に注意してください)。 「ハッカー」のマシンを振り返ると、通常のRSA(アルゴリズム)指紋IDがポップアップ表示されます。これは、クラウドサーバーに初めてログインした場合に通常表示されるものです。

これはログでも確認できます。 キーペアの送信と受信の送信は、サーバーからクライアントに渡されます。 その後、新しいキーが受け入れられ、ssh-userauthのサービスが開始されます。 この時点で、サーバーに直接ログインしていて、サーバーとクライアントとして正しいSSHキーが設定されているかのようになります。 しかしもちろん、私たちはここにいません。 これは次の行で見ることができます:

2013-05-09 00:35:26+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth none
2013-05-09 00:35:26+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] login attempt [root/chccbcaqkyoz] failed
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root failed auth keyboard-interactive
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] unauthorized login:
2013-05-09 00:35:42+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] login attempt [root/chccbcaqkyoz] failed
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root failed auth keyboard-interactive
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] unauthorized login:
2013-05-09 00:35:44+0000 [SSHService ssh-userauth on HoneyPotTransport,0,176.255.34.109] root trying auth keyboard-interactive
2013-05-09 00:35:45+0000 [HoneyPotTransport,0,176.255.34.109] connection lost

SSHキーを介して即座に接続しようとしますが、失敗します。 このログは、「ハッカー」がターミナルウィンドウでキーボードを使用していることも検出し、アクションが完了するとログに記録されます。

ここでは、「ハッカー」がrootユーザーのパスワード「chccbcaqkyoz」を入力しようとしていることがわかります。 もちろんこれは失敗しますが、彼らが何を入力したかを確認したいと思います。 これは、ユーザーが終了するまで、つまり接続が失われるまで続きます。

結論

このツールには他にもたくさんの機能があり、必要に応じて人々に強力なトリックをかけることができます。 ただし、覚えておくべき主なことは、クラウドサーバーで何をするかについて常にうんざりすることです。 何かをする前にセキュリティを考えてください。 そうすることで、スケーリング、より機密性の高いデータの保持などが必要な場合に、長期的には役立ちます。

このSSHアクセスのチュートリアルで行ったように、サーバーのデフォルトのポート設定を定期的に変更することを確認することをお勧めします。 これは大いに役立ちます、そしてあなたは私たちがちょうどしたように何かをすることができます!

また、kippoのソースコードもご覧ください。 これにより、このツールの機能をよりよく理解できるようになります。

次に、パスワード「12345」を使用して、他に何がログに記録されているかを確認します。

モバイルバージョンを終了