ITカメラマン忘備録

写真撮るのが趣味なエンジニア見習いの忘備録。

さくらのVPS借りた時のはじめの設定

無料お試しで2週間使えるとのことだったのでさわさわした時の設定。
sshは公開鍵で認証し、セキュリティは最低限のみ設定。

環境

[VPS]

  • さくらのVPS(v3) 2G
  • CentOS release 6.6 (Final)

[クライアント]

1. rootのパスワード変更から作業ユーザー作成まで

rootのパスワード変更

[root@host ~]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

作業用ユーザー作成

[root@host ~]# useradd hoge
[root@host ~]# passwd hoge
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2. ユーザーhogeをグループに追加し、グループがsudoとsuを実行できるようにする

ユーザーhogeをwheelに追加し、wheelグループがsudoコマンドを実行できるようにする

[root@host ~]# usermod -G wheel hoge
[root@host ~]# visudo
--
# %wheel  ALL=(ALL)       NOPASSWD: ALL
↑先頭の#を削除

suコマンドをwheel内のユーザーだけが実行できるようにする

[root@host ~]# vi /etc/pam.d/su
--
#auth           required        pam_wheel.so use_uid
↑先頭の#を削除

参考
なぜ sudo する権限のあるグループが「 wheel 」という名前なのか
suについて(wiki)

3. ssh接続するための作業ディレクトリ作成

rootからログアウト

[root@host ~]# exit
logout
CentOS release 6.6 (Final)
Kernel 2.6.32-504.1.3.el6.x86_64 on an x86_64

hogeでログインしてルートに入れるか確認した後にhogessh用のディレクトリ作成

host login:hoge
Password:
[hoge@host ~]$ sudo su
[root@host hoge]# exit
[hoge@host ~]$
[hoge@host ~]$ mkdir /home/hoge/.ssh
[hoge@host ~]$ chmod 700 /home/hoge/.ssh
[hoge@host ~]$ ls -al /home/hoge
drwx------  2 hoge hoge 4096 Nov 15 22:55 .ssh

chmod 700
所有者はディレクトリに対してあらゆる操作が可能。所有者以外はディレクトリに対する操作は一切不可(ディレクトリ内を見ることはできない)

4. macにて公開鍵を作成

鍵を作成

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): /Users/hoge/.ssh/sakura_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

作成した鍵の確認

$ ls -al /Users/hoge/.ssh
-rw-------   1 hoge  staff  1766 11 16 01:47 sakura_rsa
-rw-r--r--   1 hoge  staff   420 11 16 01:47 sakura_rsa.pub

公開鍵をmacからscpでvpsに配置

$ scp ~/.ssh/sakura_rsa.pub hoge@[IP Address]:/home/hoge/.ssh

5. vpsにて公開鍵の設定

scpで送信された公開鍵を設定

[hoge@host ~]$ cd /home/hoge/.ssh
[hoge@host ~]$ cat id_rsa.pub >> authorized_keys 
[hoge@host ~]$ chmod 600 authorized_keys

sshd_configファイルの設定

[hoge@host ~]$ sudo vi /etc/ssh/sshd_config
--
Port 10022
↑10022に変更
--
PermitRootLogin no
↑rootでsshのログイン禁止
--
PasswordAuthentication no
↑パスワード認証を無効
--
PubkeyAuthentication yes
↑鍵認証を有効
--

sshを再起動

[hoge@host ~]$ sudo /etc/init.d/sshd restart

6. macにて./ssh/configファイルの設定

$ vi /Users/hoge/.ssh/config
--
Host sakura
      HostName      IP Address
      Port          10022
      IdentityFile  ~/.ssh/sakura_rsa
      User          hoge
--

7. macからssh接続してみる

$ ssh sakura

8. iptablesの設定

設定を追加

[hoge@host ~]$ sudo su
*データを持たないパケットの接続を破棄
[root@host hoge]# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

*SYNflood攻撃と思われる接続を破棄
[root@host hoge]# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

*ステルススキャンと思われる接続を破棄
[root@host hoge]# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

*localhostからの通信を許可
[root@host hoge]# iptables -A INPUT -i lo -j ACCEPT
  
*localhostからのpingを許可
[root@host hoge]# iptables -A INPUT -p icmp -j ACCEPT

*利用するポート番号を許可
[root@host hoge]# iptables -A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT

*確立済みの通信を許可
[root@host hoge]# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

*許可した通信以外のサーバに受信するパケットを拒否
[root@host hoge]# iptables -P INPUT DROP

*サーバから送信するパケットを許可
[root@host hoge]# iptables -P OUTPUT ACCEPT

*iptablesの設定を設定ファイルに保存
[root@host hoge]# service iptables save

iptablesの設定を確認

[root@host hoge]# iptables -L

iptablesの再起動

[root@host hoge]# /etc/init.d/iptables restart

おまけ

証明書認証を利用したい

  • 証明書認証はOpenSSH5.4からなので最新バージョンにあげる
    ※CentOS6でのOpenSSHのデフォルトバージョンは5.3
    • ssh -vsshのバージョン確認
  • 最新は本家で確認
  • 証明書認証をやろうとしてOpenSSHを6.7にあげようとしたがビルドに失敗したので調査せねば・・・

公開鍵認証について

  • 公開鍵からペアの秘密鍵を探すのは困難だが、今後マシンの性能が上がってくると安全とは言えなくなる
  • 秘密鍵が第三者に漏れてしまった場合、パスフレーズを解読される可能性がある
    • パスフレーズ秘密鍵に設定されているので制限なく秘密鍵に対して攻撃される恐れがある
    • 攻撃はオフラインで行われるため、こちらが攻撃を受けていることを知る術がない
  • OpenSSH-6.5から bcrypt KDF という鍵のフォーマットが追加され、鍵を生成するための計算に時間がかかるようになった