ConoHa VPS で Ubuntu 14.04 を使い始めてみる
Linux
Linux で Swift を使ってみたくて、まずは ConoHa VPS で Ubuntu 14.04 を動かしてみることにしました。
Apple のプログラミング言語 Swift が Linux 対応になって、自分もそれを使ってみたくなったのですけど、自分がこれまで使用していた Linux は Fedora 23 で、残念ながら Swift は公式にはサポートされていない OS でした。
Fedora 23 でも動かせないかと試してみたのですけど、途中までしかビルドを進められず、もし出来たとしてもその後も何かと苦労しそうだったので、今回は Swift の動作環境として正式表明されている Ubuntu 14.04 を ConoHa VPS の仮想サーバーで動かしてみることにしました。
今回はその Ubuntu の仮想サーバーを立ち上げるまでの方法と併せて、自分はこれまで Debian 系の Linux を使ったことがなかったので、運用する上で必要になりそうなファイアーウォールとシステムアップデート周りについてを簡単にながら調べてみました。
ConoHa で Ubuntu を動かす
ConoHa のアカウントは取得済みだったので、それで ConoHa コントロールパネル
にログインしたら サーバー追加
から、新たにひとつ VPS を追加します。
とりあえず、いちばん安いプランを選びつつ、イメージの選択で Ubuntu
を選択します。Ubuntu のバージョンは
時点では 14.04
が選べるようになっていたので、今回はその 64 bit 版を選択することにしました。
セキュリティ周りの事前設定
そんな設定手順の中で、接続許可ポートが選択できるのが面白いところでした。
この設定はどうやら OS で設定するものとは別のファイアウォール設定みたいだったので、最終的には OS でファイアーウォールを設定して すべて許可
に設定しましたけど、こうやってセットアップの段階から手軽に設定できるのは嬉しいところに感じました。
SSH 認証キーの登録
他、あらかじめ SSH 認証用の秘密鍵と公開鍵のペアを作っておいて、そのうちの公開鍵をセットアップと合わせて登録できるようになっていました。
こちらは、登録した公開鍵が root アカウントの .ssh/authorized_keys
に登録されて、秘密鍵を使って SSH 接続できるように Ubuntu がセットアップされてくれる様子でした。
root パスワードの設定
ところで、設定時に root アカウントのパスワードを設定する欄があるのですけど、何度入力してもエラーで先に進めないことがありました。
これはどうやら、パスワードの要件を満たしていても、パスワード内で半角スペースを使用していると、パスワードを入力できたことになってくれない様子でした。
セットアップ完了
このような感じで幾つか項目を選択したら
を押すだけで、数分ほどで Ubuntu がセットアップされて、利用できるようになりました。セットアップが終わるともう SSH を使って接続できるようになってましたが、ConoHa コントロールパネルからコンソール接続で直接操作できるようにもなっているので、何らかの理由で Ubuntu へのネットワーク接続ができなくなっても普通に作業を行えます。
Ubuntu のバージョンを確認する
現在実行している Ubuntu バージョンの確認は、Ubuntu にログインしてから次のコマンドを実行することで行えます。
cat /etc/lsb-release
このようにすると、次のようにバージョン情報が表示されます。
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
SSH の待ち受けポート変更
Ubuntu 14.04 の SSH 待ち受けポートの変更は、Fedora 23 等と同じように /etc/ssh/sshd_config
内の Port
を変更することで行えます。
ポート番号の他にも例えば PermitRootLogin
を no
に設定して root による SSH 接続をできなくしたりもできます。
設定を行ったら、次のようにして SSH を再起動することで、新しい設定が有効になります。
service ssh restart
システムのアップデート
Ubuntu 14.04 のシステム周りのアップデートは apt-get
を使って行うようです。
とりあえず apt-get -s upgrade
を実行することでアップデートできるパッケージを確認できるらしいのでやってみても候補は出なかったので、まだ OS をインストールしたばかりだからかと思ったのですけど、どうやらまず apt-get update
を実行して、パッケージの一覧を更新する必要があるようでした。
そうしてから apt-get -s upgrade
を実行してみると何やらパッケージリストが表示されるようになり、実際にアップデートするときは apt-get upgrade
を実行することで行えるようになった様子でした。
他にも、現在インストールされているものを確認したい時には apt-cache search all
を実行すれば良いようです。
ファイアーウォール設定
Ubuntu 14.04 でも、一般的な Linux のように iptables を使ったパケットフィルタリングを行えるようになっているようですが、それを簡単に設定するための ufw
というツールが用意されているようなので、これを使ってファイアーウォールを設定してみます。
なお、この ufw
は iptables を使ってパケットフィルタリングを実現し、原則として外側から入ってくるパケットに関する制御を行い、外側へ出て行くパケットについては制御しないスタンスを取るそうです。
ufw を有効化する
ConoHa で Ubuntu 14.04 をインストールした直後はまだ ufw
が有効化されていないようなので、次のようにして有効化します。
ufw enable
このようにすると、画面に Command may disrupt existing ssh connections. Proceed with operation ?
というメッセージが表示されます。つまり SSH 接続が切断される可能性があるかもしれないとのことなので、もし切れても作業を続けられるように ConoHa コントロールパネルのコンソールから作業をすると安心かもしれません。
フィルタリングルールを設定する
そして、フィルタリングのルールを設定します。
今回は、原則は外からの通信を遮断して必要なものだけを通過させる設定をしようと思うので、まずは次のようにして、基本姿勢として 禁止
となるようにルールを設定します。
ufw default DENY
そうした上で、必要な通信を許可していきます。通信の許可は ufw allow
コマンドを使って行います。
ufw allow ssh/tcp
ufw allow https/tcp
たとえばこのようにコマンドを実行すると、TCP の ssh (22) ポートと TCP の https (443) ポートとへ外部からアクセスできるようになります。
ポート番号は 22
のように数字で指定することもできますし、上記のように /etc/services
に記載されているサービス名で指定することもできます。
フィルタリングルールを削除する
登録したフィルタリングルールを削除するには、登録時のコマンドと同じようにして ufw delete
コマンドを実行します。
ufw delete allow https/tcp
たとえばこのようにすることで TCP の https ポートへの許可設定を削除することができます。
アプリケーション名でルールを設定する
また、ufw
はアプリケーション単位で設定を持つことができるようになっていて、そのアプリケーション名を使って許可設定を行うことも可能です。
ufw allow OpenSSH
指定できるアプリケーション名は /etc/ufw/applications.d
に定義されていて、どんな名前のアプリケーションが定義されているかは、次のコマンドを実行することで確認できるようになっています。
ufw app list
接続元や接続先を細かく指定する
たとえば、IP アドレス 192.168.1.0/24 からに限って OpenSSH アプリへの接続を許可したいような時は、次のように設定できる様子でした。
ufw allow from 192.168.1.0/24 to any app OpenSSH
これは 192.168.1.0/24 から当サーバーの任意の宛先への接続を許可する設定で、最後の app OpenSSH
のところは ufw
に登録されている OpenSSH
アプリへ向けた接続という意味になります。
接続先をアプリ名ではなく、ポート番号で指定したい場合は次のようになるようです。
ufw allow from 192.168.1.0/24 to any port 22
設定内容を確認する
このようにして設定したパケットフィルタリングの設定内容は、次のようにして確認できるようになっています。
ufw status verbose
こうすると、次のように設定内容が表示されます。
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 443/tcp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) 443/tcp (v6) ALLOW IN Anywhere (v6)
パケットフィルター自体は iptables で実現されているので iptables -L
を実行して、フィルタリングの設定内容を確認することも可能です。
設定内容の保存場所
こうして設定した ufw
の内容は /etc/ufw
と /lib/ufw
の 2 箇所に保存される様子でした。
たとえば ufw enable
を実行すると /etc/ufw/ufw.conf
内の ENABLE
が yes
に設定されます。他にも ufw allow
で行った許可設定は /lib/ufw/user.rules
などに記録される様子でした。ちなみにここに記した設定は、実際の iptables では ufw-user-input
チェインに登録されて運用される様子です。
設定有効化のタイミング
ufw
の設定が有効になるタイミングは、基本的には ufw allow
コマンドを実行するとすぐに iptables に反映される様子なので、運用開始後は特に注意して操作する必要がありそうです。
ちなみに ufw allow
は設定が即座に反映されますけど、いちおう ufw reload
という再読み込みのコマンドも用意されている様子でした。使い所としては、設定ファイルを手で書き換えた時などが考えられる気がしますけど、試しにやってみたところ書き加えた設定が消滅したりしたので、とりあえずは ufw allow
で設定を調整するのが無難そうです。
設定完了
ufw
周りはもう少し細かい設定ができるようですし、その他の基本的なところもまだ勝手が分からないので、もう少し使って慣れていかないといけないですけど、ともあれこんな感じで、初めて触る Linux ディストリビューションでしたけど、けっこうサクサクとセットアップができた印象でした。
もしかして Ubuntu って、なかなか使い易い Linux かもしれませんね。