2013年10月18日金曜日

SpeeVer VPS Linux(Plesk Panelなし) 初期設定

さ○らインターネットのVPSは情報が豊富だがこのSpeeVerに関しては情報が乏しい・・・たまたまSpeeVerのVPS(CentOS6)を使う機会があったため記録に残しておきます。

特徴

  • 仮想環境はParallels Virtuozzoを採用している
  • OSはCentOS, Dabian, Ubuntuから選択が可能(申込みの段階で決める)
  • ルート権限を与えてもらえる(実際はroot権限に近い権限のようです)
  • グローバルIPはデフォルトで1個付与される(追加が可能)
  • データ転送量は無制限
  • IDS/IPSが標準搭載、24時間有人監視あり
  • データセンターは国内にある
  • サポート用の電話連絡先がある(月~金 9:00~19:00)
  • 初心者にもやさしい管理ツール「Plesk Panel」がある(今回は契約なし)
  • 2013/09/11~2013/12/10キャンペーンがある(月額が最大半額に)
  • その他有料オプションあり
  • 自前で用意したOSのインストールはできない

契約したプラン

  • VS-31 CentOS 6 x86_64 (Pleskなし)
    • 初期費用 5,250円
    • 契約期間 12ヶ月
    • 月額料金 キャンペーンにより12か月間は4,200円→2,100円
    • CPU4コア(Intel(R) Xeon(R) CPU X5570 2.93GHz)
    • メモリ 2GB
    • HDD 200GB
    • Pleskなしのため最少インストールに近い(httpdはインスト済状態でした)
    • VPSの初期化は有料(2,100円) ※新しいVPSが作られ古い方が契約解除

使用目的

  • Apache+PHP+PostgreSQLでWebアプリ(200名程度の会員限定サイト)
  • 原則としてWebやDBすべてソースからインストールする

ネットワーク状態等の確認

まずはSSHクライアント(Poderosa)を使用してrootでログインして状態の確認
  • uname -a
    • Linux vps-*******-***.cp.hosting-srv.net 2.6.32-042stab079.5 #1 SMP Fri Aug 2 17:16:15 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux
  • /etc/hosts
    • 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    • ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    • # Auto-generated hostname. Please do not remove this comment.
    • ***.***.***.*** vps-*******-***.cp.hosting-srv.net vps-*******-***
  • /etc/resolv.conf
    • nameserver 210.152.143.70
    • nameserver 210.152.143.114
  • /etc/sysconfig/network
    • NETWORKING="yes"
    • NETWORKING_IPV6="yes"
    • HOSTNAME="vps-*******-***.cp.hosting-srv.net"
  • /etc/sysconfig/network-scripts/ifcfg-venet0
    • DEVICE=venet0
    • BOOTPROTO=static
    • ONBOOT=yes
    • IPADDR=127.0.0.1
    • NETMASK=255.255.255.255
    • BROADCAST=0.0.0.0
    • ARPCHECK="no"
    • GATEWAYDEV="venet0"
    • IPV6INIT="yes"
    • IPV6_DEFAULTDEV="venet0"
  • /etc/sysconfig/network-scripts/ifcfg-venet0:0
    • DEVICE=venet0:0
    • ONBOOT=yes
    • IPADDR=***.***.***.***
    • NETMASK=255.255.252.0
  • chkconfig --list
    • crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
    • htcacheclean    0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • httpd           0:off   1:off   2:off   3:on    4:off   5:off   6:off
    • iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
    • modules_dep     0:off   1:off   2:on    3:on    4:on    5:on    6:off
    • named           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:on    5:on    6:off
    • network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    • nmb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • portreserve     0:off   1:off   2:on    3:off   4:on    5:on    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
    • rpcbind         0:off   1:off   2:on    3:off   4:on    5:on    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:on    4:off   5:off   6:off
    • sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
    • smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • snmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • snmptrapd       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
    • udev-post       0:off   1:on    2:on    3:off   4:on    5:on    6:off
    • vzreboot        0:off   1:off   2:off   3:off   4:off   5:off   6:on
    • winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off
    • xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

OSの初期設定

■作業用の管理ユーザーの作成

# useradd hoge
# password hoge

hogeでログイン
$ su -
パスワード:********
#

■root宛てメールを転送

# cd /etc/
# vi aliases

一番下にある
# Person who should get root's mail
#root:          marc
root:           hoge@example.com   #追記

変更を確定
# newaliases

メールテスト
# mail root
Subject: test
test mail
.
EOT

※本文の最後としてピリオドが必要です。

■suコマンドでのsu制限(wheelグループ所属のみ許可)

hogeをwheelグループへ
# usermod -G wheel hoge

# vi /etc/pam.d/su
auth            required        pam_wheel.so use_uid #コメント解除

# vi /etc/login.defs
SU_WHEEL_ONLY yes #追記


■ipv6の無効化

# echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
# echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6

# vi /etc/hosts
#::1 #コメントにする

■SSHの調整(例)

# vi /etc/ssh/sshd_config
ListenAddress 0.0.0.0          #コメント解除(ipv4のみ)
LoginGraceTime 20            #コメント解除(接続からログインまでの制限時間を20秒に設定)
PermitEmptyPasswords no  #コメント解除(パスワードなしでのログインは禁止)
PermitRootLogin no           #コメント解除(rootはログイン禁止)
AllowUsers hoge                #追記(ログインできるユーザーを限定)
#Port 22                          #コメントにする
Port 10022                      #追記(待ち受けポートを10022に変更)

※念のためPort22も残して22,10022両方で待ち受けしておき10022でのログインを確認できたら後で22をコメントにするのも良い(ここでログインできなくなると致命的→初期化の道へ)

書き込みが終わったところでnetwork,sshdをリスタート
# /etc/init.d/network restart
# /etc/init.d/sshd restart

再ログインの確認後スーパーユーザへ
$ su -
パスワード:********
#

■GPGキーのインポート

キーがインポートされているか確認
# rpm -qai gpg-pubkey*
何も表示されなければインポートされていません。

キーのインポート
# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6;

再度キーの確認
# rpm -qai gpg-pubkey*
何やら暗号らしきものが表示されればOKです。

■RPM版httpdのアンインストール

ソースからインストールするので不要
# rpm -qa | grep httpd
httpd-tools-2.2.15-29.el6.centos.x86_64
httpd-2.2.15-29.el6.centos.x86_64

# rpm -e httpd-2.2.15 httpd-tools-2.2.15
警告: /etc/httpd/conf/httpd.conf は /etc/httpd/conf/httpd.conf.rpmsave として保存されました。

残骸(消してもいい)
# find / -name httpd
/var/log/httpd
/etc/httpd

# ls /var/log/httpd/
access_log  error_log

# ls /etc/httpd/conf/
httpd.conf.rpmsave

■グループパッケージの調整

# yum grouplist
-bash: yum: コマンドが見つかりません

あれ?
# rpm -qa | grep yum

ない!どうやらデフォルトでは使えないようです。

ということで、SpeeVerの管理サイトへ行きyumを使えるようにします。(https://cp.hosting-srv.net)



VPS管理→もっと見る

アプリケーションタブ

インストールするを選択

.ride_yum.centos-6-x86_64チェックON→設定する

インストールが完了

これでyumが使えるようになりましたので確認します。
# rpm -qa | grep yum
yum-metadata-parser-1.1.2-16.el6.x86_64
yum-3.2.29-40.el6.centos.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch

ということで、現在のパッケージ群がどのようになっているかチェック
# yum grouplist
Installed Groups: ←インストール済パッケージ群
   CIFS ファイルサーバー(CIFS file server)
   Perl のサポート(Perl Support)
   SNMP サポート(SNMP Support)
   コンソールインターネットツール(Console internet tools)
   システム管理ツール(System administration tools)
   ディレクトリサーバー(Directory Server)
   ディレクトリ接続クライアント(Directory Client)
   ネットワーキングツール(Networking Tools)
   ネットワークインフラストラクチャサーバー(Network Infrastructure Server)
   ネットワークファイルシステムクライアント(Network file system client)
   レガシー UNIX の互換性(Legacy UNIX compatibility)
   電子メールサーバー(E-mail server)

※インストール可能パッケージも表示されますがここでは割愛します。

使わない不要なパッケージグループは削除します。(任意)

samba系
# yum groupremove "CIFS file server"
# yum groupremove "Directory Client"

SNMP系
# yum groupremove "SNMP Support"

elinks系
# yum groupremove "Console internet tools"

必要なパッケージ群をインストールします。
ソースからインストールするためには開発パッケージ群は必須です。
# yum groupinstall base "Development Tools"

最終的には以下のパッケージ群となりました。
   Base
   Development tools
   E-mail server
   Graphical Administration Tools
   Hardware monitoring utilities
   Legacy UNIX compatibility
   Network Infrastructure Server
   Networking Tools
   Performance Tools
   Perl Support
   System administration tools


■不要サービスの停止

# service acpid stop
# service cpuspeed stop
# service haldaemon stop
# service ip6tables stop
# service kdump stop
# service messagebus stop
# service sysstat stop

自動起動を停止
# chkconfig acpid off
# chkconfig cpuspeed off
# chkconfig haldaemon off
# chkconfig ip6tables off
# chkconfig kdump off
# chkconfig messagebus off
# chkconfig sysstat off

/etc/logs/messegeにこんなログが大量に・・・irqbalanceにバグがあるようだ
irqbalance: WARNING, didn't collect load info for all cpus, balancing is broken

ということでとりあえず停止
# service irqbalance stop
# chkconfig irqbalance off

一応ここでサーバを再起動
# shutdown -r now

あれ?
SSH接続ができない・・・・・
PINGが通らない・・・・・

SpeeVerの管理サイトからVPNのステータスを見るとなんとエラーで起動されていない。
えーーーーーーっ!なんで?
FWもまだ設定してねーし何が原因?

とりあえずSpeeVerのサポートへ連絡
状況を説明したがエラー原因を調べることはできないとの回答
しまいには初期化をするしかないとのこと

ん~納得がいかない、原因がわからないのに初期化に金払えというのか!
そんなアホな、とりあえずすべての操作ログを送り調査して頂くことに・・・

翌日、サポートより正常に起動されているようですとメールあり
は?何じゃそりゃ!昨日はPINGすら通らなかったのに・・・

何かのバグで手を加えたんでしょうかねえ?

とりあえず使えるようになったので構築の続きを開始する。

■ファイアウォールの設定

ここはもっとも慎重に行う必要があります。
私自身ちょっとしたミスでSSH接続できなくなってしまったため初期化という悲しい道へ行ってしまいました。

iptablesを使いPING応答許可、10022ポート(SSH用)、5432ポート(PostgreSQL)、80ポート(Web)許可する。ただし10022と5432は特定IPからのみ許可とする。

SpeeVerのヘルプページでPostgreSQLのTCP/IP接続は出来ないとあるがPlesk Panelなしの今回の契約では接続可能でした。

/etc/sysconfig/iptablesに記述してもよいがスクリプトを作って実行した方が楽なのでスクリプトを作成して実行します。

# pwd
/root

新ファイルの作成
# vi myfilter.sh

#!/bin/sh
/sbin/iptables -F
/sbin/iptables -X

# 外部からをすべて遮断 /sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP

/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

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

# セッション確立後は許可
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# PING応答は許可 /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 10022, 5432は会社からのみ許可(***やxxxやvvvは自社のグローバルIPです)
/sbin/iptables -A INPUT -s ***.***.***.***/32 -p tcp --dport 10022 -j ACCEPT
/sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx/32 -p tcp --dport 10022 -j ACCEPT
/sbin/iptables -A INPUT -s vvv.vvv.vvv.vvv/32 -p tcp --dport 10022 -j ACCEPT
/sbin/iptables -A INPUT -s ***.***.***.***/32 -p tcp --dport 5432 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

一致する定義がないのもは拒否されたようなメッセージを返す
/sbin/iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

/etc/rc.d/init.d/iptables save
/sbin/service iptables restart

書込み後
# shmod 755 ./myfilter.sh
# sh ./myfilter.sh
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: mangle filter   [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

保存された設定を確認
# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Tue Oct 22 11:11:08 2013
*mangle
:PREROUTING ACCEPT [55002:15509187]
:INPUT ACCEPT [55002:15509187]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [52160:24383517]
:POSTROUTING ACCEPT [52160:24383517]
COMMIT
# Completed on Tue Oct 22 11:11:08 2013
# Generated by iptables-save v1.4.7 on Tue Oct 22 11:11:08 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:140]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -s ***.***.***.***/32 -p tcp -m tcp --dport 10022 -j ACCEPT
-A INPUT -s xxx.xxx.xxx.xxx/32 -p tcp -m tcp --dport 10022 -j ACCEPT
-A INPUT -s yyy.yyy.yyy.yyy/32 -p tcp -m tcp --dport 10022 -j ACCEPT
-A INPUT -s ***.***.***.***/32 -p tcp -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Tue Oct 22 11:11:08 2013

実行状態の確認
# iptables -L

■システムの言語を変更(任意)

日本語の方が良ければ変更する必要なし
# vi /etc/sysconfig/i18n
#LANG="ja_JP.UTF-8" #コメント
LANG="en_US.UTF-8" #追記

■Logwatch

忘れてた!
CentOS6ではデフォルトインストールされていなかった

# yum install logwatch
Installed:
  logwatch.noarch 0:7.3.6-49.el6

Dependency Installed:
  perl-Date-Manip.noarch 0:6.24-1.el6
  perl-YAML-Syck.x86_64 0:1.07-4.el6

Complete!

■yumによる自動更新(任意)

yum-cronを使います。

# yum install yum-cron yum-plugin-downloadonly
Installed:
  yum-cron.noarch 0:3.2.29-40.el6.centos
  yum-plugin-downloadonly.noarch 0:1.1.30-14.el6

yumによる自動更新を起動
# /etc/init.d/yum-cron start

起動時に有効になるようにする
# chkconfig yum-cron on

起動設定の確認
# chkconfig --list yum-cron
※以下のようになっているか確認(2,3,4,5がon)
 yum-cron        0:off   1:off   2:on    3:on    4:on    5:on    6:off

■終わり

とりあえずOSの初期設定についてはこんなもんでしょう。
最後に再起動して状態をチェックします。
 
次はApache, PostgreSQL, PHPのインストールをしていきます。
 

0 件のコメント:

Google検索