さくら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の設定についてはもっと勉強しなければならない
基本設定完了!