謎の男の謎のブログ

PCの設定など忘れそうなことのメモ

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

MySQL(MariaDB)

Tor

WordPress

 

手順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 PiIPアドレス]でテストページが表示されます。

f:id:secret_return:20180122203133p:plain

 

手順2 PHPのインストール

以下のコマンドでPHPのインストールを行います。

sudo apt-get -y install php

 「php -v」コマンドで現在のPHPバージョンが確認できます。

 

手順3 Apache2とPHPの連携確認

上記手順を踏めばおそらくApachePHPの連携は完了しています。

テストとして以下のPHPプログラムをindex.phpとし、/var/www/html/に配置します。

index.php

<?php
phpinfo();
?>

 http://localhost/index.phpもしくはhttp://[Raspberry PiIPアドレス]/index.phpで以下の様なページが表示されると思います。さらに下にはPHPに関する様々な記述がされているはずです。

f:id:secret_return:20180122204400p:plain

index.phpの中に記述したphpinfo()関数によって表示される上記情報は攻撃者にとって有益な情報が含まれる可能性があります。このテストが完了すればindex.phpは削除してください。

 

手順4 MySQL(MariaDB)のインストール

以下のコマンドで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などでアクセスすると、、、。

f:id:secret_return:20180122214833p:plain

こんなページが。あ、PHPMariaDB連携させるの忘れた。

※もしApacheのテストページが表示される場合はキャッシュが原因だと思うのでURLにindex.phpを付けて読み込みすると大丈夫だと思います。

 

と、いうことで以下のコマンドで連携させます。

sudo apt-get -y install php-mysql

無事インストールできたら、

/etc/php/7.0/apache2/php.ini

の最後に

extension=mysql.so

を追加します。

apacheを再起動すればWordPressのインストール画面が現れます。

sudo systemctl restart apache2

f:id:secret_return:20180122215631p:plain

 

「さあ、始めましょう!」をクリックすると必要な情報が求められます。

 

f:id:secret_return:20180122215819p:plain

変更する必要があるのは「データベース名」「ユーザ名」「パスワード」だけで問題ありません(今回の場合は)。

MariaDBの設定で作成したものを入れるだけで問題ありません。画像には私の例を記述しました。

 

送信ボタンを押すと、、、。

f:id:secret_return:20180122220133p:plain

書き込み権限がないそうですね。

/etc/apache2/apache2.confを見ると以下の様に記述されています。

f:id:secret_return:20180122220413p:plain

apacheを動作させているユーザ名とグループ名を調べます。

ps auxw | grep apache2

 コマンドを実行すると「root」や「www-data」「pi」が動作させていることが分かります。

以下のコマンドをWordPressのファイルが配置された場所で実行します。

sudo chown -R www-data:www-data ./

 

これで先ほどのエラー画面は出ないはずです。

f:id:secret_return:20180122221014p:plain

 

後は何も問題なくいくはずです。