さくらのVPSでCentOS 6のセキュリティ設定とSSH鍵認証の接続環境を構築と題して、情報共有をします
「さくらのVPSを借りてサーバ構築を行うための申し込み方法と準備」の続きになります。
前回でさくらのVPSに申し込み、VPSを借りることが出来ました。
またサーバ構築に必須のSSHクライアント「Tera Term」をインストールしましたので、今回はいよいよVPSの内部に入っていきます。
今回はCentOS 6のセキュリティ対策を中心とした初期設定と、Tera Termによる鍵認証を使用したSSH接続環境を構築します。
さくらのVPSでは、標準インストールされているCentOS 6以外にUbuntu、Scientific Linux、FreeBSD、Debianなど複数のOSが選択肢としてあります。
今回は初心者向けということもありまして、標準インストールされているCentOS 6を使用します。
これであればインストール作業自体不要となりますので、作業負荷が軽減されますし、余計なミスで手間取ることも回避できます。
またCentOS 6を使用するのはただ便利というだけではなく、安定性やメンテナンス性に優れているからでもあります。
CentOSはRed Hat Enterprise Linux(RHEL)のクローンです。
RHELは企業向けの製品版になりますので、商用としてのセキュリティ対策や定期的なアップデートが行われています。
そのRHELをベースとしているCentOSは、無料OSとはいえ商用製品と同等の品質を持っていることになります。
メンテナンスの更新(Windowsでいうサポート期間?)も6~7年と長いですので、同一バージョンを長く使い続けられるのも魅力ですね。
さくらのVPSの標準OSということは、さくらインターネットとしてもオススメのOSということだと思いますので、まず間違いないと思います。
VPSに慣れたら、新しいOSにチャレンジしても遅くはないでしょう。
では早速さくらのVPSの仮想サーバを起動しましょう。
「さくらインターネットVPSコントロールパネル」にアクセスし、VPS申し込み後に送られてきたメール「[さくらのVPS] 仮登録完了のお知らせ」に書かれた「IPアドレス」と「パスワード」を入力して、「ログイン」ボタンをクリックします。
仮想サーバは停止状態ですので、「起動」ボタンをクリックして仮想サーバを起動します。
起動には10分ほどかかりますので、時間をおいてTera Termを起動してください。
現在の仮想サーバはセキュリティ対策のされていない、無防備な状態になっています。
本記事の設定が全て終わらない状態で作業を中断する際には、その間は仮想サーバを停止させておくことをオススメします。
「ホスト」にIPアドレスを入力し、「OK」ボタンをクリックします。
初回のアクセス時に上図のような画面が出ますが、「続行」ボタンをクリックして先に進みます。
「ユーザ名」と「パスフレーズ」に、「[さくらのVPS] 仮登録完了のお知らせ」に書かれた「[管理用ユーザ]」の「ユーザ名」と「初期パスワード」を入力して、「OK」ボタンをクリックします。
これでさくらのVPSの仮想サーバにログインできたはずです。
管理用ユーザはroot権限を持っているため、万が一アカウントを乗っ取られてしまった場合は大変なことになってしまいます。
初期パスワードもランダムで作られたものですが、セキュリティ対策として管理用ユーザのパスワードを変更します。
赤字の「passwd」と入力し、パスワード変更をします。
「New password:」と聞かれますので、新しいパスワードを入れましょう。
記号を含む英数字が使用できますので、それを織り交ぜて16文字以上で設定するのが望ましいです。
入力中は画面に何も表示されませんが、問題なく入力されていますので気にしないでください。
「Retype new password:」ともう1度聞かれますので、同じパスワードをもう1度入力します。
赤字の「exit」と入力し、1度ログアウトをします。
再度Tera Termを起動して、管理用ユーザでログインしましょう。
その際のパスフレーズ(パスワード)は、先ほど変更した新しいパスワードになります。
問題なくログインできれば、パスワードの変更は成功しています。
管理用ユーザはなんでも出来てしまうため、ちょっとしたミスでシステムを壊す危険性すらあります。
そこで作業用ユーザを作成し、なるべく作業用ユーザを使用して作業するようにします。
赤字の「useradd」を使用し、「hanemaru」というユーザを作成しています。
続いて「passwd hanemaru」と入力して、「hanemaru」のパスワードを設定します。
ここは管理用ユーザのパスワード変更と同じように、2度入力することになります。
セキュリティの観点から、管理用ユーザとは別のパスワードにしてください。
次に管理用ユーザへの昇格を、今作成した作業用ユーザに限定するようにします。
「usermod -G wheel hanemaru」と入力して、作業用ユーザを管理者グループへと追加します。
「vi /etc/pam.d/su」と入力し、ユーザ切り替えを行う「su」の設定ファイルを開きます。
「vi」というのはテキストエディタなのですが、操作がかなり独特です。
操作説明は下記からどうぞ。
viエディタの使い方
となっている部分を
先頭の「#」を削除して、上記の状態にして保存します。
root権限が必要な場合、suコマンドを使用して管理用ユーザに切り替えて作業を行う必要がありますが、前述したように危険が伴います。
その問題を回避するために、UNIX系OSには「sudo」コマンドという代替手段が用意されています。
sudoコマンドのメリットは以下のとおり。
・管理者権限は短時間で自動的に破棄される。
・sudoコマンド実行ログが残り、何か不具合が発生した際にどのようなコマンドを実行したのかを確認することができる。システム監視の意味でも有用。
・大きな変更を加える際、パスワードの入力を求められるようにすることで、ユーザは何をしようとしているか再認識することができる。
・ユーザを管理者グループに追加・削除することにより、管理者権限を持つことのできるユーザーを限定できる。
・rootアカウントでのログインを無効にしている場合、パスワードの総当たりなど、強引な手法でシステムに侵入を試みるクラッカーがrootアカウントで侵入できない。
「visudo」と入力し、「sudo」の設定ファイルを開きます。
viとsudoの間にスペースが無いことに注意してください。
となっている部分を
先頭の「#」を削除して、上記の状態にして保存します。
今現在Tera TermからSSH接続する際は、「ユーザ名」と「パスフレーズ」を入力してログインしています。
仮想サーバへの接続をより強固なものとするために、ユーザ名とパスワードのログインを禁止して公開鍵認証でのログインのみへと変更します。
鍵ファイルを作成するため、Tera Termを起動します。
接続ダイアログが開きますが、「キャンセル」ボタンでキャンセルしてください。
「設定」-「SSH鍵生成」をクリックします。
「生成」ボタンをクリックします。
しばらくすると「鍵を生成しました。」と表示されますので、「パスフレーズ」を入力し、「公開鍵の保存」ボタン「秘密鍵の保存」ボタンをそれぞれクリックして、鍵ファイルを保存します。
ここで指定するパスフレーズは、鍵専用のものとして新しく設定してください。
今まで設定した管理用ユーザや作業用ユーザとは、別のパスワードにした方が好ましいです。
公開鍵のファイル名は「id_rsa.pub」、秘密鍵のファイル名は「id_rsa」となっているはずです。
続いてTera Termで仮想サーバにログインします。
今回も「ユーザ名」と「パスフレーズ」を使ってログインします。
ただしユーザ名とパスフレーズは管理用ユーザではなく、作業用ユーザ(ここではhanemaru)になります。
まず「pwd」コマンドを使用して、現在位置を確認します。
何も操作していなければ、「/home/作業用ユーザ名」と作業用ユーザのホームディレクトリに居るはずです。
念のため「ls」コマンドで、ホームディレクトリの中身を確認し、
「mkdir」コマンドで公開鍵格納用のディレクトリ「.ssh」を作成します。
「chmod」コマンドで「.ssh」のパーミッション(アクセス権)を変更します。
700は所有者のみ読み・書き・実行の許可を意味します。
最後に作業で問題がなかったかを「ls」コマンドで確認します。
「cd」コマンドで公開鍵格納用のディレクトリ「.ssh」へ移動し、「vi」コマンドで公開鍵ファイル「authorized_keys」を作成します。
新規ですので中身は空なので、Tera Termで作成した公開鍵「id_rsa.pub」の中身をコピーして貼り付けます。
作成する度に内容は変わりますが、参考までに上記のような文字列が書かれていると思います。
あくまで上記はサンプルですので、これを貼り付けても動きませんのでご注意ください。
コピーして貼り付けた後は保存をして、
「chmod」コマンドで「authorized_keys」のパーミッション(アクセス権)を変更します。
ユーザ名とパスワードのログインを禁止して公開鍵認証ログインのみとするだけでなく、接続のポート番号変更や管理用ユーザでのログイン禁止など、サーバ侵入を難しくする設定を行います。
「vi」コマンドでSSHの設定ファイル「sshd_config」を編集します。
このファイルの所有者は管理用ユーザになりますので、「sudo」コマンドを使用して管理者権限を行使します。
ログインしてからの初回や一定の時間が経ちますと、sudoの際にパスワードを聞かれます。
このパスワードは管理用ユーザのものではなく、作業用ユーザ(ここではhanemaru)のパスワードを入力します。
となっている部分を
と修正し、SSHのポート番号を変更します。
ポート番号は好きな数字で設定できますが、1024までは予約されたポート番号が犇めき合っていますので、安全を取って10000~65535までの数字で指定してください。
となっている部分を
と修正し、管理用ユーザでのログインを禁止にします。
となっている部分を
と修正し、パスワード無しでのログインを禁止します。
となっている部分を
と修正し、ユーザ名とパスワードでのログインを禁止します。
となっている部分を
と修正し、PAM認証を禁止します。
以上の修正を施しましたら設定を保存し、
「sudo service sshd restart」でSSHサーバを再起動し、修正した設定を反映させます。
これを実施した時点で、ユーザ名とパスワードでのログインが不可能となっているはずです。
「exit」で1度ログアウトをし、公開鍵認証によるログインをしてみます。
「ホスト」にIPアドレスを入力し、「TCPポート」に新しいポート番号を入力します。
この記事での例では「25463」になっています。
入力が終わりましたら「OK」ボタンをクリックします。
「ユーザ名」には作業用ユーザ(ここではhanemaru)を入力し、「パスフレーズ」にはSSH鍵生成時に設定したパスフレーズを入力します。
作業用ユーザのパスワードではありませんので、注意してください。
続いて「RSA/DSA鍵を使う」をチェックし、「秘密鍵」ボタンをクリックして秘密鍵ファイルの「id_rsa」を選択します。
入力が終わりましたら「OK」ボタンをクリックします。
これで無事ログインできましたでしょうか。
それほど劇的な変化はありませんが、OSの言語環境を日本語にしてヘルプやメッセージを日本語化します。
「vi」コマンドで言語の設定ファイル「i18n」を編集します。
となっている部分を
と修正して保存します。
以上で日本語化が終了です。(笑)
仮想サーバを再起動した際に反映されます。
今回新規で作成した作業用ユーザには、コマンドまでのパスを通していません。
コマンドによっては実行時にフルパスを記述する必要があり、かなり煩雑です。
そこでパスをいくつか追加登録します。
「vi」コマンドでログイン時に読み込まれる設定ファイル「.bash_profile」を編集します。
となっている部分の下に
を追加して保存します。
ログインをし直すか上記コマンドで、変更した設定が反映されます。
iptablesはパケットフィルタリングやネットワークアドレス変換(NAT)の機能を有しており、ルーターのような役割を果たします。
特定ポートのみの許可や拒否だけでなく、いろいろな条件にてフィルタリングが可能で多機能なのですが、今回はSSH、WWW (HTTP)、安全なWWW (HTTPS)のみを許可し、他は拒否するような設定をします。
初回で定義を1から作るのは敷居が高いですので、雛形をツールを使用して作成します。
上記コマンドを実行することで、設定ツールが立ち上がります。
テキストですが、なんとなくGUIっぽいインターフェースです。
下に書かれていますようにTabキーで移動、Spaceキーで選択となり、現在位置は黒く反転しています。
まずは「有効」の箇所でSpaceキーを押して、「*」を付けます。
次にTabキーで「カスタマイズ」まで移動して、Spaceキーを押してください。
ここでは通信の許可をするサービスを選択します。
カーソルキー(矢印キー)で上下できますので、まずはSSHまで移動してSpaceキーで「*」を付けます。
同じようにWWW (HTTP)、安全なWWW (HTTPS)の2つも「*」を付け、最後は「閉じる」でSpaceキーを押してください。
「OK」まで移動し、Spaceキーを押してください。
system-config-firewallが終了し、雛形の設定が作成されます。
「vi」コマンドでiptablesの設定ファイルを編集します。
セキュリティ対策の一環としてSSHのポート番号を変えていますので、変更後のポート番号に書き換えます。
となっている部分を
と修正して保存します。
ポート番号を好きな番号にしている場合は、その番号で修正してください。
「sudo service iptables restart」でiptablesを再起動し、修正した設定を反映させます。
これを実施した時点で、許可したポート以外の通信は拒否されます。
以上で、さくらのVPSにてCentOS 6のセキュリティ対策をメインとした初期設定と、Tera Termによる鍵認証を使用したSSH接続環境を構築しました。
次回はWebサーバnginxのインストールと設定を行います。
私が利用しているVPSサービスは「さくらのVPS」です。
Tweet | ||
カテゴリー | : | サーバ設定や運営 |
キーワード | : | さくらのVPS,CentOS,teraterm,専用サーバ,サーバ構築 |
コメントを記入する
コメントを受け付けました。
コメントは管理人の承認後、表示されます。