manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ その3/仮想マシン

各サーバーソフトの設定

2014年1月14日 開始 2014年2月9日 更新

 仮想マシン上にいちおうインターネットサーバーとしての設定をやってみます。
目的は、ふだんはバックサップサーバーとして稼働しておき、メインサーバーに異常があったときすぐに切り替えて代行できるようにということなのですが、ハード的な異常や元のOSそのものがこけた場合は、同じマシン上なのでこちらも動かない可能性も高く、あまり意味ないかも。半分遊びということで。
ファイアウォール iptables
DNSサーバー bind9
データサーバー MySQL
以上はCentOSと同様に設定し特に問題ありませんでした。

以下、ちがったところについて今後のためにメモ。

ネットワークファイルシステム NFS
 当初NFSをつないだとき、相手のマシン(CentOS6)のすべてのディレクトリやファイルのユーザ:グループが nobody:nobody になっていました。設定がおかしいかと見直しましたがすぐにはわかりませんでした。
でも以下のようにNFS3でつなぐとちゃんとユーザ:グループは取得できます。
# mount -t nfs -o nfsvers=3 192.168.0.6:/home /mnt/cosmos.home
しばらくこれで使っていました。

 その後調べてみたら、NFS4ではドメイン名込みのユーザ名が使われるため、マシンのドメイン名が違うとだめだということです。
問題のドメインを設定するファイルは /etc/idmapd.conf。
/etc/idmapd.conf の Domain の記述は、こちらのマシン(Vinelinux6)では
Domain = localdomain
一方、相手のマシン(CentOS6)ではDomainは設定されておらず、"The default is the host's DNS domain name." と書いてあります。実際ログを見ると messages には、
.... localhost rpc.idmapd[1469]: nss_getpwnam: name 'username@iroribata.net' does not map into domain 'localdomain'
というように記録されていました。

 これでは各マシンが固有のドメイン名で運用されている場合(その方が多いと思う)、NFS4はそのままではだめだということ。実際のドメイン名はどうあれ、NFS上のドメイン名だけ "localdomain" にでも統一するしかありません。
で、他のマシン2台含めて全部のマシンの /etc/idmapd.conf の Domain を
Domain = localdomain
として一件落着。セキュリティー的には localdomain ではなく独自の名前を使った方がいいのだろうけど、ユーザ名だけの話なのでそれほどの意味もない気がする。
マシンのドメイン名がいちいち異なるのはありえることなのに何でこんな仕様にしたのだろう。
セキュリティー確保のために 「NFSDomain というのを独自に設定しろ~! これが異なれば全くつながらないぞ~。」 というのならまだ少しわかるが。

HTTPサーバー apache2
 なぜかディフォルトの動作モードが worker になっていました。
phpモジュールを使う場合、動作モードを worker から prefork に変更しなくてはなりません。
# alternatives --config apache2
で、prefork を指定。

FTPサーバー vsftpd
 vsftpdのバージョンはCentOS6:2.2.2, vine:2.0.7。
 CentOSと同じに設定したが、なぜかログインできない。vsftpdの設定をいくら見直してもおかしなところはなく、最初しばらくわからなかった。
 結局、ユーザ登録のログインシェルの問題であった。ログインシェルをCentOSと同じ/sbin/nologinで登録するとログインできない。だからといってftpだけのために必要のないシェルへのログインまで許可するのはセキュリティー上好ましくない。
少し試したらシェルを/bin/falseに指定するとvsftpdにログインできる。これでいくことにした。
この違いはどこからくるのかというと、たぶん/etc/shellsのちがい。
CentOSでは
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
となっているが、Vineでは
/bin/bash
/bin/sh
/bin/false
となっていた。
Vine にも /sbin/nologin はちゃんとあるので、Vine の /etc/shells に /sbin/nologin を登録すればいいとは思うが、各々のOSの設定を尊重しておこう。

メールサーバー
 MTAはPostfix, MUAはDovecotで同じだが、ウィルスチェックにClamAVを使うときのつなぎにCentOSではclamsmtpを使ったが、Vineではclamav-milterがお勧めらしい。今回はVineレポジトリにあるclamav-milterを使っておこう。
clamav-0.98.1, clamav-milter-0.98.1 をインストール。

PostfixとDovecotについてはCentOSと同様。
clamav関係、設定ファイルは3つ。変更したところのみ記載。

/etc/clamd.conf
#Example …設定を有効に。
LogFile /var/log/clamav/clamd.log …標準のログの場所にしておいた方がわかりやすい。
LogRotate yes …LogFileMaxSize(default 1M)が有効なら自動的に有効になるようだが明示的に。
LocalSocket /var/run/clamav/clamd.sock …CentOSに合わせた。
SelfCheck 21600 …あまり頻繁だとログが鬱陶しいしその必要もないようだ。

/etc/clamav-milter.conf
#Example …設定を有効に。
MilterSocket unix:/var/run/clamav/clamav-milter.socket …clamd.sockに合わせておく。
MilterSocketGroup mail …メール配送プロセスのグループ。
MilterSocketMode 660 …mailグループが書き込めるように。
ClamdSocket unix:/var/run/clamav/clamd.sock …clamd.confの設定に合わせる。
AddHeader Yes …Virusチェックしたことをヘッダーに付加。
ReportHostname vine.iroribata.net …Virusチェックしたメールサーバー名。

/etc/freshclam.conf
#Example …設定を有効に。
UpdateLogFile /var/log/clamav/freshclam.log …clamd.logに合わせておく。
LogRotate yes …LogFileMaxSize(default 1M)が有効なら自動的に有効になるようだが明示的に。

そしてpostfixの設定に以下追加。
/etc/postfix/main.cf
smtpd_milters = unix:/var/run/clamav/clamav-milter.socket …SMTPメールに適用。
non_smtpd_milters = unix:/var/run/clamav/clamav-milter.socket …非SMTPメールにも適用。
milter_default_action = accept …Milterアプリケーションエラー時のアクション。素通しするしかない。
receive_override_options = no_address_mappings …アドレス操作せず元のアドレスを保持。(ウイルスチェックでの必要性をいまいち理解してはいない。)

といったところ。