機械学習用計算サーバーの構築 #2 – 基本ソフト環境

この記事の続きです。次の記事はこちらです。

Ubuntu Server 16.04 LTS & Windows 10 Pro デュアルブート環境の構築

UbuntuのGRUBブートローダーで、OS選択ができるようにする。このサイトがまとまって書いてあってわかりやすい。

Windows 10 Proのインストール

こちらは、普通にインストールすれば良い。(パーティションすら区切らなくても良い後で変更可能である。心配な場合はパーティションを区切ってから行う。)ここにマザボやグラボのユーティリティをインストールし、ファームウェアを最新にする。

また、Ubuntuのインストール前に、ファストブートを解除する必要がある。そうしないと、GRUBブートローダーの設定時に、「Windowsがここにいますよ」と言ってくれないので、OS選択ができなくなってしまう。

Ubuntu Server 16.04 LTSのインストール

インストール前に、Gpartedを用いてWindowsパーティションを縮小する。今回は50GBに設定した。その後は、空き領域を最大限使う設定でインストールすればよい。swapも自動で切ってくれる。あとは、オプションで何をインストールするのか聞いてくるので、OpenSSHを選択してインストール。また、インストール途中に自動アップデートの設定について聞かれるので、セキュリティアップデートを自動で行うよう選択する。

パーティショニングの際、別の記事で述べるように、起動OSを再起動時に選択できるようにしたい。/bootは論理パーティションとしてext3で1GBのパーティショニングを行った。(ext4よりも古くからあり、Windows上のext2fsdからのアクセスが安定して行えると考えたため。)

  • 論理パーティション
  • 容量:1GB
  • マウントポイント:/boot
  • ファイルシステム:ext3
  • オプション:defaults
  • 起動フラグ:オン

日本語でインストールした場合、標準コンソールで操作する際に、OS側は日本語を表示しようとして文字化けしてしまう。そのため、インストールが終わったら $ vi ~/.bashrcにおける最終行に

を追加することで標準コンソールは英語で表示され、文字化けは起こらない。(SSHでは日本語がきちんと表示される。)

最後に、

として最新にしておく。

デスクトップ環境のインストール

ソフトウェアによってはGUIが必須の場合があるため、行っておく。taskselコマンドでまとめてインストールができる。

するとソフトウェアの選択画面が出てくるので、Ubuntu MATE Desktop (minimal installation)をスペースキーで選択する。OpenSSHのインストールを行っていない場合は、ここでOpenSSHも選択し、エンターキーでインストールが開始される。

※taskselでアンインストールを行うと、余計なソフトウェアも削除され動作が不安定になる。実際、これでUbuntu GNOME Desktopを削除しようとした際、依存関係にあるソフトウェアや後から入れたGeForceグラフィックドライバも含めて全削除されてしまった。それによってUbuntuを再インストールする羽目になった。taskselでのアンインストールは絶対に行わないようにし、消したいものはapt removeコマンドで削除を行う。

インストールが終了したら、MATE Desktopを起動し、ターミナルに

と入力し、ホームディレクトリ以下のディレクトリ名を英語にしておく。こうすることでCUIでのディレクトリ移動が楽に行える。何も起動しないときには、オプション --force を追加すれば良い。

 OpenSSHの設定

SSHサーバーのインストールを行っていない場合は以下のコマンドで行う。

ルーターの全ポート閉じていれば細かいことは気にしなくて問題なさそうであるが、Webサーバーとしても用いたい。セキュリティーの改善のため、以下の設定をした。ここではデフォルトからの変更点のみを示す。設定ファイルは

で変更する。

ポート番号の変更

ポート番号が22のままだと、攻撃のターゲットになりやすい。番号を変えたとしてもポートスキャンをすればバレるわけだが、やらないよりはましである。

ルートログインの禁止

ルートログインされてしまってはおしまいなので、禁止しておく。

公開鍵暗号方式のみ許可

パスワードのみの認証は危険である。パスワード認証を許すと一気に総当たり攻撃に弱くなるため、その手段を潰しておくことが必要である。その為の設定である。

ログインユーザーの制限

通常使用するログインユーザーのみログイン可能とする。

ポートフォワーディングの許可

VNCの通信をネットワーク越しにするのは非常に危険である。そのため、セキュアなSSHを通じて暗号化通信をすることでよりセキュアにできる。そのための設定である。詳細はVNCの項に示す。

これでもセキュリティ対策は十分とは言えないので、ポートノッキングや、踏み台サーバーIPの指定などの併用をおすすめする。また、私はセキュリティに詳しいわけでもなんでもないので、自分で調べることをおすすめする。

公開鍵暗号の設定

MacまたはLinux上(Ubuntu上でも良い)で、

と入力すると、ファイル名とパスフレーズを聞かれる。仮に秘密鍵が流出したときの対策として、パスフレーズを11文字以上で設定する。その理由はこちら

すると、

公開鍵: ~/.ssh/id_rsa.pub
秘密鍵: ~/.ssh/id_rsa

というファイルができている。(ファイル名を指定した場合は「id_rsa」の部分が異なる)

公開鍵を、サーバーの ~/.ssh/に配置し、

を実行する。

秘密鍵はクライアントのPCの ~/.ssh/に配置する。秘密鍵は絶対に流出させてはならない。

最後に、権限を設定する。サーバー上で、

を実行する。

最後に、SSHで接続できるか確認して終了となる。

 VNC Serverの設定

以下のコマンドでインストールを行う。

VNCはたとえパスワードを掛けたとしても簡単に解析されてしまう。そのため、インターネット越しで通信する場合はSSH上で通信する。

を実行すると、パスワードを聞かれるので入力すると、設定される。パスワードを変更したい場合は

を実行する。初期設定ファイルが生成されたので、変更を加える。

とし、最終行に

を追加し、MATE Desktopが立ち上がるようにする。(xstartupはvncスタート時に実行されるコマンドである。)

起動時にVNCを自動起動させたい場合は、

のマーク部分を追加する。

なお、VNCを終了したい場合は、

とする。最後の数字は、VNC環境のディスプレイ番号である。複数個環境を起動することができる。デフォルト設定であれば、それぞれポート番号は5900 + ディスプレイ番号となる。(例:ディスプレイ番号が1であれば5901番ポート)

 Firewallの設定

Ubuntuは初期設定においてFirewallが設定されておらず、全ポートが開放状態である。そのため、まずはFirewallソフトウェアをインストールする。

通常、IPv6は使用しないため、/etc/default/ufwのIPv6設定部分を

と変更する。

デフォルトでは、全ポートを拒否するために

とし、さらにSSH通信のみ許可するために

とする。Webサーバーを公開する場合はここでHTTP(80)とHTTPS(443)などのポートを開放しておく。

設定が終わったら、

で有効化し、

で状態を確認する。以下のようになっていればよい。

もちろん、SSHにアクセスするIPを制限することも可能である自分の使用範囲が特定IPのみからであれば、必ずアクセスIPは制限すべきである。詳細の使い方はこちらを参照いただきたい。基本的にSSHだけ開けておけば、ポートフォワーディングによってだいたいのことは外部からできるので、自分専用であればSSHしかポートを開けないほうが良い。逆にいえば、SSHさえ突破できれば簡単に攻撃されてしまう。セキュリティーアップデートは必ず定期的に実行する必要がある。また、話はずれるが、ネットサーフィンによって自らウイルスを拾ってきてしまっては元も子もない。サーバーはサーバーとして、デスクトップ用途での利用は控える必要がある。