【VPSサーバ構築03】Linuxサーバの初期設定を行う(SSHクライアントの導入)
SSHクライアントの導入
今回はサーバの初期設定をいくつか行います。
具体的にはSSHクライアント(TeraTerm)を使えるようにする手順です。
SSHクライアントとは、簡単にいえば自分のPCでVPSサーバを遠隔操作することです。現状さくらインターネットが提供しているVMCコンソールをブラウザで使用していますが、TeraTermなどのSSHクライアントソフトを使用した方が、高機能で使いやすいのでこちらへの移行を行います。
その過程でセキュリティや通信の設定を行います。
流れとしては以下のようになります。
- 一般ユーザの作成
- SSHの設定
- SELinuxの設定
- ファイアウォールの設定
- SSHクライアント(TeraTerm)の準備
- 一般ユーザにrootと同権限を与える(sudo)
一般ユーザの設定
Linuxの管理者(rootユーザ)は非常に大きな権限を有します。よって次に行うSSHの設定で、rootユーザでのSSHログインができないようにします。
その準備としてまずは一般ユーザのアカウントを作成します。
サーバ設定画面から【コンソール】→【VMCコンソール】と進んでVPSを開きrootアカウントでログインします。

ログインができたら以下のコマンドで作業用アカウントの追加をします。
# useradd [ユーザ名]

次に今作成したユーザのパスワードを設定します。
# passwd [パスワード設定するユーザ名]

作成するパスワードと確認用で2回パスワードを入力すればOKです。
ではrootアカウントを「exit」でログアウトして、今作成したworkerアカウントでログインします。

ログインできました。プロンプトが#から$に変わっています。
SSHの設定
SSHとは暗号化された通信化で手元のPCからリモート接続する仕組みです。
ひと口にSSH設定といってもいろいろありますが、今回はrootユーザによるログインの制限と、デフォルトの待ち受けポート番号を変更します。
具体的には「/etc/ssh/sshd_config」ファイルの「PermitOootLogin」パラメータを修正します。直接ファイルを編集して問題ないのですが、念のためにバックアップファイルを作成してから編集を行いいます。
まずはユーザをrootに切り替えます。
rootユーザへの切り替え
$ su –
パスワードを入力すると、プロンプトがrootユーザのものに変わりました。これでroot権限で作業できるようになりました。

次にバックアップファイルを作成するため以下のコマンドを入力します。
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.back

バックアップファイルを作成したらviエディタで編集を行います。
# vi /etc/ssh/sshd_config

編集箇所は17行目の「#Port 22」を「Port 10022」に変更します。こればデフォルトの22は攻撃を受けやいすための変更です。
そして49行目の「#PermitRootLogin yes」を「PermitRootLogin no」に変更してrootユーザのログインを制限します。
viコマンドでファイルを開くとノーマルモード状態になっています。このままでは編集ができませんので「i」キーを入力して挿入モードに変更します。


2ヶ所の編集が終わりました。保存して終了するにはまず「Esc」キーでノーマルモードに戻ってから「:wq!」と入力します。
最後にsshdを再起動すれば設定が反映されます。
# systemctl restart sshd.service

これでrootではログインできなくなったはずなので試してみます。
rootでは正しいパスワードを入れてもはじかれます。

一般ユーザ(作業用ユーザ)だと接続できます。

SELinuxの設定
SELinux(Security-Enhanced Linux)とは、
ユーザの役割を限定することで、不正な侵入をされた際にファイルパーミッションの変更を防ぐことができます。
勝手にファイルのパーミッションを変更されるとその設定によってはファイルが無防備な状態になりますし、root権限で不正な侵入(あるいは悪意あるユーザに「UID=0(rootユーザ権限)」を取られると前ファイルが無防備な状態になります。
SELinuxは侵入を防いでくれるものではありませんが、侵入された際の被害を少なくしてくれます。
SELinuxの動作をもう少し詳しく説明すると、セキュリティポリシーが記載されたファイルを読み込む(適用する)ことで、機能実現します。
そしてそのセキュリティポリシーファイルはユーザ、プロセス、ファイルに付加するセキュリティコンテキスト、ファイルにセキュリティコンテキストを付加するためのマッピング定義、アクセス制限のルールなどが記載されています。
本格的に設定しようとすると大変ですので、ここでは動作モードを変更するに留めます。動作モードには以下の3つがあります。
・enforcing
→ SELinuxのセキュリティポリシーを強制実行する
・permissive
→ SELinuxのセキュリティポリシーを強制せず、ポリシーに反した場合は警告メッセージを出す
・dissabled
→ SELinuxのセキュリティポリシーをロード(適用)しない
今回は「permissive」を設定します。
まずは現在のモードを確認します。

現状SELinuxは非適用となっています。これを「permissive」に変更します。
「enforcing」⇔「permissive」の変更はコマンドで行うことができますが、「dissabled」からの変更は設定ファイル(etc/selinux/config)を編集する必要があります。
まずはバックアップファイルを作成します。
# cp /etc/selinux/config /etc/selinux/config.back

バックアップファイルが作成できたらviコマンドでファイルを編集します。
赤枠部分の行で、disabledをpermissiveに編集します。

編集が終わったら「Esc」キーを押してコマンドモードに切り替えたのち、「:wq!」と入力して保存して終了します。
最後に「reboot」コマンドで再起動をかけて設定を反映させます。
これでSELinuxのポリシーに沿っていないアクセスがあった際は警告が出ます。
最後にSSHで設定したポートをSELinuxで許可する設定を行います。
以下のように入力して設定コマンドをインストールします。

次に以下のように入力して設定を行います。

設定が反映されたかを確認します。

10022のポートが追加されていればOKです。
ファイアウォールの設定を行う
ファイアウォールとはネットワークからの不正なアクセスを阻止する仕組みです。
デフォルトではポート10022はアクセスを許可していませんので、その設定を変えます。
設定ファイル「/usr/lib/firewalld/services/ssh.xml」のテンプレートをコピーします。

コピーしたファイルをviエディタで編集します。
赤枠部を10022に編集します。編集の方法はSELinuxの設定ファイルを編集した時と同じです。


編集が終わったら以下のコマンドで設定変更を反映させます。
# firewall-cmd –reload(※ハイフンはふたつ)
最後にSSHサーバを再起動して設定を反映させます。
# systemctl restart sshd.service
SSHクライアント(TeraTerm)を用意する
ここまでの設定でSSHクライアントを使う準備が整いましたので、TeraTermをインストールして実際に使ってみます。
サイトから最新版のTeraTermをインストールします。
起動すると接続画面が出ます。以下の操作を行います。
・[ホスト]にVPSのIPアドレスを入力(①)
・[TCPポート]に10022を入力(②)
・【OK】をクリック

初回はセキュリティのメッセージが出ますので【続行】をクリックします。

VPSのログインユーザとパスワードを求められますので、それぞれを入力して【OK】をクリックします。
※rootはSSH接続できないように設定していますので、ログインユーザは一般ユーザで行います。

ログインができました。
ブラウザのコンソールに比べて断然操作しやすいです(ショートカットキーを使った操作が簡単)

一般ユーザにrootと同権限を与える(sudo)
SSHクライアントではrootでログインできないため、root権限が必要な作業ができません(コマンドがはじかれる)。
そこで自分で作成した一般ユーザにroot権限でしかできないコマンドの使用を許可します。
それがsudoコマンドです。
コマンドひとつひとつに設定できますが、今回は全コマンドが使用できる許可を一般ユーザに付与します。
suコマンドとの違いはsudoの方はrootユーザのパスワードが不要ということです。
rootユーザのパスワードを通知しなくてよい点とコマンドごとに設定できる(たとえばshutdownコマンドだけ許可するなど)点がsuより優れています。
いったんVMCコンソールでの操作に戻ります。
root権限でログインした状態でブラウザコンソールにvisudoコマンドを入力します。
またsudoの設定を行うには設定ファイル「/etc/sudoers」を直接編集はせずに「visudo」コマンドを使用します。

以下の1行を末尾に追加します。編集の方法はviコマンド使用時と同じです。
worker ALL=(ALL) ALL

これでほぼすべての作業をTeraTermに移行できます。
次回からは実際にウェブサーバ構築に必要なソフトのインストールと設定を行っていきます。