バカンス駆動開発

この前バカンスって言ったら「古っ」って言われました

web開発のためのapacheやコンテンツディレクトリのパーミッション関連まとめ

apacheを安全に動かすために

// apacheの設定ファイル内にapacheの実行ユーザーを
// 指定している項目があるのでそれを確認
 
# vi /etc/httpd/conf/httpd.conf

// apacheの実行ユーザーをapache:apacheに指定
User apache
Group apache

// httpdを再起動
# /etc/rc.d/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

// コンテンツディレクトリの所有者と所有グループをapacheにする
// chownの-Rオプションは指定ディレクトリ以下の全てのディレクトリとファイルを含める
# chown -R apache:apache /home/httpd/html

// 今後コンテンツディレクトリ以下に作成されるファイルの所有グループをapacheに固定する
// 方法としてはSGIDを仕様する。SGIDについては参考の3を見てね。
# chmod -R 2770 /home/httpd/html/

// コンテンツディレクトリ以下のディレクトリのパーミッションを770、
// ファイルのパーミッションを660にしてその他のユーザーがアクセス出来ないようにする
# find /home/httpd/html -type d -exec chmod 770 {} \;
# find /home/httpd/html -type f -exec chmod 660 {} \;

// 最後にweb開発用ユーザー(webdev)をapacheグループに入れる
// 以後、wevdevユーザーを使って開発を行う
# usermod -g apache webdev

ファイルをアップロードするスクリプトを使用する場合、 ファイルの保存場所の所有者をapache、所有グループをapacheにする。

# chown apache:apache /var/uploads
# chmod 755 /var/uploads

httpdの実行ユーザーを独自に作成して(上記ではapache)、web公開のために必要なディレクトリやファイル以外へのapacheの権限をきちんと制限することで、悪意のスクリプトが放り込まれてもwebサーバーの権限を絞っているので被害を抑えれる可能性が増します。

参考

  1. httpd.conf の設定
  2. Apacheのセキュリティ
  3. SGID(Set Group ID) - 特殊なアクセス権