以前、「VPSを借りたら真っ先にやるべきセキュリティ対策」をブログに書いた通り、新規でVPSサーバを借りた状態では脆弱性があるので、真っ先にセキュリティ設定を行うことが重要です。次にApacheやMySQLなどのミドルウェア設定となりますが、Webサーバは、複数のスタッフや会社がアクセスして共同で開発・運用を行う事が多いので、利便性を高めるにはアカウント設定やディレクトリのパーミション設定等にもひと工夫必要です。

以下に複数の担当者が使用するWebサーバ構築において設定した方が良いことをまとめました。

  1. 共通グループを作成して関係者アカウントを所属させる
    # groupadd workgroup
    # vi  /etc/group
    workgroup:x:600:wuser1, wuser2

  2. FTPを使用する場合、FTPサーバのマスク値を002に設定する
    # vi /etc/vsftpd/vsftpd.conf
    local_umask=022 → 002
    # (vsftpdの再起動)
    FTPでファイルをUPした際パーミションが自動的に664になり、グループでの更新が可能になります。

  3. FTPユーザのアクセス範囲を制限する。
    コンテンツ更新などに限定したアカウントの場合、HTMLが格納されているドキュメントルートより上位のフォルダにアクセスする必要が無い場合はchrootを設定します。
    # vi /etc/vsftpd/vsftpd.conf
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    # vi /etc/vsftpd/chroot_list
    wuser2 (制限したいアカウント名を列挙)
    # (vsftpdの再起動)
    # vi /etc/passwd
    wuser2:x:602:602::/var/www/html/ir:/bin/bash (IRフォルダしか見えなくなります)

     
  4. 各ユーザの.bashrcファイルにマスク値を設定する
    # cd ~wuser1
    # vi .bashrc
    umask 002
    SSHでログインしてファイルを作成した際、グループでの更新可能なパーミションになります。

  5. ドキュメントルートフォルダのグループ設定
    # cd /var/www
    # chgrp workgroup html
    グループ所属ユーザによるファイル更新を可能にします。

  6. ドキュメントルートフォルダのパーミション設定
    # cd /var/www
    # chmod 2775 html
    ファイルやフォルダを作成した際にグループが自動的に継承されるようになります。

  7. MT(MovableType)への配慮
    CMSとしてMTが使用されるケースが多くありますが、生成されるHTMLのファイル権限はWebサーバを実行している"apache"になります。その為、apacheユーザによるファイル操作を許可するため、強引にパーミションを777にしたり666にしている運用が多いようですが、あまり安全な状態とは言えません。そこでapacheユーザを共通グループに所属させることによってファイル更新が可能になると思います。
    # vi /etc/group
    workgroup:x:500:wuser1, wuser2, apache