[ホスティング] 自力でメールサーバーを運営したくない理由

DigitalOceanのスタッフが書いた記事。クラウドホスティング会社のスタッフがそこまで言うか、と思わないでもないけれど、素人仕立てのメールサーバーが濫立されたらサポートだって大変だろうし。言ってることは的を凍てると思う。僕も自力でメールサーバーを運営するのは諦めたよ。

Why You May Not Want To Run Your Own Mail Server | DigitalOcean
https://www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run-your-own-mail-server

[ホスティング] DNSに関する基本知識

Google Apps 管理者ヘルプにDNSに関する解説コーナーあり。初心者向けに丁寧に説明してあって、自分にとって役立ちそうだったので覚え書きリンク。

DNS レコード – Google Apps 管理者 ヘルプ
https://support.google.com/a/topic/2716885?hl=ja&ref_topic=2426592

オンラインツールとしてブラウザから実行できるdigも提供されている。ちょっとしたときに便利。

Dig (DNS lookup)
https://toolbox.googleapps.com/apps/dig/

[ホスティング] CentOSにPHP5.6をインストールする (CentOS 7.1)

デフォルトのリポジトリでPHPをインストールすると5.4が入る。

epelとremiを追加する。

PHP 5.6をインストールする。

確認。

参考サイト

CentOSにPHP5.6をインストール – Qiita
http://qiita.com/pakiln/items/645e8a97cde46b59f9f8

[Apache] バーチャルホスト設定の参考サイト

公式ドキュメント

Apache バーチャルホスト説明書 – Apache HTTP サーバ バージョン 2.4
http://httpd.apache.org/docs/2.4/ja/vhosts/

Apache の IP ベースのバーチャルホストサポート – Apache HTTP サーバ バージョン 2.4
http://httpd.apache.org/docs/2.4/ja/vhosts/ip-based.html

名前ベースのバーチャルホスト – Apache HTTP サーバ バージョン 2.4
http://httpd.apache.org/docs/2.4/ja/vhosts/name-based.html

解説記事

以下は古い記事だけど(執筆2000年~2002年) よくまとまってる。

ApacheによるWebサーバ構築(8):バーチャルホストによる複数サイトの同時運用 (1/2) – @IT
http://www.atmarkit.co.jp/ait/articles/0108/28/news001.html

「ApacheによるWebサーバ構築」最新記事一覧 – ITmedia Keywords
http://www.atmarkit.co.jp/ait/kw/apache_webserver_kouchiku.html

[Apache] 名前ベースのバーチャルホストでIPアドレスによるアクセスを除外する

名前ベースのバーチャルホストでは、扱うホストそれぞれに対して<VirtualHost>ブロックを記述し、リストの最初のバーチャルホストがデフォルトのバーチャルホストとなる。IPアドレスでアクセスされた場合には一致するホスト名が見つからないため、デフォルトのバーチャルホストが使われる。この仕組みを利用して、デフォルトのバーチャルホストを例えば以下のように記述しておけば、IPアドレスでアクセスされた場合には外部サイトへ強制的にジャンプさせることが可能になる。

公式ドキュメントにも説明がある。

リクエストが来ると、サーバはまず最初に <NameVirtualHost> にマッチする IP アドレスかどうかをチェックします。マッチすれば マッチした IP アドレスの <VirtualHost> のそれぞれのセクションの中から ServerName か ServerAlias に要求されたホスト名があるか探します。 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト が見つからなければ、マッチした IP アドレスの リストの最初にあるバーチャルホスト が使われます。

結果として、リストの最初のバーチャルホストが デフォルト の バーチャルホストになります。IP アドレスが NameVirtualHost ディレクティブにマッチした場合は、メインのサーバ の DocumentRoot は決して使われません どのバーチャルホストにもマッチしないリクエストに対して、 特別な設定をしたいのであれば、設定ファイル中の最初の <VirtualHost> コンテナにそれを記述してください。

名前ベースのバーチャルホスト – Apache HTTP サーバ バージョン 2.4
http://httpd.apache.org/docs/2.4/ja/vhosts/name-based.html

[Unix] cronの設定参考サイト

crontab(cron)設定確認方法 | server-memo.net
http://www.server-memo.net/tips/crontabfile.html

crontabの書き方 | server-memo.net
http://www.server-memo.net/tips/crontab.html

/etc/crontabと/etc/cron.d設定ファイルの書き方 | server-memo.net
http://www.server-memo.net/tips/etc-crontab.html

第25回 cron周りのベストプラクティス(1):Perl Hackers Hub|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/perl-hackers-hub/002501

第25回 cron周りのベストプラクティス(2):Perl Hackers Hub|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/perl-hackers-hub/002502

cronジョブをPHPで書くためのヒント

コマンドラインでPHPを使うときの11のTips | Suinasia
http://suin.asia/2011/04/03/command_line_php_11_tips

[Unix] シェル環境でUUID値を生成する

Visual StudioのGUIDGENみたいなツールがないかと探したらあったので覚え書き。

参考サイト

Man page of UUIDGEN
https://linuxjm.osdn.jp/html/e2fsprogs/man1/uuidgen.1.html

[Unix] 特定ディレクトリを複数ユーザで作業できるようにする

ウェブサーバーの設定でちょっとハマッたので覚え書き

条件

  • ウェブサーバーはユーザapacheで実行される
  • ユーザapacheはグループapacheに属する
  • ログインして作業するのはユーザsuzukiである
  • ユーザsuzukiはグループsuzukiとグループwheelに属する

問題点

ウェブページを配置するディレクトリ/var/wwwに関して

  • 所有者をapacheにするとsuzukiは操作できなくなる
  • 所有者をsuzukiにするとウェブサーバーから操作できなくなる

両方のユーザから操作できるディレクトリはどうやって設定するべきか?

解決法

ユーザsuzukiにグループapacheを追加

/var/wwwの所有者をapache、所有グループをapacheに変更

/var/wwwのパーミッションを775に変更 (グループに読み書き権限を与える)

/var/wwwにSGIDを付与する

umaskが002になっていることを確認する(なっていなければ、ログインスクリプトなどに設定する)。

以上の設定により、以降に作成されるサブディレクトリやファイルの所有グループは全てapacheとなるため、wwwディレクトリ以下はsuzukiとapacheの両方で問題なく操作できるようになる。

参考サイト

Linux|共同作業用のグループとパーミッション設定方法(UGP) | blog onk
http://blog.onk164.net/archives/272.html

Linux – グループ開発時の権限設定 – Qiita
http://qiita.com/soramugi/items/53478cbee857815c4a37

SGID(Set Group ID) – 特殊なアクセス権
http://kazmax.zpp.jp/linux_beginner/setgroupid.html

Linuxコマンド【 groups 】ユーザーの所属グループを表示 – Linux入門 – Webkaru
http://webkaru.net/linux/groups-command/

[MODx] ページにSPAMリンクを埋め込むマルウェア

長らく運営しているMODxベースのサイトがマルウェアに感染していた。見つけたのはホント偶然で、何気なくブラウザでページソースを表示してみたら、ページ末尾にSPAMリンクらしきものが埋め込まれいるのを発見。以前にも感染したことがあって、そのときはGoogleからのメールで知らされた。2度目となるとさすがにショックは隠しきれない。ネットを検索したらドンピシャの事例を見つけたので、それに倣って対処する。

MODxのバージョン

MODx Evolution 1.0.15。これは現時点の最新版。だけど、最新版がそう易々とマルウェアに感染するとは思えないので、もしかして以前に感染したときに駆除しきれずに残っていたのかも。以前の対処ではMODxを最新版にアップグレードしたんだけど、もしマルウェアがDBに仕込まれていたとしたら、駆除しきれずに残っていた可能性もある。

症状

MODxが生成したページの末尾に以下のようなSPAMリンクが埋め込まれる。

原因

マルウェアの挙動をするプラグインが仕込まれていた。DBのmodx_site_pluginsテーブルに追加されている「Quick ManagerManager」というプラグインがそれ。

対処

  1. データベースから該当プラグインのレコードを削除する。
  2. assets/cache/のコードをオリジナルに戻す (マルウェアによって書き換えられているため)

参考サイト

MODx Evolution: removing spam links | Dae’s blog
http://dae.me/blog/1697/modx-evolution-removing-spam-links/