さくらの VPS を借りたらまずやっておきたい15のこと (CentOS 6.2編)

さくらの VPS を借りたら、まずやっておきたい CentOS 6.2 の初期設定の手順です。

これが抜けてるぞ、とか、これは不要なんじゃ?というものがありましたら、コメントください。

サーバの起動

ブラウザから「VPS コントロールパネル」にログインし「起動」ボタンを押します。

(参考) 初期状態のメモ

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/vda3              97G  1.3G   91G   2% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/vda1             251M   32M  207M  14% /boot

# cat /etc/redhat-release 
CentOS release 6.2 (Final)

# uname -a
Linux www4046ue.sakura.ne.jp 2.6.32-220.7.1.el6.x86_64 #1 SMP Wed Mar 7 00:52:02 GMT 2012 x86_64 x86_64 x86_64 GNU/Linux

# free -m
             total       used       free     shared    buffers     cached
Mem:           996         90        906          0          6         28
-/+ buffers/cache:         54        942
Swap:         2047          0       2047

# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
219.xx.xxx.0    0.0.0.0         255.255.254.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         219.xx.xxx.1    0.0.0.0         UG        0 0          0 eth0

# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 44
model name	: Intel(R) Xeon(R) CPU           E5645
stepping	: 1
cpu MHz		: 2400.084
cache size	: 4096 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor
bogomips	: 4800.16
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 44
model name	: Intel(R) Xeon(R) CPU           E5645
stepping	: 1
cpu MHz		: 2400.084
cache size	: 4096 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor
bogomips	: 4800.16
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

OS 基本設定作業

root パスワードの変更

ホスト名 sakura で VPS サーバにアクセスできるように、手許の端末の ssh の設定ファイルに設定を追加します。

host sakura
	hostname 219.xxx.xxx.xxx
	port 22
	compression yes

手許の端末から root でログインします。

$ ssh -l root sakura

パスワードを変更します。

# passwd
パッケージの更新

インストールされているパッケージを更新します。

# yum check-update
# yum -y update

現状のパッケージの一覧を記録しておきます。

# rpm -qa | sort > rpm-qa.20120405-1
etckeeperのインストール

バージョン管理システムと etckeeper をインストールします。

# yum -y install git mercurial etckeeper

etckeeper で使用するバージョン管理システムを git から hg に変更します。

# vi /etc/etckeeper/etckeeper.conf
--- /etc/etckeeper/etckeeper.conf.orig	2012-03-14 04:03:11.000000000 +0900
+++ /etc/etckeeper/etckeeper.conf	2012-04-05 12:53:25.887393308 +0900
@@ -1,6 +1,6 @@
 # The VCS to use.
-#VCS="hg"
-VCS="git"
+VCS="hg"
+#VCS="git"
 #VCS="bzr"
 #VCS="darcs"
 

リポジトリを初期化しコミットします。

# etckeeper init
# etckeeper commit "First Commit"
作業用ユーザの追加

ユーザを追加し、パスワードを設定し、wheel グループに追加します。

# useradd foo
# passwd foo
# usermod -G wheel foo
sudo の設定

wheel グループのユーザはすべてのコマンドを実行できるように変更します。

# visudo

%wheel のコメントを外します。

# %wheel        ALL=(ALL)       ALL
↓
%wheel        ALL=(ALL)       ALL

手許の端末から作業用ユーザでログインし、sudo できることを確認します。

作業ユーザのSSH公開鍵の登録

手許の端末から自分の公開鍵を登録します。

$ ssh-copy-id -i ~/.ssh/id_dsa.pub foo@sakura

作業用ユーザで公開鍵認証でログインできることを確認します。

sshd の設定

sshd のポート番号の変更と root によるログイン、パスワード認証を禁止します。

$ sudo vi /etc/ssh/sshd_config
--- a/ssh/sshd_config	Thu Apr 05 12:54:12 2012 +0900
+++ b/ssh/sshd_config	Thu Apr 05 13:01:35 2012 +0900
@@ -10,7 +10,7 @@
 # possible, but leave them commented.  Uncommented options change a
 # default value.
 
-#Port 22
+Port 2222
 #AddressFamily any
 #ListenAddress 0.0.0.0
 #ListenAddress ::
@@ -39,7 +39,7 @@
 # Authentication:
 
 #LoginGraceTime 2m
-#PermitRootLogin yes
+PermitRootLogin no
 #StrictModes yes
 #MaxAuthTries 6
 #MaxSessions 10
@@ -63,7 +63,7 @@
 # To disable tunneled clear text passwords, change to no here!
 #PasswordAuthentication yes
 #PermitEmptyPasswords no
-PasswordAuthentication yes
+PasswordAuthentication no
 
 # Change to no to disable s/key passwords
 #ChallengeResponseAuthentication yes

sshdを再起動します。

$ sudo service sshd restart

手許の端末からポート番号を指定してログインできることを確認します。

$ ssh -p 2222 sakura
iptables の設定

シェルスクリプトに設定を記載します。

$ vi iptables.sh
#!/bin/sh

iptables -P INPUT ACCEPT
iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j LOG --log-level info --log-prefix "[iptables] "
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -L -v

設定を有効にし、保存します。

$ sudo sh iptables.sh
$ sudo service iptables save

手許の端末からログインできることを確認します。

不要なデーモンの停止
$ chkconfig --list
abrt-ccpp      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
abrt-oops      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
abrtd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
auditd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
cpuspeed       	0:off	1:on	2:off	3:off	4:off	5:off	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
haldaemon      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
irqbalance     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
kdump          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
lvm2-monitor   	0:off	1:on	2:off	3:off	4:off	5:off	6:off
mdmonitor      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
messagebus     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
netfs          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpdate        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
psacct         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
quota_nld      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rdisc          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
restorecond    	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rngd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
saslauthd      	0:off	1:off	2:off	3:off	4:off	5:off	6:off
smartd         	0:off	1:off	2:off	3:off	4:off	5:off	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sysstat        	0:off	1:on	2:on	3:on	4:on	5:on	6:off
udev-post      	0:off	1:on	2:off	3:off	4:off	5:off	6:off

on なのは、以下の通りです。

acpid          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off
cpuspeed       	0:off	1:on	2:off	3:off	4:off	5:off	6:off
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ip6tables      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
irqbalance     	0:off	1:off	2:off	3:on	4:on	5:on	6:off
lvm2-monitor   	0:off	1:on	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
ntpdate        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
postfix        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
rsyslog        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sshd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off
sysstat        	0:off	1:on	2:on	3:on	4:on	5:on	6:off
udev-post      	0:off	1:on	2:off	3:off	4:off	5:off	6:off

停止してもよいサービスはどれでしょう?あまりなさそうですね。@TODO

パッケージ自動更新の設定

yum-cron でパッケージを自動更新するようにします。

$ sudo yum install -y yum-cron
$ sudo service yum-cron start
$ sudo chkconfig yum-cron on
root 宛メールの転送

root 宛のメールを自分に転送するに設定します。

$ sudo vi /etc/aliases
--- a/aliases	Thu Apr 05 13:07:27 2012 +0900
+++ b/aliases	Thu Apr 05 13:08:09 2012 +0900
@@ -93,4 +93,4 @@
 decode:		root
 
 # Person who should get root's mail
-#root:		marc
+root:		foo@example.jp

設定変更を反映させます。

$ sudo newaliases

テストメールを送信し確認します。

$ echo "test mail" | mail root

試用期間中は外部へのメール送信はできませんので、キューにたまります。

kernel panic 時の自動再起動

kernel panic になった場合、10秒後に自動再起動するように設定します。

$ sudo vi /etc/sysctl.conf
--- a/sysctl.conf	Thu Apr 05 13:07:27 2012 +0900
+++ b/sysctl.conf	Thu Apr 05 13:09:40 2012 +0900
@@ -38,3 +38,6 @@
 
 # Controls the maximum number of shared memory segments, in pages
 kernel.shmall = 4294967296
+
+# When kernel panic's, reboot after 10 second delay
+kernel.panic = 10

設定を反映させます。

$ sudo sysctl -p

確認します。

$ cat /proc/sys/kernel/panic
ログローテートの設定

ログの保存期間を12週間に増やします。

$ sudo vi /etc/logrotate.conf
--- a/logrotate.conf	Thu Apr 05 13:07:27 2012 +0900
+++ b/logrotate.conf	Thu Apr 05 13:10:15 2012 +0900
@@ -3,7 +3,7 @@
 weekly
 
 # keep 4 weeks worth of backlogs
-rotate 4
+rotate 12
 
 # create new (empty) log files after rotating old ones
 create
パッケージの追加

必要なパッケージを追加しておきます。

$ sudo yum -y install logwatch screen
再起動

設定が完了したら一度再起動しておきましょう。

$ sudo shutdown -r now