さくらVPS 2G/HDD プラン - CentOS6 初期設定
2012.7頃の情報を基に作成しています。
リンク先の資料等、当サイトの記事と異なる場合があります。最新の内容を確認してください。
VPS 起動
契約した時点では、VPSは起動していない状態なので、VPSコントロールパネルから起動する必要があります。
契約処理後、メールでVPSコントロールパネルとrootアカウントの情報が送られてきますので、少なくともVPSコントロールパネルのパスワードは、VPSを起動する前に変更しておくべきでしょう。
契約時期によって、一番最初の起動に時間が掛かる可能性があります。
これは、サービスとしてyum-updateonbootが有効になっているからなのですが、これによって(リポジトリがダウンしていない限りは)最初の起動時にOS(カーネル及び初期インストール済みのパッケージ群)が最新の状態へと更新されます。
個人的には、こういう設定になっていることには好感が持てますね。
ちなみに(CentOS-Base)リポジトリは、さくらのプライベートリポジトリが用意/設定されています。
VPSが起動したら、コンソール(sshでも可)からrootでログインします。
rootアカウントをdisableするまでですが、気になるなら、rootアカウントのパスワードを変えておきましょう。
SELinux 無効化(確認)
さくらVPSでは標準で無効化されていましたので、設定を変更する必要はありません。
有効になっていると、以降の設定や接続確認等に影響を及ぼす可能性があるので、確認だけはしておきましょう。
$ grep -v ^# /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targeted
etckeeper 導入
http://joeyh.name/code/etckeeper/
設定を開始する前に、まずは etckeeper を導入します。
etckeeper は /etc 配下のファイルを VCS で自動管理するためのツールです。
他の管理方法を取る場合、或いは管理しない場合は導入不要です。
- インストール
初期設定より epel(Extra Packages for Enterprise Linux) が利用できるようになっているので、追加設定することなく yum でインストール可能です。
# yum -y --enablerepo=epel install etckeeper
デフォルトでは Git を使用するようになっています。
MercurialやBazaar、Darcs といった VCS も利用可能なので、必要であれば慣れたものに変更するといいでしょう。
$ grep ^VCS /etc/etckeeper/etckeeper.conf VCS="git"
- 初期化
# etckeeper init Initialized empty Git repository in /etc/.git/
- 最初の状態をコミット
''間はコメントなので、必要に応じて適切な記述にしましょう。
# etckeeper commit 'init'
作業ユーザ作成/設定
ユーザ作成に関するポリシーが決まっているなら、ここで設定しておきます。
- 関連するファイル/ディレクトリ
/etc/login.defs
/etc/default/useradd
/etc/skel/
以下の例示では、アカウント作成時 /var/spool/mail/ 下にスプール用の 0バイトファイルが作成されるのを抑止するための設定変更を施しています。
- useradd コマンドのデフォルト値を確認
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
- UID/GIDの最小値
useraddによるデフォルトのGIDは100(users)なのですが、login.defsによって最小値が500に制限されており、明示的に指定しない場合はUIDと同じGIDでgroupが追加されます。
$ grep ID_MIN /etc/login.defs UID_MIN 500 GID_MIN 500
- 修正前後の diff
--- a/default/useradd
+++ b/default/useradd
@@ -5,5 +5,5 @@
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
-CREATE_MAIL_SPOOL=yes
+CREATE_MAIL_SPOOL=no
- root権限へのスイッチ手段/設定
大きく二種類。世界樹風に言うと、あなたは、どちらか一つを選択してもいいし、両方設定しても、しなくてもいい。
a. PAMを利用する
wheelグループに属しているアカウント以外、suが使えなくなります。また、su使用時パスワード認証が不要になります。
--- a/pam.d/su
+++ b/pam.d/su
@@ -1,9 +1,9 @@
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
-#auth sufficient pam_wheel.so trust use_uid
+auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
-#auth required pam_wheel.so use_uid
+auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
b. sudoを利用する
wheelグループに属しているアカウントがパスワード認証無しでrootにスイッチ出来るようになります。
--- a/sudoers
+++ b/sudoers
@@ -105,7 +105,7 @@ root ALL=(ALL) ALL
# %wheel ALL=(ALL) ALL
## Same thing without a password
-# %wheel ALL=(ALL) NOPASSWD: ALL
+%wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
- アカウント作成
例示として「yourname」というアカウントを作成しています。
rootにスイッチ出来るよう、wheelグループに属するよう設定します。
# useradd -G wheel yourname
上の例では、新たに「yourname」というgroupが追加され、デフォルトのグループに設定されます。
アカウント毎に追加させたくない場合は、予めgroupを作成しておいたもの(或いはusers等の既設group)を「-g」オプションで指定します。
- パスワード設定
# passwd yourname
- rootアカウント/パスワードロック
ここまでの設定が正しく行われていれば、rootアカウントのパスワードをロックしても作業アカウントからはrootになれます。
シングルユーザモード等で必要にならないのであれば、パスワードロックしてしまうという運用も考慮しましょう。
# passwd -l root ユーザー root 用のパスワードをロック。 passwd: 成功
万が一に備え、作業を実施するターミナルをroot権限のままにしておき、新たに作業アカウントでログインしてrootにスイッチ出来る事を確認しましょう。
sshd設定
http://wiki.centos.org/HowTos/Network/SecuringSSH
基本方針としては、使用しない機能はオフにしておきます。
ポートは変えなければならない、というよりは、変えるだけで避けられるリスクが多いので、変えた方が良いでしょう。
アクセスリストやファイアウォール等(サーバ自身と接続元の両方)に影響するので、変える場合はその辺りも考慮する必要があります。
また、以下の設定は例示として「2345」としていますが、これはあくまで設定例なので、使用を避け(他の任意の値にし)ましょう。
Port 2345 PermitRootLogin no GSSAPIAuthentication no UsePAM no X11Forwarding no UseDNS no
# service sshd restart
iptables設定(暫定)
http://wiki.centos.org/HowTos/Network/IPTables
コンソールで作業している場合は必須ではありませんが、sshでログインする場合は、ひとまずsshのみ許可するルールを設定しておきます。
sshdのポートを変更していない場合は、(確か)初期設定のままでも問題無かったように思います。
必要に応じてログを取得する等しても良いでしょう。(本番リスト作成のヒントになります。)
iptablesへの設定はシェルスクリプト化して管理しています。
# mkdir /etc/ssh/script # cd /etc/ssh/script # touch iptables.init # chmod 0600 iptables.init # cat >iptables.init <<EOD iptables -P INPUT ACCEPT iptables -F iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 2345 -j ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT EOD # sh iptables.init
先のssh設定と共に、変更後にログイン可能なことを確認し、設定を保存します。
# service iptables save
IPv6無効化
iptablesでログを取得すると直ぐに気付くのですが、さくらVPSのネットワーク(上位L2スイッチ)においては、ブロードキャスト/マルチキャストストームの制御が行われていないよう見受けられます。
このような環境では、RA Guardが設定されていることも期待出来無さそうなので、少なくともIPv6自動構成は行わないようにしておく必要があります。
さくらVPSでは(2012.8現在)IPv6ネイティブ接続は利用出来無いので、nazx.jpでは無効化しています。
IPv6 自動構成の問題点/RA Guardについては、以下の「8. ステートレスアドレス自動設定のセキュリティ問題」が参考になります。
http://www.ipa.go.jp/security/fy21/reports/tech1-tg/b_04.html
--- /dev/null
+++ b/modprobe.d/disable-ipv6.conf
@@ -0,0 +1,2 @@
+options ipv6 disable=1
+install ipv6 /bin/true
# chkconfig ip6tables off
設定可能な項目やデフォルト値等は、以下のファイルで確認出来ます。
/usr/share/doc/initscripts-9.03.31/sysconfig.txt
ここでは、IPv6無効化のついでにIPv4リンクローカル用ネットワークを無効にしています。
# cd /etc/sysconfig/ # cat >network <<EOD NETWORKING=yes HOSTNAME=nazx.jp NETWORKING_IPV6=no IPV6INIT=no IPV6_AUTOCONF=no NOZEROCONF=yes EOD
ここでネットワークの再起動をしても良いですが、最後に起動サービスの確認を行い、サーバ自身を再起動しています。
起動サービス確認
さくらVPSでは、かなり良く精査/標準設定されているよう見受けられます。ほぼ無駄がありません。
殆どの場合、初期状態のままで問題無いでしょう。
# chkconfig --list | grep 3:on | sort
サービス |
nazx.jp |
簡単な説明 |
acpid |
on |
電源管理/イベント用のサービス。VPSの場合はコンソールからの電源off/on等に対応(シャットダウンさせる等)させるために必要です。 |
atd |
off |
バッチジョブのスケジューラ。指定時間後にコマンドを実行させる等の管理/制御が可能。cronで足りるようなら不要なサービスです。 |
crond |
on |
|予定されたコマンドを実行するデーモン。個人的に使用しなくても、ログ管理等システムで利用されているので安易な停止はしないこと。 |
iptables |
on |
IPv4パケットフィルタ。ルータとしての必要な機能も持ちます。最低限のセキュリティ対策として設定しておきましょう。 |
ip6tables |
off |
IPv6パケットフィルタ。使用するならばiptablesと同様に扱いましょう。IPv6ネットワークを無効化した場合は不要です。 |
irqbalance |
on |
複数CPUへの割り込みを制御するサービス。複数CPU環境下では、一般的には使用すべきサービスです。 |
network |
on |
ネットワークに関する設定/制御を行います。ネットワークを使用する場合は必要です。 |
ntpd |
on |
時刻合わせサービス。(設定次第ですが)比較的小さな時刻の誤差を、サービスに影響が出ないよう調整して合わせます。一般的には使用すべきサービスです。 |
ntpdate |
on |
起動時に、大きな時刻の差をも一気に合わせるためntpdateを実行します。サーバ上で使用するサービスの内容とntpdの設定でon/offを判断しましょう。 |
postfix |
on |
メール配送サービス。さくらVPSの場合、初期設定では外部からの配送を中継したりせず、比較的安全な設定になっています。on/offは必要に応じて。 |
rsyslog |
on |
システム/カーネルログ出力サービス。一般的には使用すべきサービスです。 |
sshd |
on |
リモートからのシェル環境へのログインサービス。設定次第ではポート転送等もサービス可能です。on/offは必要に応じて。 |
sysstat |
on |
sarコマンドで出力可能な、サーバ資源に関するデータの収集を行うための設定を行います。on/offは必要に応じて。 |
yum-updateonboot |
off |
起動時にyum updateを行います。CentOS 6ではyum-cronも復活したので、そちらへの置き換え等を検討すると良いでしょう。 |
以上で、取り急ぎ行っておくべき初期設定の完了です。サーバを再起動して正常性を確認します。