SSHハニーポットをLinuxに設置する方法と結果

## 概要

今回はLinuxのSSHにハニーポットを設置してみたので、その方法と結果をシェアしたいと思います。

#### 参考

今回SSHを設置する方法は、このYoutubeの動画を参考にしています。

https://youtu.be/WomC6LRAoyo

設置するハニーポットはこれです。

https://github.com/kingtuna/sshpot

## 環境

僕が使用した環境を参考までにお伝えします。
同じ環境でしか動作しないわけではありませんが、Debian系のLinux以外を使うとコマンド等の違いがあると思いますが、ご了承ください。

クラウドサービス：[Digital Ocean](https://www.digitalocean.com/)
OS：Debian 10 x64
RAM：2GB

## 用語解説

**SSH**：リモートコンピュータと通信するためのプロトコル。全ての通信が暗号化されている。基本的にPort22。

**ハニーポット**：攻撃者を誘い出すための罠。
https://cybersecurity-jp.com/security-measures/29299

**Linux**：OS（オペレーティングシステム）の一種。MacやWindowsの仲間。

**Debian**：Linuxディストリビューションの一種。

## ハニーポットの設置方法

では早速SSHにハニーポットを設置していきましょう。

SSHは用語解説にあったようにリモートコンピュータと通信するためのプロトコルです。つまり、通信を始めるためにログインの様な過程を踏む必要があります。

SSHに接続するコマンドの例を載せておきます。通常はこのコマンドの後にパスワードを聞かれます。

```
ssh root@192.168.0.1 -p 22
```
SSHにハニーポットを設置することで、ハッカーがどんなユーザーネームとパスワードでログインしようとしているのかデータを取れるなと思ったので今回はSSHに決めました。(SSH以外の方法でもハニーポットを仕掛けることはもちろん可能です。)

#### 注意点

これから僕が伝える手順で、実際に自分でもハニーポットを設置してみようと考えている人に注意点があります。

それはハニーポットを仕掛けるLinuxのマシンがパブリックのIPアドレスを持っていなければいけないことです。今回の方法では自分がハニーポットを仕掛けたSSH（port22）に対して、誰もがアクセスできる状態でなければ成立しません。そのため、Virtual Boxなどの仮想環境で使われているLinuxなどでは上手くいきません。

厳密に言うと、ハニーポットを設置するのはどの環境でも可能ですが、プライベートのIPアドレスだけでは誰もアクセスをしてこないという状態になります。なので僕はDigital Oceanにある自分のLinuxで試しています。
実際にハニーポットを楽しみたい人は、AWSやDigital Oceanなどを使ってみましょう。

### セットアップ＆実行

前置きはこのくらいにして、早速やってみましょう。

ではまず必要なものを揃えていきましょう。

```
apt install libssh-dev
```
次にSSHのポートをデフォルトの22から2222（好きなポート番号で構いません。基本的に小さい番号は避けるべきです）に変更します。これは、Port22をハニーポットで使うためです。

```
nano /etc/ssh/sshd_config
```
Configファイルを開いたら、ポート番号を変更します。

+ 変更前

```
#Port 22
```
+ 変更後

```
Port 2222
```

SSHを再起動します。

```
systemctl reload sshd
````

Gitをクローンします。

```
apt-get install git
git clone https://github.com/kingtuna/sshpot.git
```

sshpotのconfigファイルを開いて、諸々確認します。

```
nano config.h
```

RSAのキーペアを作ります。

```
ssh-keygen -t rsa -b 2048
```

RSAキーファイルの名前を聞かれるので、configファイルにあった名前をそのままつけましょう。（下記パスは、rootディレクトリにsshpotを展開した場合のパスになっています。）

```
/root/sshpot/sshpot.rsa.key
```
この後にパスワードを設定するように言われますが、設定しなくて大丈夫です。（何も打たずにEnterを押してください。）

Makeします。

```
apt install build-essential
make
```

もしかすると警告が出るかもしれませんが、おそらく成功しているので気にしないでください。

バイナリをバックグラウンドでexecuteします。

```
./sshpot -p 22 &
```

これでセットアップが完了しました。ハニーポットは裏でずっと動いてくれています。
お疲れ様でした！

## 結果

少し時間を置くと、早速誰かがログインしようとしたことが分かります。チェックしてみましょう。

ログファイルを見てみます。

```
cat /root/sshpot/sshpot_auth.log
```
もし先ほど展開したフォルダにこのログファイルがなければ、こちらにあります。

```
cat /var/log/sshpot_auth.log
```

どちらにもない場合は、まだ誰もログインを試みていないということです。（一応ログファルがどこか別の場所にないか次のコマンドでチェックしてみましょう）

```
find / -name "sshpot_auth.log" 2>/dev/null
```

ログファイルを見てみるとこのような記録が残っています。

```
2021-09-01 20:00:00 192.168.0.1 root passwd
```
このように、ログインを試みた日時、IPアドレス、そしてユーザーネームとパスワードが確認できます。

#### 検証結果

ここで僕が1ヶ月設置していたハニーポットから得られた情報をシェアしたいと思います。
本当ならログファイルをそのまま見せても良かったんですが、一応IPアドレスが載っているのでやめておきます。

総ログイン試行回数は52415回でした。1日で約1750回くらいログインを試みていることが分かります。
IPアドレスを見てみると確かに色々なIPアドレスから来ていましたが、同じIPアドレスから多数のリクエストが来ていて（おそらく自動化していて、ブルートフォースしている）、実際は100種類くらいのIPアドレスからのアクセスでした。

ユーザーネームとパスワードに関しては、デフォルトでよく設定されているものや弱いパスワードなどを試していることがわかりました。いくつか例を載せておきます。

```
root root
root passwd
root admin
root 123456
admin admin
user user
nobody nobody
ftp ftpuser
```

これらを見ると分かるように、複雑なパスワードを試しているというよりは、弱いパスワードやデフォルトのパスワードを設定している人を狙っているようなものでした。

## 最後に

自分のログファイルを見てみると、SSHに限らず弱いパスワードやデフォルトのパスワードがいかに危険かを教えてくれるものになりました。
僕のLinuxは企業のサーバーでは無いので、本来狙う価値はあまり無いのですがそれでもこんなにもアクセスがあったので、無作為に攻撃（不正アクセス）をしようとしている人が多くいるということでしょう。（自動化しているだけというのはあると思いますが。）

この記事が皆さんのお役に立てれば嬉しいです。最後まで読んでくださってありがとうございました。

質問がある方は是非コメントしてください😃