takaha.siの技術メモ

勉強したことをお伝えします。ちょっとでも誰かの役に立てればいいな…

Lightsail上のVMにT-Potをインストールしたらネットワークが落ちる

スーパーハカーになりたいので、ハニーポットを運用してマルウェアを集めたいと思いました。ので、AWSのLightsail上でVMインスタンスを借りてT-potをインストール。

github.com

ちなみにハニーポットと言えばT-potというぐらい代表的なもののようです。脆弱性のあるサービスになりすますソフトウェアがDocker上で立ち上がって罠を仕掛ける感じ。KibanaでのキレイなWebIFもついてきてて、イケてます。かっこいい!気分はスーパーハカーですよ。

f:id:tkh86:20200630233632p:plain
T-potのWebインタフェース

日本国内でもいくつか記事が見つかります。

ultrabirdtech.hatenablog.com

qiita.com

ISOイメージからインストールする方法もありますが、私はDebianを入れた後、Post-Install手法でやりました。Lightsailだとそうせざるを得ない。

github.com

で、T-potインストール自体はすんなり行ったんですが、問題発生。VMを起動して1時間後ぐらいにネットワークが急に落ちます。

LightsailはWebIFからのVMアクセスをSSH経由に限定しているので、こうなってしまうと何もできなくなります。せめて、シリアル経由かレガシーVGA経由でのコンソソールアクセスを用意してほしいもの。。。これだと、例えばiptablesで自分の乗ってる枝を切ってしまったら何もできなくなり、OS再インストールしか手はない。怖い。なんとかしてくれんもんかな。

話がそれましたが、AWS LightsailのWebコンソールから「再起動」かけると再びVMは立ち上がってネットワークも通じるようになってT-potも動き始めます。が、また一時間ぐらい立つとネットワークが落ちます。これでは安定してT-potを起動し続けることができずにまずい。

VMがkernel oopsとかでOSごと落ちているのではなく、単にネットワークインターフェイスが落ちてるだけのように見えるので、ip a listの出力をディスクに書き出すという以下のようなスクリプトをくんでログをとって見てみました。

#!/bin/sh

LOG_FILE_NAME=ip.log

while :; do
    /bin/echo -e "====$(date +'%Y/%m/%d:%H:%M:%S')==== \n $(ip a list)" >> ${LOG_FILE_NAME}
    sleep 10
done

すると、たしかにネットワークIFからIPが消えている。

====2020/06/26:00:22:07====
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 06:d0:84:8b:f5:18 brd ff:ff:ff:ff:ff:ff
    inet 172.26.3.244/20 brd 172.26.15.255 scope global dynamic eth0
       valid_lft 6sec preferred_lft 6sec
====2020/06/26:00:22:17====
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 06:d0:84:8b:f5:18 brd ff:ff:ff:ff:ff:ff

というか、単純にvalid_lft 6secと出たあとにIPが消えてるので、DHCPのリース期間が過ぎてそのままIPが消えてるだけのように見えます。

ちなみにLightsailはNATがあって、NAT外側のパブリックIPは固定IPにできますが、NAT内部のプライベートIPはDHCPで動的取得のみのようです。だから、Lightsail VMで外部サービスを起動したい場合、AWS LightsailのWebコンソールからNATのポート開放をしてあげないと外からはつなぎにいけません。

しかしこれ、謎い。なぜリース期間が消えてるのにDHCP再取得しにいかないのか。。。

T-potをインストールしていない他のLightsail VMではこのようなことは当然おこらないので、T-potがなにか設定をいじったのだと思いますが。。。謎い。。。

iptablesの設定でDHCPのパケットが弾かれてるのかな?と思ったので

# dhclient -r -v eth0 && rm /var/lib/dhcp/dhclient.* ; dhclient -v eth0

とやってみたけど、ログを観る限り

$ journalctl -f | grep -Ei 'dhcp'
Jun 30 22:48:17 rapidassistance dhclient[19179]: Internet Systems Consortium DHCP Client 4.4.1
Jun 30 22:48:17 rapidassistance dhclient[19179]: For info, please visit https://www.isc.org/software/dhcp/
Jun 30 22:48:17 rapidassistance dhclient[19179]: DHCPRELEASE of 172.26.3.244 on eth0 to 172.26.0.1 port 67
Jun 30 22:48:17 rapidassistance dhclient[19188]: Internet Systems Consortium DHCP Client 4.4.1
Jun 30 22:48:17 rapidassistance dhclient[19188]: For info, please visit https://www.isc.org/software/dhcp/
Jun 30 22:48:17 rapidassistance dhclient[19188]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
Jun 30 22:48:17 rapidassistance dhclient[19188]: DHCPOFFER of 172.26.3.244 from 172.26.0.1
Jun 30 22:48:17 rapidassistance dhclient[19188]: DHCPREQUEST for 172.26.3.244 on eth0 to 255.255.255.255 port 67
Jun 30 22:48:17 rapidassistance dhclient[19188]: DHCPACK of 172.26.3.244 from 172.26.0.1

と、DHCP DISCOVER->DHCP OFFER->DHCP REQUEST->DHCP ACKとDHCP取得がちゃんとできてるので、パケットが弾かれているとは考えにくい。うーん謎い。。。