LAN外のRIGを管理する方法について~SSH編~

前回の続きです。日本にVPN鯖を建てることができました。これでハワイから日本へのアクセスは万全。日本のRigも全部ethOSに変えようと思います。問題は日本からハワイへのアクセスをどうするか、です。

SSHの穴を開ける

これしかないですね。ただ、普通にルータの22番ポートを開放しちゃうと危険です。22番あての攻撃はめちゃくちゃ多いです。適当にport番号を変えるわけですが、ethOSごとに全部portを変えて、ルータのポートフォワーディングを追加して、、、とか面倒すぎます。却下却下。

何かを踏み台にするしかないんです。Raspberry Piなんかがベストだと思います。”Raspberry Pi zero w“の基盤は$10だそうですし、電源やらSDカードやら買っても$50行かないで揃いそうでちょっと惹かれるんですが、手持ちにNUCがあるのを思い出しました。

これです。3年くらい前に税込み9980円で買ったやつです。Win10入れてテレビ接続用のPCになってたんですが、テレビが4k化してからスペック的に追いつかなくなりお蔵入りしていました。これにubuntuを入れます。

なにげに初Ubuntuです。ethOSを導入したことにより余った64GBのSSDを流用しました。もともとNUCについてた240GBのSSDはもったいないので別で使うことにします(用途思い浮かばず)

Ubuntu電気食わないですねー!Win10では15~20wくらい消費してたNUCが1桁まで落ちました。ラズパイ買わなくていいや。

Ubuntu 16.04の初期設定

以下は自分用のメモです。興味ない人は読まなくていいです。Linuxはあんまり慣れてないのでグーグル活用しつつやってました。

パッケージの更新・自動アップデートの設定

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install unattended-upgrades
$ sudo dpkg-reconfigure -plow unattended-upgrades
$ sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

参考:Ubuntu 最低限抑えておきたい初期設定

標準のviが酷かったので改めてvimインストール、ifconfigも動かなかったのでインストール

$ sudo apt-get install vim
$ sudo apt-get install net-tools

SSHが入ってなかったのでインストール、port番号を変更してついでにrootログインも禁止

$ sudo apt-get install aptitude
$ sudo aptitude install ssh
$ sudo vi /etc/ssh/sshd_config

参考:ubuntuのssh設定

sshをrestartして以降はteratermから。

$ sudo /etc/init.d/ssh restart

なお、今回はIPの固定はルータのDHCP側でIPを固定しました。なのでubuntu側は/etc/network/interfacesは変更なし。

DDNSサービスの登録とDiCEの設定

ハワイのIPも当然動的なので、MyDNS.JPに登録してみました。昔使ってたけど当然のようにアカウント消えてました。1ヶ月更新もログインもない場合は削除されちゃうみたいです。登録はこのサイトを参考にしました。

次に自動的にIPの変動を検知してDDNSに通知するソフトウェアDiCEの設定です。DiCE使うの何十年ぶりだろうっていうくらい懐かしいです(老人会)

DiCE for Linuxの設定についてはこちらのサイトを参考にしましたが、手順通りにいかないです。まず、起動からして出来ない(笑)

色々調べると、どうやらDiCE for Linuxは32bitのようですが、Ubuntuは64bitなのが原因のようです。32bitを動かすために。

$ sudo apt-get install lib32stdc++6

参考:(Ubuntu desktop 16.10)でDiCEを動かす方法

はい、起動できるようになったけど今度は文字化けがひどい。

DiCEの出力文字はEUCのため、文字化けしてしまうそうです。UTF-8に変換します。

$ sudo apt-get install nkf

参考:DiCEでダイナミックDNSを設定してみる

これで無事下記コマンドで文字化けせずに動くようになりました。

$ sudo /usr/local/bin/DiCE/diced | nkf -uw

適当にDDNSの設定を施して起動します。

$ sudo /usr/local/bin/DiCE/diced -d -l

まぁ、2008年に開発終了してるソフトだからしゃーないよね。

DiCEを起動時に自動実行する

まず、DiCEが起動してるかどうかは下記コマンドでみれます。

# ps aux | grep diced
# cat /usr/local/bin/DiCE/log/events.log | nkf -uw

自動起動させる方法は、色々あるみたいなんですけど、なかなかうまく行かなくてハマりました。うまく行った方法を以下に記します。

rootになります。

$ sudo su

diced.shというファイル(名前は適当)を作り、中身にdicedの実行コマンドを入れます。

#vi diced.sh
#!/bin/bash
/usr/local/bin/DiCE/diced -d -l
exit 0

cron.confというファイル(名前は適当)を作り、cronの処理を入れます。

#vi cron.conf
@reboot bash /home/hyperbanana/diced.sh

cronを登録します。rootユーザでやらないと動きません。

# crontab cron.conf
# crontab -l
@reboot bash /home/hyperbanana/diced.sh

これで起動するとDiCEも動く様になったはずです。

参考:Ubuntu16.04でスクリプトを起動時に自動実行する
参考:定期的にスクリプトを自動実行させる

ぶっちゃけcronよくわかんないです。なんか動いたので良しとします。もっとスマートな方法あるかもしれません。間違ったこと書いてても許して。

SSHの穴を開けた結果

日本のPCからSSHでubuntuに入り、そこからSSHでethOSを触れることを確認しました。当面はこれで行こうと思います。確認は、ハワイから日本のPCにChromeリモートデスクトップで入り、そこからTeraTermでSSHしました。多段すぎてすごい遅延してましたが、まぁなんとかなるもんだ。