マグカップの裏

プログラムとか、思ったこととか、料理とか

Webブラウザから使えるコンソール「butterfly」のインストール

これはなにか 無限大な~ゆ~めの~あとの~~~

やるせない。言いたかっただけ。
大体掲題の通りで、Webブラウザからサーバのコンソールを叩けます。
SSHでええやんとかSSHブロックされてるならリバースプロキシ使えばええやんとかいう意見は聞きません。
そんなめんどくさいことしたくないんです。むしろSSHクライアントいれるのも嫌なんですみたいな人とかは重宝するかも。
といっても、最近は通信の挙動でプロトコルの偽装やソフトイーサのような検出の難しいものを検出して弾く凄い製品がありますからね。butterflyがどう扱われるかは知りませんが。一応SSLとかで暗号化はされるけどソフトイーサと同じく弾かれるかも。
ちなみにですが、ConohaのWebブラウザから接続できるWebコンソールもこのButterflyでした。
接続したときに大きな特徴である蝶のAAが表示されます。
実は昔構築したときのメモをもとにしている。まあ構成変わらなければ問題ないはずだが。

構成

いつもの。

  • CentOS7 リビジョンは忘れた。
  • easy_installが使える状態になっていること

早速インストール

依存関係とかもまとめてインストールします。
Pythonとかeasy_insallとかは各自頑張ってインストールを。

yum install libffi-devel openssl-devel
easy_install six
easy_install cryptography
easy_install pip  
pip install butterfly


これでエラーなくインストールできたら、Butterflyでクライアント証明書をつくってあげます。
テスト環境だけであればたしかなにもなしにアクセスできるはずですが、rootにもなれるようなものをクライアント証明書なしに繋げるなんていうのは少し怖いですから。

クライアント証明書を作り忘れていたので作ろう。

butterfly.server.py --generate-certs --host=HOSTNAME
butterfly.server.py

これで57575ポートで待ち受けてくれるのでアクセスすれば使えるようになる。
次にOS起動時に自動で実行するように設定する。

$ cd /etc/systemd/system
# curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.service
# curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.socket
# systemctl enable butterfly.socket
# systemctl start butterfly.socket


上記が公式に書いてあったので実行したけどうまくいかない。
butterfly.serviceでbutterfly.server.pyを起動しているパスに--host=HOSTNAMEを追記しても駄目。

色々やったけどうまくいかないのであきらめて/etc/rc.d/rc.localに下記を追記。

/usr/bin/butterfly.server.py --host=HOSTNAME &

次にFirewallの設定。SELinuxではなくCentOSからiptablesの後継として導入されたfirewalld。

firewall-cmd --parament --add-port=57575/tcp
firewall-cmd --parament --add-port=57575/udp <-いらない気がする…
firewall-cmd --parament --add-service=http
firewall-cmd --parament --add-service=https
firewall-cmd --parament //保存するために入力が必要?な気がした。

試しにrebootしてうまく起動すれば成功。

これでsshとか使わなくてもサーバいじいじできる。
sshクライアントの入ってない端末とかからサーバの勉強で触るときとかに使える。