CentOS 6 + Plesk 11における各種設定カスタマイズ
CentOS 6 + Plesk 11のサーバーの設定変更を行う機会がありましたので、各種設定のカスタマイズについてまとめます。
Pleskの仕様や設定変更については、Parallels社のオフィシャルサイトのほか、以下のサイトが参考になりました。
ありがとうございました。
・ぷれつく
https://www.pletk.com/
・EX-CLOUDサポート
http://ex-cloud.jp/support/
各種設定カスタマイズ
Pleskコントロールパネル
Pleskコントロールパネルは
http://<IPアドレス>:8443/
でアクセスでき、ユーザ名とパスワードによるログイン認証です。
また、ユーザ名のデフォルトはadminです。
つまり、adminのパスワードがハックされると、簡単にログインできてしまいます。
可能であれば、アクセス元IPアドレスを限定するとよいでしょう。
Pleskコントロールパネルの ツールと設定 > Panel 管理アクセス制限 で設定します。
具体的な設定方法と、万一設定ミスによりログインできなくなった場合の会場方法は以下が詳しいです。
(参考)
・管理アクセス制限の利用
https://www.pletk.com/pleskaccess.html
また、iptablesでTCP/8443と、コンポーネントの追加削除ツールで使用するTCP/8447のアクセス元IPアドレスを限定してもよいでしょう。
iptables
Pleskコントロールパネルでiptablesの設定が可能です。
手順は、EX-CLOUDサポートの以下のページが詳しいです。
・ファイアウォール設定 【Plesk11】
http://ex-cloud.jp/support/question/g-651
より細かい設定を行いたい場合は、Pleskコントロールパネルでファイアウォール拡張を削除したうえで、/etc/sysconfig/iptables を編集しましょう。
Pleskコントロールパネルが使用する、TCP/8443, TCP/8447を追加を忘れずに。
また、外向き(Outbound)アクセスを限定する場合は、Pleskのライセンスアップデートで使用するTCP/5224へのアクセス許可もお忘れなく。
(参考)
・Pleskコントロールパネルのライセンスキーのアップグレード
http://download1.parallels.com/Plesk/Plesk8.3/Doc/ja-JP/plesk-8.3-win-administrators-guide-ja-jp/24814.htm
SSH
SSHの設定 /etc/ssh/sshd_config はPleskには上書きされません。
お好みで、ポート番号の変更、rootユーザーのログイン禁止、パスワード認証の禁止などのセキュリティ強化設定を行うとよいでしょう。
ポート番号を変更した場合は、iptablesの設定変更を忘れずに。
FTP
Plesk 11環境では、FTPサーバーとしてproftpdが稼働しています。
また、FTPサービスは、StandAloneではなく、xinetdで管理されています。
ログは /usr/local/psa/var/log/xferlog です。
proftpdの設定 /etc/proftpd.conf はPleskには上書きされません。
お好みで、ポート番号の変更、パッシブポートの限定、FTPSによる暗号化通信、Systemlogの書き出し設定などを行うとよいでしょう。
ポート番号の変更を変更した場合は、iptablesの設定変更と、/etc/services に使用するポートを登録し、xinetdの設定ファイルでサービス名を変更する必要があります。
以下、FTP ControlポートをTCP/21からTCP/10021に変更した場合の設定例です。
/etc/services の末尾に、サービス名とポート番号を登録します。
# vi /etc/services # FTP ftp10021 10021/tcp
xinetdの設定ファイルを編集します。
# vi /etc/xinetd.d/ftp_psa #service ftp service ftp10021
MySQL
Pleskでは、DBサーバーとしてMySQL 5.1が稼働しています。
パラメータはデフォルトのままですが、/etc/my.cnf を編集することは可能ですので、必要に応じてチューニングします。
ただし、「Pleskをアップデートすると /etc/my.cnf が元に戻ってしまう。」とのことで、注意しましょう。
(参考)
・my.cnfの編集をしても問題ないでしょうか?
http://ex-cloud.jp/support/question/q-621
また、Plesk配下での稼働に限りませんが、innodb_log_file_size を変更した場合は、そのままMySQLを再起動するだけだと起動しなくなりますので注意しましょう。
(参考)
・innodb_log_file_sizeを気軽に変えると死ぬよ
MySQLのユーザー、パスワードは、Pleskが独自に管理しています。
管理ユーザーは root ではなく admin で、そのパスワードはPleskコントロールパネルのパスワードと同じです。
また、adminのパスワードは /etc/psa/.psa.shadow で管理されているので、以下のコマンドでMySQLにroot権限でログインできます。
# mysql -u admin -p`cat /etc/psa/.psa.shadow`
(参考)
・MySQL の root パスワードは何ですか?
Webサーバー
フロントエンドでNginx、バックエンドでApacheが稼働しています。
NginxとApacheの設定変更については、別の記事にまとめてありますので、そちらを参照してください。
・CentOS 6 + Plesk 11におけるNginxの設定カスタマイズ
https://inaba-serverdesign.jp/blog/20150216/centos6_plesk11_nginx.html
・CentOS 6 + Plesk 11におけるApacheの設定カスタマイズ
https://inaba-serverdesign.jp/blog/20150216/centos6_plesk11_apache.html
Pleskにおいては、Webコンテンツの配信設定にはApacheが必須です。
個人的には、PleskにおけるNginxとApacheの併用では、それほどパフォーマンスが向上するとは思えないので、Nginxを停止してApacheのみとしたほうが、設定もシンプルになってよいのではないかと思います。
Nginxの停止方法はEX-CLOUDのサポートページが詳しいです。
・ウェブサーバの構成【Plesk11】 nginxの起動、停止
http://ex-cloud.jp/support/question/g-656
なお、Apache, Nginxのパッケージアップデートを行っても、僕が作業した環境では大きな問題はありませんでした。
DNS
bindによるネームサーバーを稼働させることができます。
ただし、セキュリティ面では、ネームサーバーはメンテナンスが大変で攻撃も受けやすいので、個人的にはネームサーバーを自前で稼働しないほうがよいと思います。
ドメイン管理サービスやレンタルサーバーサービスに付随するネームサーバーや、Amazon Route 53を使用することをおすすめします。
ネームサーバーを稼働させない場合は、Pleskコントロールパネルで「DNSサーバ(BIND)」を停止します。
また、iptablesで、Inbound UDP/53, TCP/53, TCP/953ポートを塞ぎます。
メールサービス
メール配信サーバーとしてPostfix、IMAP/POP3サーバー(メールボックス)としてCourier-IMAPが稼働しています。
メールログは /usr/local/psa/var/log/maillog です。
このサーバーではメールは送信のみとし、IMAP/POP3サーバーは外部のメールボックスサービス/サーバーを利用するのであれば、Courier-IMAPを停止します。
その場合、iptablesで、TCP/25, TCP/106, TCP/110, TCP/143, TCP/465, TCP/993, TCP/995を塞ぎます。
ログ管理
ログローテート管理の設定は以下にあります。
/usr/local/psa/etc/logrotate.conf
/usr/local/psa/etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/
基本的には、非圧縮、週次もしくはサイズによるローテートで4世代保存となっているので、必要に応じて、圧縮+数か月or数年間保存の設定を行うとよいでしょう。
バックアップ
Pleskの「バックアップマネージャ」でドメインごとのデータのバックアップ、リストアの操作ができます。
FTPクライアントとしての設定を行うことで、他のサーバーにバックアップデータを自動転送することも可能です。
バックアップマネージャを使用せずに、独自のバックアップスクリプトを用意して、Amazon S3などのオブジェクトストレージサービスにデータを転送すると、データの安全性が高まると思います。
ソフトウェアのアップデート
yum updateコマンドで、Nginx, Apache, PHP, bind, wget, openssl, glibcなどのアップデートを行いましたが、特に問題はありませんでした。
カーネルとMySQLについては影響が大きそうで試していません。
まとめ
CentOS 6 + Plesk 11におけるサーバー各種設定のカスタマイズについてまとめました。
PleskコントロールパネルはGUIで様々な設定を行えますが、細かい設定変更にはコマンドラインでの操作が必要になる場合も多いです。
正直なところ、Webサーバーの構築に慣れている僕にとっては、Pleskがインストールされている環境の調査・カスタマイズはとても苦労しました。
工数的にも、例えばVPSサーバーやクラウドのサーバーを一から構築するのに比べると2倍ぐらいかかったと思います。
個人的には、
「Pleskを使うなら設定変更はすべてPleskコントロールパネルを使用する」
「Pleskコントロールパネルでできないカスタマイズをしたいなら、Pleskは使わない」
というポリシーとしたほうが、構築・管理コストに重複が発生せずに済んでよいのではないかと思います。
参考サイトぷれつくを見る限り、Plesk 12は、Nginx, Apacheの設定など、Pleskコントロールパネルからカスタマイズできる項目が増えているようですので、Pleskを使用するのであれば、できるだけ新しいバージョンを使うとよさそうです。
(関連記事)
・CentOS 6 + Plesk 11におけるNginxの設定カスタマイズ
https://inaba-serverdesign.jp/blog/20150216/centos6_plesk11_nginx.html
・CentOS 6 + Plesk 11におけるApacheの設定カスタマイズ
https://inaba-serverdesign.jp/blog/20150216/centos6_plesk11_apache.html