[Linuxメモ]SaaSesのVPS、OsukiniサーバーLTで行った設定の私的メモ
SaaSesでVPSのOsukiniサーバーのLTプランを現在使用しています。このまま本契約をするつもりです。とりあえず半年契約にしました。
SaaSes|クラウド、ホスティング、VPS、専用サーバー、データセンターのパイオニア
そういうわけで色々設定を行ったわけですが、また別に借りるかも知れないのでその時の為にメモを残しておきます。また誰かの参考になれば幸いです。
割と大雑把に書くと思うので細かいところはググッたりSaaSesのサポートページを見たり他の人のブログを併用してみるとかして下さい。
インストールオプション
とりあえず最初はOSのインストールとインストールオプションを選択するわけですが、2011年9月22日の現時点で選べるOSは以下のとおり。
- CentOS ver5 32bit
- CentOS ver5 64bit
- Ubuntu ver10.04 32bit
- Debian ver5.0(lenny) 32bit
- Debian ver5.0(lenny) 64bit
- Debian ver6.0(squeeze) 32bit
- Debian ver6.0(squeeze) 64bit
- Ubuntu ver10.10 32bit
- Ubuntu ver11.04 32bit
私は馴染みのあるCentOS ver5 32bitにしました。LTプランでメモリーが512MBしかない(といっても個人で使う分には十分)ので比較的メモリー消費の少ない32bit版にしました。メモリーが512MB何ですから64bit版使う意味自体ないですしね。ただホストOSが64bitの場合それに合わせたほうが速度が出るという話もあるのでメモリーが大きなプランを選択した場合は64bit版もよろしいのではないかと思います。
インストールオプションではインストール時にインストールされるソフトウェアも選択します。私は
- MySQLなし
- Webminなし
- EC-CUBEなし
にしました。
MySQL、Webminについては必要があれば後でインストールする事にします。商品販売サイトを作るわけではないのでEC-CUBEはいらないのでインストールしません。
MySQLについてはとりあえずは使わないのでインストールしませんでした。DBは使うとしてもとりあえずはお手軽にSQLiteを使うので問題ないです。サーバソフトウェアが常駐しないので少ないサーバー資源の節約にもなります。
WebminはGUIでサーバーの設定を行なうことが出来る便利なツールです。sshを使ってCUIから設定するのが苦手な人には便利なツールなので初心者の人は入れるといいかも知れないです。というかSaaSesのサポートページの説明はWebminを入れていることが前提の説明になっているので初心者の人は入れたほうがいいでしょう。Webminは便利なのですがCUIで設定できる人にはかえってわかりづらい面もあるのと常駐するのでメモリーも消費するし更新を怠るとセキュリティーホールになることもあるので注意も必要です。初心者の人がiptabesの設定やユーザーの追加をするのには便利だと思います。機能が多すぎて最初は目的の画面を探すのにも苦労するかもしれませんけど。
インストールするとしばらく設定に時間がかかるので30分か1時間後に見に行くとアクセス出来るようになってました。
これから時系列でやったことを書いて行きますが話が前後する場合があります。
とりあえずsshの設定
最初にsshの設定を行いました。
sshの設定ファイルを以下のファイルになります。
/etc/ssh/sshd_config
下記のようにrootのログインが禁止になっていることを確認しました。
PermitRootLogin no
FTPにつながらないのでFTPの設定を行なう
# rpm -za|gerp ftp
で確認すると一応vsftpdがインストールされているらしい
vsftpd-2.0.5-16.el5_6.1
/etc/xinetd.dにはなにも設定ファイルらしきものがないのでスタンドアローンで利用するらしい。スタンドアローンモードだと常にvsftpdのプロセスが常駐するのでメモリーを節約したい人はxinet.d経由にすると幸せになれるかも知れない。(というかxinetdが初期状態ではインストールされていないようなので面倒だし使ったら使ったでxinetdのデーモンが常駐するといえばそうなんだけど)
iptablesでポートの状態を確認するとFTPのポートは開けられていない様だ。とりあえずセキュリティーホールになりやすいので閉じられているようだ。
[root@rad-xen-vweb7 etc]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
ACCEPT tcp – anywhere anywhere tcp dpt:http
ACCEPT icmp – anywhere anywhere
ACCEPT all – anywhere anywhere
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@rad-xen-vweb7 etc]#
webminを使ってFTPに接続できるようにするには以下の質問の回答ページを見ると良い。
設定についての依頼、質問|過去お客様からいただいた質問|SaaSes
とここまで調べたが、FTPはやっぱりセキュリティーホールになるかも知れないのでSFTPを使うことにする。SFTPはsshを利用してFTPの様にファイル転送出来る仕組みです。FFFTPは使えませんがfilezilla等のファイル転送ソフトを利用すると使えるます。これならFTPサーバを立ち上げる必要もないしリソースも無駄に使わないのでナイスな感じです。
ユーザーの追加
デフォルトで作成されたユーザーをそのまま使ってもいいが別のアカウントを使いたい場合は追加する。webminの機能又はsshからコマンドで追加できる。
# adduser <新しいユーザ名>
私は
adduser kumacchi
としてkumacchiを追加しました。
追加されたユーザーの確認はidコマンドで行います。
[kumacchi@rad-xen-vweb7 ~]$ id kumacchi
uid=502(kumacchi) gid=502(kumacchi) 所属グループ=502(kumacchi)
[kumacchi@rad-xen-vweb7 ~]$
sudoを使えるようにする
まあ使おうと思うとパスワード最入力でなえるのでrootでやってしまうことが多い私ですが一応sudoも使えるようにしました。
手順としてはとりあえずwheelグループに入る
[root@rad-xen-vweb7 ~]# usermod -G wheel <ユーザID>
usermodはユーザー情報を変更するコマンドです-Gはグループを変更するコマンドです。
私(kumacchi)の場合は
[root@rad-xen-vweb7 ~]# usermod -G wheel kumacchi
となります。これでwheelグループになりました。
idコマンドで確認してみます。
[root@rad-xen-vweb7 ~]# id kumacchi
uid=502(kumacchi) gid=502(kumacchi) 所属グループ=502(kumacchi),10(wheel)
[root@rad-xen-vweb7 ~]#
ちゃんと追加されましたね。
-Gオプションはデフォルトの所属グループ以外は上書きしてしまうので注意が必要です。既に他のグループに所属している状態で上記のusermodコマンドを使うと上書きされてしまうので問題が出ます。
複数のグループに属するように設定するにはグループidをカンマ区切りで指定します。下の例はwheelグループとapacheグループの両方に属するように設定する場合です。なのでusermod -Gする前にはあらかじめidコマンドで現在所属グループを把握して適切に設定する必要があります。
[root@rad-xen-vweb7 www]# usermod -G wheel,apache kumacchi
[root@rad-xen-vweb7 www]# id kumacchi
uid=502(kumacchi) gid=502(kumacchi) 所属グループ=502(kumacchi),10(wheel),48(apache)
[root@rad-xen-vweb7 www]#
話が横道にそれましたがwheelグループに所属したらvisudoコマンドで設定を編集します。編集の仕方はviと同じです。
[root@rad-xen-vweb7 ~]# visudo
visudoで編集画面に入ったら以下の箇所のコメントをとって
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
以下の様に編集する
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
そのままではrootで利用できるコマンドにパスが通ってないのでパスを通します。
[kumacchi@rad-xen-vweb7 ~]$ vi ~/.bash_profile
下の箇所を
PATH=$PATH:$HOME/bin
下の様にして/sbinと/usr/sbinのパスを追加します。
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin
設定を反映させるためにおなじみのsourceコマンドで
[kumacchi@rad-xen-vweb7 ~]$ source .bash_profile
とすれば新しい設定が反映されます。
sshのポートを変更
ここらへんは任意ですがセキュリティーを考慮して念の為sshのポートを変更します。固定ipの人ならiptablesを使って接続できるホストをそのipに固定したりプロバイダのアドレス範囲に限定すればなおイイ感じだと思います。
ポートを変更するにはsshの設定ファイルをいじります。
※色々ミスると最悪サーバーに接続できなくなるので注意が必要ですがVPSなので最悪再インストールで問題ない。
[kumacchi@rad-xen-vweb7 ~]# sudo vi /etc/ssh/sshd_config
下は例ですが下の様にPortを任意の値に変更するだけで海外からのsshへの決め打ちのアタックを多少はかわせるのではないかと思います。
#Port 22
Port 10022
sshdを再起動する。
[kumacchi@rad-xen-vweb7 ~]$ sudo service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
[kumacchi@rad-xen-vweb7 ~]$
このままでは接続できなくなってしまうので10022ポートを開ける。
[kumacchi@rad-xen-vweb7 ~]$ sudo vi /etc/sysconfig/iptables
として
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
の箇所を
-A INPUT -p tcp -m tcp –dport 10022 -j ACCEPT
と修正する。
iptabesを再起動して設定を反映する。
[kumacchi@rad-xen-vweb7 ~]$ sudo service iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
[kumacchi@rad-xen-vweb7 ~]$
設定が正常に反映されたかを確認
[kumacchi@rad-xen-vweb7 ~]$ sudo iptables -L -n -v
Chain INPUT (policy DROP 2 packets, 272 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022
0 0 ACCEPT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT icmp – * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all – lo * 0.0.0.0/0 0.0.0.0/0
52 3432 ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 37 packets, 3792 bytes)
pkts bytes target prot opt in out source destination
[kumacchi@rad-xen-vweb7 ~]$
実際にsshでポート10022に接続してみて接続出来ることを確認する。
※当然ですがポートを変更した場合はsshクライアントやSFTPクライアントの接続設定で変更したポートに合わせる必要があります。
逆引き設定
独自ドメインを利用する場合、コントロールパネルで逆引き設定を設定することが出来る。
DNSホスト名1の箇所に自分のドメインを指定して[登録]ボタンをクリックする。
下記の画像のようにnslookup IPアドレスからドメイン名が引けるようになれば正常に逆引き設定できています。
※nslookup www.ama-toolbox.comのようにしてドメイン名からアドレスを取得することを正引きといいます。
apacheの設定
DocumentRootをホームディレクトリ配下のユーザーディレクトリ配下に変更したら以下のエラーになった。suExecを有効にするか普通にユーザディレクトリのパーミッションを解放するしかない。suExecを使えばパーミッション関係は楽になる。が面倒なので普通にパーミッションの変更で対応した。
Forbidden
You don’t have permission to access / on this server.
FTP設定
SFTPでは改行コードの自動変換をやってくれないのでCGIを扱うのにとっても不便なのでやっぱりFTPを使うことにする。
そのかわり接続できるホストは自分のホストからに限定した。
今回はスタンドアローンモードで妥協。気力が湧いたらxinet経由にする。
/etc/vsftpd/vsftpd.confに以下のパッシブポートの設定を追加
# sudo vi /etc/vsftpd/vsftpd.conf
pasv_min_port=10100
pasv_max_port=10150
iptablesのコマンドでFTPのポートとパッシブポートの設定を追加
# sudo iptables -A INPUT -p tcp –dport 21 -j ACCEPT
# sudo iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 10100:10150 -j ACCEPT
アクセスできるIPアドレスを限定する場合には以下のようにします。
# sudo iptables -A INPUT -s 192.168.0.1 -p tcp –dport 21 -j ACCEPT
# sudo iptables -A INPUT -s 192.168.0.1 -m state –state NEW -m tcp -p tcp –dport 10100:10150 -j ACCEPT
※IPアドレスは自分のホストのグローバルIPです。固定IPじゃないと意味が無い。接続できるプロバイダを限定するなどアドレス範囲で指定する場合は「192.168.0.0/16」という風に指定します。
設定を保存するには以下のコマンドを実行。
# sudo /etc/init.d/iptables save
iptablesコマンドではなく設定ファイルを直接いじる場合は以下のようにする。
# sudo vi /etc/sysconfig/iptables
そして以下の様に編集
# Generated by iptables-save v1.3.5 on Fri Aug 19 02:27:10 2011
*filter
:INPUT DROP [1681:255115]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [37934:4095528]
-A INPUT -p tcp -m tcp –dport 10022 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.0.1 -p tcp -m tcp –dport 21 -j ACCEPT
-A INPUT -s 192.168.0.1 -p tcp -m state –state NEW -m tcp –dport 10100:10150 -j ACCEPT
COMMIT
# Completed on Fri Aug 19 02:27:10 2011
その他/etc/vsftpd/vsftpd.confに追加した設定。
アノニマスはコメント
#anonymous_enable=YES
アスキーモードでアップロード・ダウンロード出来るようにコメントを外す
ascii_upload_enable=YES
ascii_download_enable=YES
サブディレクトリやその中身がコピーされない時の対処
ls_recurse_enable=YES
ファイルのタイムスタンプがずれる時の対処
use_localtime=YES
.(ドット)ではじまるファイルが見えない時の対処
force_dot_files=YES
vsftpdの設定については以下のページを参考にしてください。
vsFTPdを1.1.3-8から2.0.7にバージョンアップしてみた – KUMA TYPE
※未確認ですがpasv_enable=YESは指定するとエラーになったので廃止されたのではないかと思う。
※vsftpdをxinetd経由にしようと思ったがxinetdがインストールされていなかったのでめんどくさいのやめた。ヤル気が出たらやる。
サーバー起動時にvsftpdが自動で起動するようにntsysvコマンドでvsftpdにチェックを入れた。
初期の基本的な設定は大体こんなところです。細々としたチューニングをするところはありますがとりあえず使うにはこのくらい設定すればよろしいかと思います。