Raspberry Piを購入してダークウェブを構築してみました
ダークウェブを構築しようと思いRaspberry Pi 3を購入しました。
Webサーバの設定とか面倒なのでXAMPP入れてさっさと終わらせるつもりでしたが、Linux版のXAMPPは64bitしか公開されていません。
すっかり忘れていたのですが、Raspberry Piは32bit。あ、詰んだ。
環境作りに何かと苦戦しましたし、雪で会社から早く帰って来たので自分用にもメモ
として残しておきます。
サーバやSQLサーバのインストールなどは全てRaspbian標準のレポジトリからapt-getしたので、最新版ではないものがインストールされている場合がありますがご了承ください。
環境
Raspberry Pi3 ModelB
OS:RASPBIAN STRETCH WITH DESKTOP(2017年11月29日にリリースされたもの)
インストールするもの
Apache 2
PHP 7.0
Tor
手順1 サーバのリスト入手と更新
まずは以下のコマンドでapt-getが利用するサーバ情報の入手と更新を行います。
sudo apt-get update
sudo apt-get upgrade
2018年1月22日段階では上記更新を行わなかった際、Torのインストールに失敗しました。
手順2 Apache2のインストールと起動
以下のコマンドでApache2のインストールを行います。
sudo apt-get -y install apache2
問題なくインストールすることができれば、ブラウザで
http://localhostもしくはhttp://[Raspberry PiのIPアドレス]でテストページが表示されます。
手順2 PHPのインストール
以下のコマンドでPHPのインストールを行います。
sudo apt-get -y install php
「php -v」コマンドで現在のPHPバージョンが確認できます。
手順3 Apache2とPHPの連携確認
上記手順を踏めばおそらくApacheとPHPの連携は完了しています。
テストとして以下のPHPプログラムをindex.phpとし、/var/www/html/に配置します。
index.php
<?php
phpinfo();
?>
http://localhost/index.phpもしくはhttp://[Raspberry PiのIPアドレス]/index.phpで以下の様なページが表示されると思います。さらに下にはPHPに関する様々な記述がされているはずです。
index.phpの中に記述したphpinfo()関数によって表示される上記情報は攻撃者にとって有益な情報が含まれる可能性があります。このテストが完了すればindex.phpは削除してください。
以下のコマンドでMySQL(MariaDB)のインストールを行います。
sudo apt-get -y install mysql-server
コマンド上ではmysql-serverとなっていますが、実際にインストールされるのはMySQLと同様の機能を持つMariaDBです。
あ、もうMySQLって書かずにMariaDBって書きますね。
手順5 MariaDBの設定
このMariaDBがなかなかくせ者。
間違っているかもしれませんが、MariaDBのrootユーザにパスワードを割り当ててもでたらめなパスワードでデータベースにアクセスできてしまいます。
どうやらこれはMariaDBのセキュリティ対策(?)なようで、Linuxのrootユーザからアクセスされた時のみMariaDBのrootユーザでアクセスできるんだそう。
そのため、MariaDBのrootユーザへパスワードを割り当てることに意味はないのかな?
このへんよく分かってないのですが、MariaDBにroot以外のユーザを作ればとりあえず何とかなります。
まずはMariaDBにログインします。
sudo mysql -u root
これだけでログインできるはずです。
続いてWordPressで利用するデータベースとユーザを作ります。
データベースの作成
CREATE DATABASE database_name;
「database_name」の箇所に好きなデータベース名を入れます。
とりあえず「test100」という名前にしときます。
CREATE DATABASE test100;
ユーザの作成
CREATE USER 'name'@'localhost' IDENTIFIED BY 'password';
例えば「abc」というユーザでパスワードが「takuan」だとすると以下の様になります。
CREATE USER 'abc'@'localhost' IDENTIFIED BY 'takuan';
続いてユーザにデータベースの操作権を与えます。
GRANT ALL PRIVILEGES ON database_name.* TO 'name'@'localhost';
私の場合は
GRANT ALL PRIVILEGES ON test100.* TO 'abc'@'localhost';
となるわけです。
最後に上記の設定を反映しましょう。
FLUSH PRIVILEGES;
これでMariaDBの設定は終わりです。
手順6 Torのインストール
以下のコマンドでTorのインストールを行います。
sudo apt-get -y install tor
続いて/etc/tor/torrcを開き以下のコメント行を有効化します。
#HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80
↓
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
編集が終わればTorを再起動します。
sudo systemctl restart tor
再起動が完了すれば、/var/lib/tor/hidden_service/に「hostname」と「private_key」というファイルが作成されています。
「hostname」ファイルを開くと[ランダム文字列].onionという文字列が記述されています。
Tor BrowserなどでそのURLにアクセスし、Apacheのテストページが表示されていることを確認してください。
※Torが動作しているかは以下のコマンドを実行すると確認できます。
ps auxw | grep tor
手順7 WordPressのインストール
とりあえずWordPressを公式サイトからダウンロードしてZIPを解凍します。
http://文字列.onionでブログのトップページを表示したい場合はZIP解凍後に展開されるフォルダの中身を/var/www/html/に配置します。
http://文字列.onion/任意の文字列でブログのトップページを表示したい場合はZIP解凍後に展開される「wordpress」というフォルダを任意の文字列に変更してフォルダごと/var/www/htmlに配置します。
Tor Browserなどでアクセスすると、、、。
こんなページが。あ、PHPとMariaDB連携させるの忘れた。
※もしApacheのテストページが表示される場合はキャッシュが原因だと思うのでURLにindex.phpを付けて読み込みすると大丈夫だと思います。
と、いうことで以下のコマンドで連携させます。
sudo apt-get -y install php-mysql
無事インストールできたら、
の最後に
extension=mysql.so
を追加します。
apacheを再起動すればWordPressのインストール画面が現れます。
sudo systemctl restart apache2
「さあ、始めましょう!」をクリックすると必要な情報が求められます。
変更する必要があるのは「データベース名」「ユーザ名」「パスワード」だけで問題ありません(今回の場合は)。
MariaDBの設定で作成したものを入れるだけで問題ありません。画像には私の例を記述しました。
送信ボタンを押すと、、、。
書き込み権限がないそうですね。
/etc/apache2/apache2.confを見ると以下の様に記述されています。
apacheを動作させているユーザ名とグループ名を調べます。
ps auxw | grep apache2
コマンドを実行すると「root」や「www-data」「pi」が動作させていることが分かります。
以下のコマンドをWordPressのファイルが配置された場所で実行します。
sudo chown -R www-data:www-data ./
これで先ほどのエラー画面は出ないはずです。
後は何も問題なくいくはずです。