さくらVPSの初期設定まとめ

さくらVPSに登録してから必要な初期設定のまとめ

コントロールパネルからVPS起動

メールでVPSコントロールパネルのURL, IPアドレス, パスワードが送られてくるので、VPSコントロールパネルのページを開く

仮想サーバ操作 」の「 起動 」ボタンを押して、ステータスが稼働中になるのを待つ。

サーバにログイン

コマンドラインからログイン。 最初はrootユーザでログインする

[LOCAL]$ ssh root@<IP>

yumアップデート

デフォルトでインストールされているパッケージをアップデート

[VPS]# yum update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * epel: ftp.riken.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
Setting up Update Process
No Packages marked for Update

既に最新の状態だった

日本語化

この作業は必須ではないが今回はやっておく

[VPS]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ORG
[VPS]# vi /etc/sysconfig/i18n
[VPS]# diff /etc/sysconfig/i18n /etc//sysconfig/i18n.ORG 
1c1
< LANG="ja_JP.UTF-8"
---
> LANG="C"

一旦ログアウトして再ログイン

[VPS]# date
2014年  2月 11日 火曜日 21:31:06 JST

Japanese化おk

ユーザ追加設定

ユーザ追加

wkodateというユーザを追加する

[VPS]# useradd wkodate

ユーザが追加されているか確認

[VPS]# cat /etc/passwd | grep wkodate
wkodate:x:500:500::/home/wkodate:/bin/bash

追加したユーザのパスワードを変更

[VPS]# passwd wkodate
ユーザー wkodate のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
グループの追加とユーザへの反映(やってない)

今回のサーバは個人で使う用なのでグループの追加はしないが、複数人で使用する場合などはグループを作っておけばsudoersなどをまとめて設定できるので便利

[VPS]# groupadd hoge

新規グループが作成されているか確認

[VPS]# cat /etc/group | grep hoge
hoge:x:501:

現在のユーザの所属グループは

[VPS]# id wkodate
uid=500(wkodate) gid=500(wkodate) 所属グループ=500(wkodate)

gid=500(wkodate)となっているので、ユーザのグループを501のhogeに変更する

[VPS]# usermod -g hoge wkodate
[VPS]# id wkodate
uid=500(wkodate) gid=501(hoge) 所属グループ=501(hoge)
sudo権限追加

ユーザをwheelグループに追加

[VPS]# usermod -G wheel wkodate
[VPS]# id wkodate
uid=500(wkodate) gid=500(wkodate) 所属グループ=500(wkodate),10(wheel)

wheelグループにroot権限を付与

[VPS]# visudo
104 ## Allows people in group wheel to run all commands
105 #%wheel  ALL=(ALL)       ALL

105行目のコメントアウトをとる

105 %wheel  ALL=(ALL)       ALL

一度ログアウトして作成したユーザでログインできるかを確認

[VPS]# exit
logout
[LOCAL]$ ssh wkodate@<IP>
SAKURA Internet [Virtual Private Server SERVICE]
[VPS]$ hostname
<hostname>
[VPS]$ whoami
wkodate

rootログイン拒否

rootでログイン出来ないように設定を変更

[VPS]$ sudo vi /etc/ssh/sshd_config
42 #PermitRootLogin yes

42行目のコメントアウトを取り除き、noに変更

42 PermitRootLogin no

restartで設定を反映

[VPS]$ sudo /etc/init.d/sshd restart

sshのポート番号を変更

デフォルトのポート番号が22となっているので、別の番号に変更する

/etc/ssh/sshd_configの13行目の

[VPS]$ sudo vi /etc/ssh/sshd_config
13 #Port 22

コメントアウトを外してwell-knownポート以外の1024以降の番号に変更

13 Port 10022

sshdを再起動

sudo /etc/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

一旦ログアウトして再度ログイン

[VPS]$ exit
logout
[LOCAL]$ ssh wkodate@<IP>
ssh: connect to host <IP> port 22: Connection refused
[LOCAL]$ ssh wkodate@<IP> -p 10022
[VPS]$ hostname
<host>

ポートを指定しないとログイン出来ないようになっているのが確認できた 今後ssh接続を行う場合はログイン以外でもすべてポート指定が必須となる

鍵認証

サーバのホームディレクトリ以下に.sshディレクトリ(権限は700)を作成しておく

[VPS]$ ls -la ~/ | grep .ssh
drwx------  2 wkodate wkodate 4096  2月 11 22:18 2014 .ssh

ローカル環境で秘密鍵、公開鍵のペアを作成 秘密鍵は名前の通り他の人知られてはいけない秘密の鍵なので、ローカルで作成してローカルに保存しておく

[LOCAL]$ ssh-keygen -t rsa -v

.sshディレクトリ以下にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されているので、公開鍵をサーバ側の.sshディレクトリ以下に転送する

公開鍵のパーミッション変更

[LOCAL]$ chmod 600 ~/.ssh/id_rsa.pub

authorized_keysの名前で公開鍵を転送

[LOCAL]$ scp -p 10022 ~/.ssh/id_rsa.pub wkodate@<IP>:~/.ssh/authorized_keys

秘密鍵を指定してサーバへログイン

[LOCAL]$ ssh -i ~/.ssh/id_rsa wkodate@<IP> -p 10002
[VPS] $ ls -l ~/.ssh/
合計 4
-rw------- 1 wkodate wkodate 412  2月 11 22:57 2014 authorized_keys

正常にログインができ、authorized_keysも転送されていることが確認できた。

今の状態では、パスワード認証と鍵認証の両方が適用されているので、sshの認証方式を鍵認証のみに設定する。sshd_configの64行目

[VPS]$ sudo vi /etc/ssh/sshd_config
64 #PasswordAuthentication yes

コメントアウトを取り除いて、パスワード認証をnoに変更する

64 PasswordAuthentication no

sshdの再起動

[VPS]$ sudo /etc/init.d/sshd restart

これで公開鍵認証のみログイン可能となった

Firewallの設定

パケットフィルタリングルールの設定を行う

デフォルトではiptablesのファイルがないのでファイルを作成する

[VPS]$ cat /etc/sysconfig/iptables
*filter
:INPUT      DROP    [0:0]
:FORWARD    DROP    [0:0]
:OUTPUT     ACCEPT  [0:0]
:SERVICES   -   [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 10022 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
COMMIT

:INPUT, :FORWARD, :OUTPUT, :SERVICES はチェインと呼ばれ、それぞれがパケットの入出力について意味している。

それ以下の-Aから始まる記述は、行末に書かれているチェインに対してどういったルールを追加するかの記述となっている

iptablesの書き方については以下サイトが参考になった http://itref.fc2web.com/unix/linux/iptables.html http://murayama.hatenablog.com/entry/20100206/1265444193

サーバが再起動した時に消えないように保存

[VPS]$ sudo /etc/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptable[  OK  ]中:

iptablesの設定を反映

[VPS]$ sudo /etc/rc.d/init.d/iptables start
iptables: ファイアウォールルールを適用中:                  [  OK  ]

iptablesで設定したポートを確認

[VPS]$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request limit: avg 1/sec burst 4 
ACCEPT     tcp  --  anywhere             anywhere            state RELATED,ESTABLISHED 
SERVICES   tcp  --  anywhere             anywhere            state NEW 
ACCEPT     udp  --  anywhere             anywhere            udp spt:domain 
ACCEPT     udp  --  anywhere             anywhere            udp spt:ntp dpt:ntp 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain SERVICES (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:10022 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 

iptablesの設定についてはもっと勉強しなければならない

基本設定完了!

参考

ドットインストール さくらのVPS入門