ハニーポットプロジェクト

KHLではハニーポットプロジェクトを開始したぞい。長い間の夢じゃったから、どんなことになるかワクワクじゃ。

【目的】

  1. 攻撃者の操作を見ることで、どうやって攻撃しているのかを学ぶ
  2. 世の中のハニーポットで何ができるのかを知る

【方針】

少し前の資料じゃが、IPAの出しているサマリーと、その元ネタのドキュメントが以下じゃ。 数は多くあれど、まだまだ整備が進んでいるとは言えないレベルみたいじゃのう。 まず、おさえておくべきポイントは、ハニーポットにもいろいろ種類があることじゃな。軸が2種類あって、
  • 高インタラクション OR 低インタラクション
  • サーバサイド OR クライアントサイド
の組み合わせで4種類に大別される。
インタラクションの高低は、ハニーポットをエミュレータとして実現するものが低い方で、リアルなリソースを相手にするのが高い方らしい。高い方は事故るとやばいのう。攻撃されて乗っ取られると、OSレベルで再インストールしないと安心できなくなってしまう。低い方は基本的にアプリケーションレベルに閉じられるので、まだ気が楽じゃな。
サイドについては、まあサーバの方はハニーポットと聞いて頭に描くものがそれじゃろう。クライアントの方は、ブラウザの通信に関するハニーポットのイメージ。プロキシツールとどう違うのか、イマイチまだ見えとらん。
この4種類の中で最もアプリケーションの数が多いのが、低インタラクションなサーバサイドのもの。今回はまず、この低インタラサーバなアプリケーションをいくつかセットアップすることにするぞい。

【構築ロードマップ】

  • HoneyPotの選定
  • サーバおよびOSの選定
  • サーバ構築
  • HoneyPot構築

【運用としてすべきこと】

  • HoneyPotで捕まえた情報の見方を習得する
  • 定期的に捕まえた情報をチェックし解析する
  • 定期的にサーバが攻撃されていないかチェックする

【HoneyPotの選定】

冒頭の英語のドキュメントを紐解きつつ、以下のハニーポットをセットアップすることにしたぞい。このドキュメントの11ページ目に、アプリケーションごとの比較表が掲載されておるんじゃが、一番右の列「USEFULNESS FOR CERT」の評価が高いものを選んだ格好になっておる。なお、cowrieにしたのはこのへんにkippoの弱点が紹介されておったからじゃ。
  • Dionaea:汎用型ハニーポット
  • cowrie:sshのハニーポット(kippoの後継)
  • Glastopf:Webサーバのハニーポット

【構築】

dionaeaインストール

【本家dionaeaサイト】
情報が古いので、gitのURLがつながらない
【git掲載のインストール手順】
こっちならいけた
事前準備
# apt-get update
# apt-get install aptitude
# apt-get install man
Dependencies
# aptitude install libudns-dev libglib2.0-dev libssl-dev libcurl4-openssl-dev libreadline-dev libsqlite3-dev python-dev libtool automake autoconf build-essential subversion git-core flex bison pkg-config
Obtain Dionaea
# cd /opt/
# git clone https://github.com/rep/dionaea.git dionaea
Install LibLCfg
# git clone https://github.com/pb-/liblcfg.git liblcfg
# cd liblcfg/code
# autoreconf -vi
# ./configure -prefix=/opt/dionaea
# make install
Install LibEmu
# cd /opt
# git clone https://github.com/cperdana/libemu.git libemu
# cd libemu
# autoreconf -vi
# find ./ -type f | xargs sed -i "s/-Werror//g"
# ./configure -prefix=/opt/dionaea
# make
# make install
Install LibEv
# cd /opt/
# wget http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz
# tar -xvzf libev-4.04.tar.gz
# cd libev-4.04
# ./configure -prefix=/opt/dionaea
# make install
Install LibPcap
# cd /opt/
# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
# tar -xvzf libpcap-1.1.1.tar.gz
# cd libpcap-1.1.1
# ./configure -prefix=/opt/dionaea
# make
# make install
Install Python 3.4.3
# cd /opt/
# wget http://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
# tar xzf Python-3.4.3.tgz
# cd Python-3.4.3
# ./configure --enable-shared -prefix=/opt/dionaea --with-computed-gotos -enable-ipv6 LDFLAGS="-Wl,-rpath=/opt/dionaea/lib -L/usr/lib/x86_64-linux-gnu/"
# make
# make install
Install Cython
# cd /opt/
# wget https://pypi.python.org/packages/c6/fe/97319581905de40f1be7015a0ea1bd336a756f6249914b148a17eefa75dc/Cython-0.24.1.tar.gz#md5=890b494a12951f1d6228c416a5789554
# tar xzf Cython-0.24.1.tar.gz
# cd Cython-0.24.1
# /opt/dionaea/bin/python3 setup.py install
Opensslのインストール
# cd /opt/
# wget https://github.com/openssl/openssl/archive/OpenSSL_1_0_1p.tar.gz
# tar xzf OpenSSL_1_0_1p.tar.gz
# cd openssl-OpenSSL_1_0_1p
# ./Configure shared --prefix=/opt/dionaea linux-x86_64
# make
# make install
Install Dionaea
# cd /opt/dionaea
# autoreconf -vi
# find ./ -type f | xargs sed -i "s/-Werror//g"
# ./configure --with-lcfg-include=/opt/dionaea/include/ \
      --with-lcfg-lib=/opt/dionaea/lib/ \
      --with-python=/opt/dionaea/bin/python3.4 \
      --with-cython-dir=/opt/dionaea/bin \
      --with-udns-include=/opt/dionaea/include/ \
      --with-udns-lib=/opt/dionaea/lib/ \
      --with-emu-include=/opt/dionaea/include/ \
      --with-emu-lib=/opt/dionaea/lib/ \
      --with-gc-include=/usr/include/gc \
      --with-ev-include=/opt/dionaea/include \
      --with-ev-lib=/opt/dionaea/lib \
      --with-nl-include=/opt/dionaea/include \
      --with-nl-lib=/opt/dionaea/lib/ \
      --with-curl-config=/usr/bin/ \
      --with-pcap-include=/opt/dionaea/include \
      --with-pcap-lib=/opt/dionaea/lib/ \
      --with-ssl-include=/opt/dionaea/include/ \
      --with-ssl-lib=/opt/dionaea/lib/
# make
# make install
これでインストール完了。 コマンドを実行して、動作するか確認してみる。
root@v9723:/opt/dionaea# /opt/dionaea/bin/dionaea --help

Dionaea Version 0.1.0
Compiled on Linux/x86_64 at Jul 24 2016 02:14:42 with gcc 4.8.4
Started on v9723.vir.kagoya.net running Linux/x86_64 release 2.6.32-042stab113.17


Dionaea Version 0.1.0
Compiled on Linux/x86_64 at Jul 24 2016 02:14:42 with gcc 4.8.4
Started on v9723.vir.kagoya.net running Linux/x86_64 release 2.6.32-042stab113.17

  -c, --config=FILE               use FILE as configuration file
  -D, --daemonize                 run as daemon
  -g, --group=GROUP               switch to GROUP after startup (use with -u)
  -h, --help                      display help
  -H, --large-help                display help with default values
  -l, --log-levels=WHAT           which levels to log, valid values all, debug, info, message, warning, critical, error, combine using ',', exclude with - prefix
  -L, --log-domains=WHAT          which domains use * and ? wildcards, combine using ',', exclude using -
  -u, --user=USER                 switch to USER after startup
  -p, --pid-file=FILE             write pid to file
  -r, --chroot=DIR                chroot to DIR after startup, warning: chrooting causes problems with logsql/sqlite
  -V, --version                   show version
  -w, --workingdir=DIR            set the process' working dir to DIR


examples:
        # dionaea -l all,-debug -L '*'
        # dionaea -l all,-debug -L 'con*,py*'
        # dionaea -u nobody -g nogroup -w /opt/dionaea -p /opt/dionaea/var/run/dionaea.pid

root@v9723:/opt/dionaea#
dionaeaの設定ファイルの場所(特に変更はしない)
oot@v9723:/opt/dionaea/etc/dionaea# pwd
/opt/dionaea/etc/dionaea
root@v9723:/opt/dionaea/etc/dionaea# ll
合計 40
drwxr-xr-x 2 root root  4096  7月 24 02:14 ./
drwxr-xr-x 3 root root  4096  7月 24 02:14 ../
-rw-r--r-- 1 root root 14033  7月 24 02:14 dionaea.conf
-rw-r--r-- 1 root root 14033  7月 24 02:14 dionaea.conf.dist
root@v9723:/opt/dionaea/etc/dionaea#

dionaeaの起動

2016/07/24 02:34:26 開始!
以下だとターミナルを立ち上げっぱなしにしないといけないので、-Dオプションをつけるとデーモンとして実行してくれる。
root@v9723:~# /opt/dionaea/bin/dionaea -r /opt/dionaea

Dionaea Version 0.1.0
Compiled on Linux/x86_64 at Jul 24 2016 02:14:42 with gcc 4.8.4
Started on v9723.vir.kagoya.net running Linux/x86_64 release 2.6.32-042stab113.17

python
  sys_path
    0 = "default"
  imports
    0 = "log"
    1 = "services"
    2 = "ihandlers"
  ftp
    root = "var/dionaea/wwwroot"
    active-ports = "63001-64000"
    active-host = "0.0.0.0"
  tftp
    root = "var/dionaea/wwwroot"
  http
    root = "var/dionaea/wwwroot"
    max-request-size = "32768"
  sip
    udp
      port = "5060"
    tcp
      port = "5060"
    tls
      port = "5061"
    users = "var/dionaea/sipaccounts.sqlite"
    rtp
      enable = "yes"
      mode
        0 = "bistream"
        1 = "pcap"
      pcap
        path = "var/dionaea/rtp/{personality}/%Y-%m-%d/"
        filename = "%H:%M:%S_{remote_host}_{remote_port}_in.pcap"
    personalities
      default
        domain = "localhost"
        name = "softphone"
        personality = "generic"
    actions
      bank-redirect
        do = "redirect"
      play-hello
        do = "play"
        params
          file = "var/dionaea/.../file.ext"
  surfids
    sslmode = "require"
    host = "surfids.example.com"
    port = "5432"
    username = "surfids"
    password = "secret"
    dbname = "idsserver"
  virustotal
    apikey = "........."
    file = "var/dionaea/vtcache.sqlite"
  mwserv
    url = ""
    maintainer = ""
    guid = ""
    secret = ""
  mysql
    databases
      information_schema
        path = ":memory:"
  submit_http
    url = ""
    email = ""
    user = ""
    pass = ""
  hpfeeds
    hp1
      server = "hpfriends.honeycloud.net"
      port = "10000"
      ident = ""
      secret = ""
      dynip_resolve = "http://hpfriends.honeycloud.net/ip"
  logsql
    mode = "sqlite"
    sqlite
      file = "var/dionaea/logsql.sqlite"
  logxmpp
    carnivore
      server = "sensors.carnivore.it"
      port = "5223"
      muc = "dionaea.sensors.carnivore.it"
      username = "anonymous@sensors.carnivore.it"
      password = "anonymous"
      config
        anon-events
          events
            0 = "^dionaea\.connection\..*"
            1 = "^dionaea\.modules\.python\.smb.dcerpc\.*"
            2 = "^dionaea\.download\.offer$"
            3 = "^dionaea\.download\.complete\.hash$"
            4 = "^dionaea\.module\.emu\.profile$"
            5 = "^dionaea\.modules\.python\.mysql\.*"
            6 = "^dionaea\.modules\.python\.sip\.*"
            7 = "^dionaea\.modules\.python\.p0f\.*"
            8 = "^dionaea\.modules\.python\.virustotal\report"
          anonymous = "yes"
        anon-files
          events
            0 = "^dionaea\.download\.complete\.unique"
  nfq
    nfaction = "0"
    throttle
      window = "30"
      limits
        total = "30"
        slot = "30"
    timeouts
      server
        listen = "5"
      client
        idle = "10"
        sustain = "240"
  p0f
    path = "un:///tmp/p0f.sock"
  fail2ban
    downloads = "var/dionaea/downloads.f2b"
    offers = "var/dionaea/offers.f2b"
  ihandlers
    handlers
      0 = "ftpdownload"
      1 = "tftpdownload"
      2 = "emuprofile"
      3 = "cmdshell"
      4 = "store"
      5 = "uniquedownload"
      6 = "logsql"
      7 = "hpfeeds"
  services
    serve
      0 = "http"
      1 = "https"
      2 = "tftp"
      3 = "ftp"
      4 = "mirror"
      5 = "smb"
      6 = "epmap"
      7 = "sip"
      8 = "mssql"
      9 = "mysql"
START
{'venet0': ['127.0.0.2'], 'lo': ['127.0.0.1', '::1']}
STARTING SERVICES
venet0
127.0.0.2
<class 'dionaea.services.httpservice'>
<class 'dionaea.services.httpsservice'>
....................................................................................+++
...+++
<class 'dionaea.services.tftpservice'>
<class 'dionaea.services.ftpservice'>
<class 'dionaea.services.mirrorservice'>
<class 'dionaea.services.smbservice'>
<class 'dionaea.services.epmapservice'>
<class 'dionaea.services.siptcpservice'>
processors
  filter-emu
    config
      allow
        0
          protocol
            0 = "smbd"
            1 = "epmapper"
            2 = "nfqmirrord"
            3 = "mssqld"
    next
      emu
        config
          emulation
            limits
              files = "3"
              filesize = "524288"
              sockets = "3"
              sustain = "120"
              idle = "30"
              listen = "30"
              cpu = "120"
              steps = "1073741824"
            api
              connect
                host = "127.0.0.1"
                port = "4444"
  filter-streamdumper
    config
      allow
        0
          type
            0 = "accept"
        1
          type
            0 = "connect"
          protocol
            0 = "ftpctrl"
      deny
        0
          protocol
            0 = "ftpdata"
            1 = "ftpdatacon"
            2 = "xmppclient"
    next
      streamdumper
        config
          path = "var/dionaea/bistreams/%Y-%m-%d/"
allow
         # protocol  smbd epmapper nfqmirrord mssqld  # type

config
  emulation
    limits
      files = "3"
      filesize = "524288"
      sockets = "3"
      sustain = "120"
      idle = "30"
      listen = "30"
      cpu = "120"
      steps = "1073741824"
    api
      connect
        host = "127.0.0.1"
        port = "4444"
allow
         # protocol   # type  accept
         # protocol  ftpctrl  # type  connect

deny
         # protocol  ftpdata ftpdatacon xmppclient  # type

ログの見方

▼テキストログ
# tail -f /opt/dionaea/var/log/dionaea.log
▼SQLiteで保持しているインシデントサマリー
# /opt/dionaea/bin/python3 /opt/dionaea/bin/readlogsqltree /opt/dionaea/var/dionaea/logsql.sqlite
▼キャプチャ・ダウンロードしたバイナリの置き場所
# ls -l /opt/dionaea/var/dionaea/binaries

cowrieインストール

▼Ubuntuでcowrie
KAGOYAのiptablesはちょっと変わってるね。
以下はVM上でやった内容と、KAGOYAでやった内容が混ざっています。
# vi/etc/iptables.rules
---------------------------------------------------------
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
---------------------------------------------------------
# /etc/network/if-up.d/iptables

# apt-get update -y && apt-get upgrade
# apt-get install git python-dev python-openssl openssh-server python-pyasn1 python-twisted authbind
# vi /etc/ssh/sshd_config
---------------------------------------------------------
#Port 22
Port 10022
---------------------------------------------------------

# service ssh restart
# adduser cowrie
pass: cowcow2

# touch /etc/authbind/byport/22
# chown cowrie /etc/authbind/byport/22
# chmod 777 /etc/authbind/byport/22

$ su cowrie
$ cd
$ git clone https://github.com/cowrie/cowrie.git
$ cd cowrie
$ cp -p cowrie.cfg.dist cowrie.cfg
$ vi cowrie.cfg
---------------------------------------------------------
#hostname = svr04
hostname = CanadianClub
#listen_port = 2222
listen_port = 22
---------------------------------------------------------
$ vi start.sh
---------------------------------------------------------
# 最終行に以下を追記
authbind --deep twistd -l log/cowrie.log --pidfile cowrie.pid cowrie
---------------------------------------------------------
参考サイトだと cowrie/utils 配下の ./createfs.py を fs.pickle にリネームさせる手順があるけど、そんなディレクトリはないのでスルー。
というか、cowrie/data 配下に fs.pickle がデフォルトで配置されてるね。
$ cd data
$ vi userdb.txt
---------------------------------------------------------
root:x:!root
root:x:!123456
#root:x:*
root:x:giants
richard:x:*
jim:x:fout
---------------------------------------------------------
さて準備完了! 実行してみましょう。
$ /home/cowrie/cowrie/start.sh
Starting cowrie with extra arguments [] ...
An error has occurred: 'Couldn't listen on 0.0.0.0:22: [Errno 13]
Permission denied.'
Please look at log file for more information.
ははー。しっかりエラーですよ。
どうも1024未満のポートはroot権限でないとダメで、cowrieはroot権限で実行すると怒られるという板挟みらしい。
だからkippoも22から2222ポートにリダイレクトさせてたのか。
確かにポートを22から2222に戻すと、このエラーは出なくなった。
▼1024未満のポートではroot権限でないとダメよな記事
$ vi cowrie.cfg
---------------------------------------------------------
listen_port = 2222
#listen_port = 22
---------------------------------------------------------
$ /home/cowrie/cowrie/start.sh
Starting cowrie with extra arguments [] ...
An error has occurred: 'No module named Crypto.PublicKey'
Please look at log file for more information.
新しく出たエラーはモジュールインストールすれば解消するみたい
# apt-get install python-pip
# pip install --upgrade pip
# pip install crypto
# pip install pycrypto
iptables設定(VMの場合)
# cd /etc/network/if-up.d/
# sudo vi iptables
---------------------------------------------------------
#!/bin/bash

iptables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -s 192.168.56.0/24 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp --dport 10022 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 22ポートから2222ポートへのリダイレクト
iptables -A PREROUTING -t nat -p tcp --dport 22 -j REDIRECT --to-port 2222
---------------------------------------------------------

# sudo chmod 755 iptables
# iptables -L -n
---------------------------------------------------------
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 192.168.0.0/24 0.0.0.0/0
ACCEPT all -- 192.168.56.0/24 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:
10022
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state
RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
---------------------------------------------------------
iptables設定(KAGOYAの場合)
# vi /etc/iptables.rules
---------------------------------------------------------
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
COMMIT
---------------------------------------------------------
めでたく準備完了です。なんか2222ポートでも繋げてしまうけど、実害ないからいいや。
cowrieのログの監視は以下から。id/passの試行から、実行したコマンドまで確認できます。
$ tail -f cowrie/log/cowrie.log

Glastopfのセットアップ

参考サイト

Prerequisites

# apt-get update
# apt-get install python2.7 python-openssl python-gevent libevent-dev python2.7-dev build-essential make
# apt-get install python-chardet python-requests python-sqlalchemy python-lxml
# apt-get install python-beautifulsoup mongodb python-pip python-dev python-setuptools
# apt-get install g++ git php5 php5-dev liblapack-dev gfortran libmysqlclient-dev
-------------------------------------------------------
パッケージ php5 は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。

パッケージ php5-dev は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。

E: パッケージ 'php5' はインストール候補ではありません
E: パッケージ 'php5-dev' はインストール候補ではありません
-------------------------------------------------------
Ubuntu 16だとこのエラーが出るみたい。 KAGOYAはUbuntu 14.04なので、このエラーは出ず正常終了しました。 # apt-cache search php を実行してみると以下のような感じなので、php5をphp7.0に変えてあげる。
-------------------------------------------------------
# apt-cache search php
...
php-zipstreamer - Stream zip files without i/o overhead
php-zmq - ZeroMQ messaging bindings for PHP
php7.0-bcmath - Bcmath module for PHP
php7.0-bz2 - bzip2 module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-soap - SOAP module for PHP
php7.0-sybase - Sybase module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0-zip - Zip module for PHP
phpab - lightweight PHP namespace aware autoload generator
phpbb3 - full-featured, skinnable non-threaded web forum
phpbb3-l10n - additional language files for phpBB
...
-------------------------------------------------------
# apt-get install g++ git php7.0 php7.0-dev liblapack-dev gfortran libmysqlclient-dev
# apt-get install libxml2-dev libxslt-dev
# pip install --upgrade distribute

Install and configure the PHP sandbox

# cd /opt
# git clone https://github.com/mushorg/BFR.git
# cd BFR
# phpize
# ./configure --enable-bfr
# make && sudo make install

Install glastopf

# pip install glastopf
-------------------------------------------------------
File "<environment marker>", line 1, in <module>
NameError: name 'sys_platform' is not defined
/tmp/pip-build-UaQkot/glastopf/distribute-0.6.35-py2.7.egg
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-UaQkot/glastopf/setup.py", line 2, in <module> use_setuptools()
File "/tmp/pip-build-UaQkot/glastopf/distribute_setup.py", line 152, in use_setuptools return _do_download(version, download_base, to_dir, download_delay)
File "/tmp/pip-build-UaQkot/glastopf/distribute_setup.py", line 132, in _do_download _build_egg(egg, tarball, to_dir)
File "/tmp/pip-build-UaQkot/glastopf/distribute_setup.py", line 123, in _build_egg raise IOError('Could not build the egg.')
IOError: Could not build the egg.

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-UaQkot/glastopf/
-------------------------------------------------------
なんかエラー出た。もう一つやり方があるみたいなので、そっちでやってみる。
# cd /opt
# git clone https://github.com/mushorg/glastopf.git
# cd glastopf
# python setup.py install
こっちはうまくいった。
# cd /opt
# mkdir glastopf_honeypot

起動

cd /opt/glastopf_honeypot
sudo glastopf-runner
glastopf-runnerを実行したディレクトリに展開してしまうので注意。--workdirオプションつければいけるかと思ったらこんなん出た。
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 97, in connect return dialect.connect(*cargs, **cparams)
File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 385, in connect return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

設定ファイル

/opt/myhoneypot/glastopf.cfg
ファイル中に記載されているポートがいくつかあるので、必要に応じてiptables等、穴開け設定してあげる。
  • 80
  • 20000
  • 5432
  • 587
  • 5659

【運用】

捕まえたものの解析はいまいまはできないので、目下気をつけるのは定期的にサーバが攻撃されていないかチェックすることじゃの。できることと言ったらこんなところじゃろうか。
  • dfコマンドでディスク容量の定期チェック
  • サーバ管理画面のリソース状況のグラフを定期チェック
  • netstat -nap でおかしなポートが開かれていないか
the end of this article.