「さくらのVPS」導入解説 その9:SSHのポート番号を変更する

この記事は「さくらのVPS導入解説 その8」の続きです。

今回はSSHのポート番号を変更します。

SSHのポート番号の変更

SSHは初期設定では22番ポートを使っています。
ただし、22番をそのまま使った場合、不正侵入の危険性が高まります。(何番のポートを使って通信しているかが分かれば、当然そこからの侵入の可能性が高まってしまうためです)

そこでSSHのポート番号を変更します。これは前回も編集したSSHの設定ファイル「sshd_config」をviで編集します。これもsudoしてから編集します。

  1. VPSにログインし、以下のコマンドを入力します。
    $ sudo vi /etc/ssh/sshd_config
    
  2. カーソルキーで移動して「#port22」の最後でaキーを押して挿入モードに入ります。
  3. Enterで改行し「Port10022」と入力します。
    #port22
    Port10022
    
  4. Escキーを押して挿入モードを抜けます。
  5. 「:wq」を入力して上書き保存と同時にviを終了します。
  6. ポート番号が変更できたら、以下のコマンドを入力してsshdを再起動します。
    $ sudo /etc/rc.d/init.d/sshd restart
    
  7. 「Stopping sshd」と「Starting sshd」がそれぞれOKと出たら再起動完了です。

以上でポート番号の変更は完了です。

ここで一度SSHを切断して、Poderosaから新しく設定したポート番号で接続できるか確認してください。また念のため、22番ポートでは接続できなくなっているかも確認しておきましょう。

参考:利用するポート番号について

なお今回ポート番号を10022にしたのは、さくらインターネット創業日誌を参考にしています。

・CentOSをサーバーとして活用するための基本的な設定

もちろんこのほかのポート番号を割り当ててもらってもOKです。
ポート番号は0~65535まで使えますが、あまり数字が小さいと他のサービスとかぶったり
ポートスキャンで早々と見つかったりするので、できれば大きめの数字を割り当てておくことをおすすめします。

参考:現在使っているポート番号を確認する

また現在 netstat -ln することで
StateがLISTENになっているポート(現在使っているポート)を確認することもできます。

Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN  

次回は、iptablesによるファイアウォールの設定を行います。

「さくらのVPS」導入解説 その8:システムのアップデート

この記事は「さくらのVPS導入解説 その7」の続きです。

前回までで通常ユーザーの作成と公開鍵認証ができるようになり、セキュアなログインが行えるようになりました。そこで今回からはサーバーのセキュリティ設定を行います。

システムのアップデート

まずOSのシステム自体のアップデートを行います。
さくらのVPSではOSも自由に選択できますが、ここではCentOSを導入しているものとして進めます。

Linux/UnixではOSおよびソフトウェアのアップデートについては、パッケージ管理システムと呼ばれるシステムを利用します。

たとえばWindowsでも、WindowsUpdate(MicrosoftUpdate)によってWindows自体のアップデートおよび各種ソフトの更新がなされますが、それと類似の機能を提供するものと考えると理解しやすいと思います。

パッケージ管理システムには幾つか種類がありますが、CentOSの場合はYum(Yellowdog Updater Modified)と呼ばれるシステムを採用しています。そしてこのYumを利用するために、そのままの名前ですが「yum」というコマンドが用意されています。

では実際にYumを利用してシステムをアップデートします。なお、yumコマンドはroot権限でしか利用できませんので、今回もsudoコマンドを使うことになります。

  1. Poderosaを使って、SSHの公開鍵認証でログインします。
  2. 「sudo yum update」と入力してEnterキーを押します。
  3. ユーザーパスワードを聞かれるので入力(貼り付け)してEnterキーを押します。
  4. ダウンロードするパッケージ一覧が表示され「Is Is this ok [y/N]:」と聞かれるのでyを入力してEnterキーを押します。
    Install       5 Package(s)
    Upgrade     154 Package(s)
    
    Total download size: 186 M
    Is this ok [y/N]: 
    
  5. さらにGDPキーをインストールするかどうか問われますので、再びyを入力してEnterキーを押します。
    warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
    base/gpgkey                                                                   | 1.5 kB     00:00     
    Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
    Is this ok [y/N]:
    
  6. すべてが完了すると「Complete! 」と表示されます。

以上でシステムのアップデートは完了です。

次回はSSHのポートを変更します。

「さくらのVPS」導入解説 その7:公開鍵認証の設定(後編)

この記事は「さくらのVPS導入解説 その6」の続きです。

前回で秘密鍵と公開鍵、および公開鍵を置くためのディレクトリが作成できました。今回は実際に公開鍵をサーバー上に送信し、認証方法をパスワードから公開鍵認証に切り替えます。

FTPクライアントで公開鍵を送信

具体的にどうやって送るかですが、今回はFTPクライアントを使って送ります。

まずはFTPクライアントがSSH接続に対応している必要があります。有名どころでSSH接続できるクライアントとしては、WinSCPとFileZillaがあります。(正確にはSCPクライアントやSFTPクライアントですが)

今回はやはり初心者にとっつきが良いと思うFileZillaを使います。
ダウンロードとインストールについては「FFFTPからの乗り換えにおすすめのFTPクライアント「FileZilla」の導入と設定」の記事を参考にしてください。

FileZillaでの公開鍵送信

  1. FileZillaメニューバーの「ファイル」→「サイトマネージャ」をクリックします。
  2. 「新しいサイト」ボタンをクリックします。
  3. 「ホスト」にVPSのIPアドレスを入力します。
  4. 「ポート」にはSSHの初期ポートである「22」を入力します。
  5. 「Protocol」のリストボタンから「SFTP」を選択します。
  6. 「ログオンの種類」は「通常」を選びます。
  7. 「ユーザー」に作成しておいた通常ユーザー名を入力します。
  8. 「パスワード」に通常ユーザーのパスワードを入力します。
    FileZillaでサイトを追加
  9. 「OK」をクリックするとVPSが追加されます。
  10. 「接続」をクリックして接続したあと、以下のように「.ssh」ディレクトリがあることを確認します。
    .sshを確認
  11. 「.ssh」ディレクトリを開き、先ほど作成・保存しておいた「authorized_keys」をアップロードします。

これで公開鍵がサーバー上に置けました。

さらにauthorized_keys.pubはパーミッションを600(自分だけ読み書きできる)にしておきます。
Poderosaから行っても良いですが、FileZillaを開いているので、そのまま右クリック→「ファイルパーミッション」で600に設定してもOKです。

以上で公開鍵の配置が完了しました。

公開鍵認証を有効にする

公開鍵は置けましたが、さくらのVPSの初期設定ではパスワード認証のみが有効になっており、公開鍵認証は有効になっていません。そこで「sshd_config」というファイルを編集し、公開鍵認証を有効にします。

  1. Poderosaで通常ユーザーでVPSにログインします。
  2. sshd_configはroot権限でないと編集できないので、ここで一時的にroot権限を扱える「sudo」コマンドを使います。下記のように入力してください。
    $ sudo vi /etc/ssh/sshd_config

    • sshd_configは実際には上記のようにフルパスで「/etc/ssh/sshd_config」と入力しないと動かないので注意してください。
    • またsudoのあとの「vi」は、Linux/Unix系に標準で入っているVi(Vim)というエディタを起動するためのものです。
    • なおLinuxやUnixではサーバー設定に関するファイルはetcディレクトリ以下に置くなどの大まかな決まりがあります。(ディストリビューションごとに細かい違いはありますが)。そのため今回編集するsshd_configも、etc内に置かれています。
  3. 「password for username:」とパスワード入力を求められるので、入力(または貼り付け)します。
    • Poderosaでの貼り付けは、メニューバー「編集」→「貼り付け」です。
  4. 上手くコマンドが動けば、sudoの設定ファイルを編集したときと同じようにviエディタを使っての編集画面になります。初期設定では鍵認証に関する以下の三行が「#」でコメントアウトされていますが、これらを有効にします。
    #RSAAuthentication yes
    #PubkeyAuthentication yes
    #AuthorizedKeysFile     .ssh/authorized_keys
    
    • (viの操作に詳しくない場合は)カーソルキーで該当の箇所まで移動して、それぞれの「#」の上でxキーで削除できます。
  5. 「#」を削除して有効にできたら、いったん上書き保存&終了します。sudoの設定ファイルのときと同じく「:wq」と入力してEnterキーを押します。
    :wq
    
  6. さらにsshd_configはSSHデーモン(サービス)を再起動しないと変更が有効にならないので、その操作を行います。これもroot権限が必要なので、sudoを使い、sshd(SSHデーモン)のフルパスを指定して再起動させます。
    $ sudo /etc/rc.d/init.d/sshd restart
    
  7. 「Stopping sshd:」および「Starting sshd:」が「OK」と出れば再起動完了です。

これで鍵認証が有効になりました。

なお、パスワード認証がまだ有効になっていますが、この時点でパスワード認証を同時に不可にしてしまうと、万が一鍵認証が通らなかった場合に、サーバーにアクセスできなくなります。なので、まだパスワード認証も許可しておきます。

公開鍵認証への切り替え

公開鍵認証でのログインの確認

まず公開鍵認証でのログインが可能になっているかを確認します。

  1. いったんPodrosaのコンソールを閉じます。
  2. 再び新規telnet/SSH接続を開きます。
  3. 「認証方法」をパスワードから「公開鍵」に変更し、「パスフレーズ」も鍵作成時に入力したパスフレーズに変更します。
  4. さらに「鍵ファイル」は参照ボタンから、保存しておいた秘密鍵を選びます。
  5. 「OK」で接続します。

接続に成功すれば、これで公開鍵認証はOKです。

パスワード認証およびrootログインの無効化

セキュアな公開鍵認証が可能になったので、これまでのパスワード認証は無効にしておきます。
さらに、あわせてここでrootでのログインも禁止しておきます。

  1. 「sshd_config」を開きます。
    $ sudo vi /etc/ssh/sshd_config
    
  2. #PermitRootLogin yesとなっている行を探します。
  3. xキーで「#」を削除します。
  4. yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
  5. Escキーを押して挿入モードから抜けます。
  6. つづけてPasswordAuthentication noとなっている行を探します。
  7. yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
  8. 「:wq」と入力して、上書き保存と終了を同時に行います。

これでパスワード認証およびrootログインが無効になりました。以降は通常ユーザーでの公開鍵認証によるログインのみを利用することになります。

次回はサーバーのシステムを最新状態にアップデートします。