FrontPage

2011/09/18からのアクセス回数 3597

CMS(コンテンツマネジメントシステム)の各記事にふさわしい広告を表示する実験と Sageの公開サーバを構築するために、さくらのVPSを使うことにしました。

ここでは、VPSの申し込み直後から最低限必要な設定

  • 管理ユーザアカウントの作成
  • SSHの設定
  • IPTables(ファイアーウォール)の設定
  • Apacheの設定
  • MySQLの設定
  • PHPの設定 方法を紹介します。

さくらコントロールパネル

さくらのVPSを申し込むと、「さくらコントロールパネル」のURLとIPアドレス、パスワードが送られてきます。

VPSの初期画面は以下のようなものです。

さくらVPSコントロールパネル.png

何の準備もなく、いきなりサーバを起動するのは危険です。 必要最低限のセキュリティ対策を整えてからはじめましょう。

テンプレートの必要性

少し調べて見ましたが、さくらのサイトには、VPSサーバ構築の情報は提供されていませんでした。 *1

ユーザが何の対処もしないでVPSサーバを起動した場合、セキュリティーの甘いサーバが多数現れることが予想されるため、サーバテンプレートを提供する等の策を講じたが良いと思われます。

Googleで検索したところ、色々な方がさくらのVPSの構築方法を紹介されていますが、 ここでは、独断と偏見で参考になるサイトを紹介し、私の取った設定方法について説明します。

参考にしたサイト、

です。

管理者アカウントの作成

「さくらコントロールパネル」「起動」ボタンを押して、サーバを起動します。

続いて、「リモートコンソール」ボタンを押して、リモートコンソールを表示します。

改行キーを押すとloginプロンプトが表示されますので、rootとさくらから送られたパスワードを入力します。

remote_console.png

rootパスワードの変更

最初にrootのパスワードを自分の覚えやすいものに変更します。

# passwd 

管理者アカウントの作成

インターネットと直接つながったサーバなので、

  • rootでのログインは、リモートコンソールに限定する
  • 管理者は、suコマンドを使用しようしないで、すべてsudoコマンドを使用する

ことを原則します。

まず、管理者用のアカウントを作成します。

# useradd 管理者アカウント
# passwd 管理者アカウント

suコマンドの使用をwheelグループに限定します。

# cp /etc/pam.d/su /etc/pam.d/su.org
# vi /etc/pam.d/su
以下の行のコメント(#)を外す
# auth required pam_wheel.so use_uid

これで、wheelグループ以外のユーザがsuコマンドを使用すると

$ su
su: incorrect password

のエラーが表示され、suコマンドが使えなくなります。

どうしても管理者アカウントにsuコマンドの使用を許したい場合には、

# usermod -G wheel 管理者アカウント

としてください。

sudoの設定

管理者にsudoコマンドの使用を許可するために以下の行を追加します。

# visudo
管理者アカウント    ALL=(ALL)       ALL	

これで、管理者アカウントの設定は完了です。rootアカウントをログアウトし、管理者アカウントでログインします。

SSHの設定

SSHの設定ポリシーは、

  • SSHでのrootログインを許可しない
  • パスワード認証を許可しない
  • RSA認証のみを許可する

とします。

まず、管理者アカウントにSSH用のディレクトリを作成します。

$ mkdir .ssh
$ chmod 700 .ssh

クライアントの公開鍵の転送

クライアント側のホームディレクトリに.sshが存在しない場合、

$ ls -a

で.sshが表示されない時には、クライアント側の公開鍵を作成します。パスフレーズを入力しない場合には、-N ''を追加するかパスフレーズを空で指定する。

$ ssh-keygen -t rsa

作成された公開鍵をVPSサーバに転送します。 *2

$ scp .ssh/id_rsa.pub 管理者アカウント@サーバアドレス:/home/管理者アカウント/

サーバ側のSSH設定

サーバに戻って、sshdの設定をします。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$ sudo vi /etc/ssh/sshd_config
以下の項目を追加・変更します
Port 10022
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
$ sudo /etc/init.d/sshd restart

SSH接続元の制限

SSHのポート番号を22から10022に変更した他に、SSH接続元の制限することでセキュリティを強化します。 以下の例では.jpとしましたが、VPSに接続するポートやプロバイダーのアドレスが分かっている場合には、そのアドレスをセットするとより安心です。

$ sudo vi /etc/hosts.allow
以下を追加
ALL: 127.0.0.1
sshd: .jp 

$ sudo vi /etc/host.deny
以下を追加
sshd: ALL

ここで、クライアントからパスワード入力なしで、VPSサーバにログインできることを 確認しましょう。

IPTablesの設定

ファイアウォールは以下のポリシーで設定します。

  • 不要なパケットは破棄する
  • 必要なパケットのみ通す

ファイアウォール停止とオリジナル設定の保存

IPTablesの設定は、/etc/sysconfig/iptablesにあります。

$ sudo /etc/init.d/iptables stop
$ sudo cp /etc/sysconfig/iptables /etc/sysconfig/iptables.org

デフォルトルール設定

既存の設定をクリアし、ポリシーに従ってデフォルトのルールを定義します。 ここで、ループバックloのルールをセットするのを忘れないように。

$ sudo iptables -F
$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT ACCEPT
$ sudo iptables -P FORWARD DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT

プライベートなIPアドレスからの接続を拒否

インターネットからの接続でプライベートIPアドレスからの接続があれば、不正なアドレスなので破棄します。

$ sudo iptables -A INPUT -s 10.0.0.0/8 -j DROP
$ sudo iptables -A INPUT -s 172.16.0.0/12 -j DROP
$ sudo iptables -A INPUT -s 192.168.0.0/16 -j DROP

PINGの許可

PINGを許可します。 *3

$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

ブロードキャストアドレス、マルチキャストアドレス宛のパケットを破棄

$ sudo  iptables -A INPUT -d 255.255.255.255 -j DROP
$ sudo  iptables -A INPUT -d 224.0.0.1 -j DROP

サーバで必要とするポートへのアクセスを許可

構築するサーバで若干ことなりますが、 ここではSSH, HTTP, Sage用の8000, HTTPS, DNS, SMTP, POP3, SPOP3を許可します。

$ sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
$ sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 465 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 995 -j ACCEPT

設定の後処理

既に接続されているコネクションの処理を追加し、設定を保存した後、IPTablesを再起動します。

$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ sudo /etc/init.d/iptables save
$ sudo /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
$ sudo /etc/init.d/iptables restart

Apacheの導入

yumを使ってApacheをインストールした後、必要な設定を行います。

$ sudo yum install httpd
$ sudo ln -s /usr/bin/perl /usr/local/bin/perl
$ sudo chown -R apache:apache /var/www
$ sudo chmod 2775 /var/www/cgi-bin
$ sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcom
e.conf.org
$ sudo mv /var/www/error/noindex.html /var/www/error/noindex.html
.org
$ sudo vi /etc/httpd/conf/httpd.conf
以下の項目を追加・変更
ServerTokens Prod
ServerName サブドメイン名.sakura.ne.jp:80
DirectoryIndex index.php index.html
ServerSignature Off

MySQLの導入

Apacheと同様yumでmysqlをインストールした後、必要な設定をします。

$ sudo yum install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64    
$ sudo vi /etc/my.cnf	
以下を追加
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

PHPの導入

PHPでは、DBとしてMySQLを想定し、マルチバイト対応とPearのパッケージをインストールします。 *4

$ sudo yum install php
$ sudo yum install php-mbstring php-mcrypt php-mysql php-pear 

$ sudo vi /etc/php.ini	
以下を追加・変更
expose_php = off
error_log = /var/log/php-errors.log
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
$ sudo pear channel-update pear.php.net
$ sudo pear upgrade –force PEAR
$ sudo pear upgrade-all

コメント

選択肢 投票
おもしろかった 2  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


*1 すみません、さくらインターネット創業日記に設定方法がありました。
*2 SCPの認証はデフォルトのパスワード認証を使っています。
*3 ネット攻撃を考えるとすべてのPINGを許可するのは問題があります、詳しくはファイアウォール構築(iptables)を参考にしてください
*4 各自のニーズに合わせて変更してください

添付ファイル: fileremote_console.png 422件 [詳細] fileさくらVPSコントロールパネル.png 386件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-09-20 (火) 14:53:38 (2014d)
SmartDoc