ウェブ、ショウジン

さくらVPSでのセキュリティ関係の設定(Ubuntu)

2011-11-1
Category
Server Web技術

sshログインをパスワード認証から公開鍵認証に変更する

まず、クライアントのローカルマシン上で鍵のペアを作成して公開鍵での認証を有効にする。

ssh-keygenコマンドで鍵のペアを作成。

*~/.sshディレクトリが必要で、このディレクトリのパーミッションは700。

次のコマンドを実行して鍵ペアを生成する。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザ名/.ssh/id_rsa):

鍵の作成場所と鍵ファイル名を確認されるので、問題なければこのままReturn。
(この例ではid_rsaとid_rsa_pubファイルが生成される)

Enter passphrase (empty for no passphrase):

passphrase(パスフレーズ)の入力を求められるので、パスワードとは違う文字列を指定。
*このパスフレーズは、違うクライントマシンで最初にsshログイン(公開鍵認証を利用しての)する際に必要なので覚えておくこと。入力は初めてのsshログインにおいてのみ必要。(と思ってたら、翌日のログインではまた聞かれた。キーチェーンに保存してなかったからかな?)

確認のため再入力を求められるので、同じ文字列を入力してReturn。

Enter same passphrase again:

作成された鍵情報が出力される。(The key’s randomart image is: の部分は割愛)

Your identification has been saved in /Users/ユーザ名/.ssh/id_rsa.
Your public key has been saved in /Users/ユーザ名/.ssh/id_rsa.pub.
The key fingerprint is:
43:2d:8f:50:64:5b:75:2c:2c:51:3a:9f:c2:ce:d6:08 ユーザ名@ユーザ名-MacBookAir.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+-----------------+

生成されたid_rsaとid_rsa.pubの二つのパーミッションを600に。

公開鍵はid_rsa.pubのほう。これをsftpでクライアントローカルからリモート(VPSサーバ)の~/.sshへコピー(転送)。

転送したid_rsa.pubをauthorized_keysにリネームし、このauthorized_keysのパーミッションを700に変更。

これでsshログイン(公開鍵認証での)してみる。

$ ssh user_name@申込時にさくらから与えられたホスト名.sakura.ne.jp

別ウィンドウが立ち上がって(Enter your password for the SSh key)パスフレーズの入力を求められるのでパスフレーズ(ダイアログにはpasswordとあるが、これはpassphraseのこと)を入力する。

ログイン成功。

一度sshをログアウトして、再度ログインしようとすると、もうパスフレーズの入力は求められない。

ポート番号を変更する(rootでのログインも無効に)

デフォルトの22番ポートでの接続を変更する。
(10000~65535あたりが良いらしい)

$ sudo vim /etc/ssh/sshd_config

Port22の「22」部分を変更する。

Port xxxxx(前述の10000〜65535内で適当なものを設定)

rootでのログインを無効にする

PermitRootLoginをnoに変更。

vimを終了させてsshd_configの設定が間違っていないか、以下のコマンドで確認。
(問題がなければ何も出力されない)

$ sudo sshd -t

設定の変更を有効にするためにsshを再起動。

$ sudo /etc/init.d/ssh restart

別のターミナルウィンドウまたはタブを開いて、変更したポートでssh接続できるかどうか確認する。また、以前の22番ポートでは接続できないことを確認する。

*これで、これからは以下のようにポート番号指定のオプションをつけないとsshログインはできなくなった。

ssh ユーザ名@ホスト名.sakura.ne.jp -p 変更したsshポート番号

公開鍵認証でのみログインできるように設定変更する

設定ファイルsshd_configを編集し、sshログインはパスワード認証を無効にし、公開鍵認証においてのみログインできるようにする。

$ sudo vi /etc/ssh/sshd_config

#PasswordAuthentication yesの冒頭の#を削除し、末尾のyesをnoに変更。

公開鍵認証に使う公開鍵ファイルの場所を指定する。

#AuthorizedKeysFile %h/.ssh/authorized_keysの冒頭の#を削除。

設定ファイルsshd_configに間違った記述がされていないか再度確認。

$ sudo sshd -t

sshを再起動。

$ sudo service ssh restart

また別のターミナルを開いて、公開鍵認証でログインできるか確認。(ポート番号も指定しないといけない)

$ ssh ユーザ名@ホスト名.sakura.ne.jp -p ポート番号

つづけて、変更したポート番号をサービスに登録する。

$ sudo vi /etc/services

ssh 22/tcp
ssh 22/udp

の「22」の部分を、変更したポート番号に変更して保存。

sshdを再起動。

$ sudo service ssh restart

確認のため、今接続しているターミナルウィンドウはそのままに(sshログイン状態)、別のターミナルからsshでVPSサーバにログイン。

ファイアーウォールの設定

Ubuntuにデフォルトで入っているファイアウォールufwを使って不要なポートに対する外部からのアクセスを制限する。(sshポートのみ開いた状態にする)

現在のufwの状況を確認。

$ sudo ufw status
Status: inactive

デフォルトでは動作していない模様。

まず全てのポートへのアクセスを遮断するよう設定を変更する。(ufwを有効にしないとこれは反映されない)

$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

づづけて、sshポートのみ開通させるよう設定変更。

$ sudo ufw allow 変更したポート番号
Rules updated

ここでufwを有効にする。

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

ufwの状態を確認する。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
変更したポート番号                      ALLOW       Anywhere

万が一ufwの設定を間違えてsshログインできなくなっても、VNCコンソールからはログインできるらしく、パニクらなくても大丈夫だそう。

追記:これらの設定のあとにWebアクセスしようとしたらつながらなくなってあせったけど、なんのことはない、ufwでsshポートしか開けてないからですね。HTTPアクセスで使用される80番ポートを以下のコマンドで追加して、復活。

$ sudo ufw allow 80

この他、開通させる必要のあるポートは/etc/servicesを開いて調べ、該当のポートをufw allowに加えてあげればよいみたい。

ロケールの変更(ja_JP.UTF-8に)

システムのロケールをデフォルトのen_US.UTF-8からja_JP.UTF-8に変更する。

日本語ランゲージパックをインストール。

$ sudo apt-get install language-pack-ja manpages-ja

設定を変更

$ sudo update-locale LANG=ja_JP.UTF-8

一度ログアウトする。sshログインし直して設定が変更されているか確認する。

デフォルト

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

変更後

$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

超参考にさせていただいた記事は以下です。ありがとうございました。

Mac OS X から Unix へのリモートログイン方法
さくらのVPSを借りてUbuntuをインストールしてみた
さくらVPSにカスタムOSのUbuntu 10.04をインストール+セキュリティ設定などをした時のメモ

つづけて、Webサイト、ページの制作で毎回ターミナルで必要なデータをアップロードするのも面倒なことが多々あるので、GUIクライアントの「Cyberduck」でアクセスできるようにしておく。

さくらVPSにCyberduckのSFTPで接続する

◯SFTPを選んで
ニックネーム:適当に
サーバ:申込時に与えられたホスト名.sakura.ne.jp
ポート:デフォルトのままなら22(sshの)だけど、自分で設定を変えている場合はそれを指定
ユーザ名:Ubuntuのインストール時に発行したユーザーアカウント名
「公開鍵認証を使用する」にチェックを入れて、~/.ssh/id_rsaファイルを選択。
*注意:公開鍵のほう(.pub)ではなく、プライベートキーであることに注意。

Cyberduck1

これで接続しようとするとパスフレーズを入力するよう求められるので、パスワードの部分にパスフレーズ(鍵ペアをssh-keygenコマンドで生成したときの)を入力。ついでに「キーチェーンに追加する」にチェックを入れておけば、次からはこれを入力する必要はない。

Cybercuck2

これでユーザーのホームディレクトリにログインになるので、Webルートに繋ぎたければ「パス」のところを/var/wwwに。

ついでにターミナルからssh経由でSFTPコマンドで接続するやり方ものこしておく。

TerminalからSFTPコマンドで接続する

$ sftp -oPort=sshポート番号 ログインユーザ名@申込時に与えられたホスト名.sakura.ne.jp

*sshポート番号(/etc/servicesのsshの項目で変更した番号を)

鍵関係のことをしなくても繋がったのは、すでにsshでログイン済(鍵認証済)だからかな?

これでセキュリティ回りもなんとかできたので、次はDNSの設定とバーチャルホストの設定。これを自分でやれるようにして、ひとつのVPSサーバで複数サイトを運営できるようにする。

さくらVPSでのDNSの設定とバーチャルホストの設定

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿