「さくらのクラウド」でサーバ作成してSSHなどを設定した

 会社でお付き合いのあるSAKURA Internetさんから『「さくらのクラウド」無料券』なる物を頂ました.さくらのクラウドを2万円分使用できるクーポン券です(使用開始から一年間の期限付き).
 さくらのクラウドは最小構成でCPU1コア/メモリ1GB/ディスク20GB(SSD)が月額1,900円です.
 個人(自分)が使うとすればお試し環境構築といった用途になるかなぁ.上記最小構成なら1時間9円,1日95円です.個人使用で常時運用するなら同じSAKURA InternetでもVPSの方が使いやすいかな.

使い勝手は・・・

 他のクラウドサービスを使ったことがないので何とも言えません.
 一番安いプランでCentOS 6.4 64bitでサーバ作成してみましたが3分もかからずサーバ作成完了.グローバルIPが割り当てられておりrootでsshでログイン可能な状態で起動します.
 サーバ削除も試してみましが,こちらはすぐに完了します.

初期状態

 サーバ作成直後はディスクとメモリはこんな感じ.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda3              18G  1.4G   16G   9% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/vda1              98M   28M   65M  31% /boot
# free -m
             total       used       free     shared    buffers     cached
Mem:           996         99        896          0          7         34
-/+ buffers/cache:         57        938
Swap:         2048          0       2048

SSH関連の設定を行なう

 具体的な用途は無いですが,とりあえずssh関連の設定を行なっておきます.
 設定する項目は以下です.

  • ssh認証変更
    • rootユーザログイン禁止
    • 公開鍵認証(秘密鍵パスワードなし)
    • パスワード認証禁止
  • sshdポート変更
  • iptablesでsshのみ接続許可

ユーザ追加してsudo設定

 まずはユーザ追加,パスワード設定,sudo設定.

# useradd ukasiad
# passwd ukasiad
# visudo
...省略...
ukasiad ALL=(ALL) ALL        # 追加
...省略...

鍵ペアを用意(クライアント側作業)

 自分はクライアントとしてWindows7cygwinを使用しました.すでに鍵がある場合は飛ばしてOK.
 ホームディレクトリに移動,~/.sshフォルダが無ければ作成。

cygwin$ cd ~
cygwin$ mkdir .ssh
cygwin$ chmod 700 .ssh

 ssh-keygenでsakura1_id_rsaという名前で鍵ペアを作成します.途中の "Enter passphrase" で何も入力しません.

cygwin$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): sakura1_id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in sakura1_id_rsa.
Your public key has been saved in sakura1_id_rsa.pub.
The key fingerprint is:
... 省略 ...

 鍵ペア生成確認,秘密鍵の権限を変更,秘密鍵を.sshへ移動.

cygwin$ ls
sakura1_id_rsa  sakura1_id_rsa.pub
cygwin$ chmod 600 sakura1_id_rsa
cygwin$ mv sakura1_id_rsa .ssh/

.ssh/configに以下を追記.

host sakura1
    user ukasiad
    hostname ***.***.***.***
    port 22
    identityfile ~/.ssh/sakura_id_rsa

公開鍵(sakura1_id_rsa.pub)をサーバへコピー.

cygwin$ scp sakura1_id_rsa.pub ukasiad@***.***.***.***:~/

メモ
秘密鍵から公開鍵を作るコマンド
ssh-keygen -y -f 秘密鍵ファイル

サーバ側作業

 ホームディレクトリ権限変更(忘れがち),~/.ssh フォルダが無ければ作成.

$ chmod 755 /home/ukasiad
$ mkdir .ssh
$ chmod 700 .ssh

 公開鍵を鍵ファイルに追加.

$ cat sakura1_id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

メモ
公開鍵(sakura1_id_rsa.pub)は削除してもかまわない。秘密鍵から再作成可能。

sshd設定

 sshdで公開鍵認証を有効にして再起動.

$ sudo vi /etc/ssh/sshd_config
...省略...
PubkeyAuthentication yes
...省略...
$ sudo service sshd restart

 クライアントからssh sakura1でパスワードなしでログイン出来れば成功.

sshdポート変更など

 sshdのポートを*****に変更(クライアント側~/.ssh/configのポート番号変更も必要),rootログイン禁止,パスワードログイン禁止,チャレンジレスポンス認証禁止.fail2banのsshdポートの変更.

$ sudo vi /etc/ssh/sshd_config
...省略...
Port *****
...
PermitRootLogin no
...
PasswordAuthentication no
...
ChallengeResponseAuthentication no
...省略...

$ sudo vi /etc/fail2ban/jail.conf
...省略...
[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=*****, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5
...省略...
$ sudo service sshd restart
$ sudo service fail2ban restart
$ sudo service iptables restart

メモ
fail2banはデフォルトでパスワード認証失敗しか対応していない?

iptables設定

 外からはssh接続しか許可しない.

$ sudo vi /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport ***** -j ACCEPT
COMMIT
$ sudo iptables -L

メモ
設定を間違ってssh接続が出来なくなった場合,さくらクラウドコントロールパネルのコンソールで接続して修正.

メモ
パケットフィルタなる物がコントロールパネルで用意されているが使い勝手はどうなんだろう.

その他

 yumパッケージを更新.200個ほどの更新あり.

$ sudo yum -y update

 とりあえずサーバ再起動.

$ sudo shutdown -r now