忍者ブログ

インフラ構築手順書

はじめてのインフラ、サーバ構築時に役に立つように構築手順情報をまとめました。


HOME   »  WEB構築 PHP構築手順

[PR]

広告 

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



PHPのセキュリティや運用の観点から最低限行うべき設定

広告 

PHPのセキュリティや運用の観点から最低限行うべき設定

PHPの設定をする上で、セキュリティや運用の観点から最低限行うべき設定を説明する。
なお、Apacheの設定は事前に行っているものとして、説明する。

※Apacheのインストール設定手順は、以下記事を参考に設定を行う。
 Apacheの基本設定
 Apacheの仮想ホスト設定


PHPのインストール

ここでは、DBとしてMysqlを利用し、マルチ言語対応するためmbstringを使うため、PHPモジュールとして php-mysqlとphp-mbstringを合わせてインストールする。
 # yum install php php-mysql php-mbstring

ApacheにPHPモジュールをロードする

php関連の設定がまとめられたphp.confファイルをインクルードする。
 # vi /etc/httpd/conf.d/httpd-vhosts.conf
## PHP5 ####
 Include /etc/httpd/conf.d/php.conf

PHPログ関連の設定

ログ関連の設定内容
 ・notice以外をログとして出力する (~E_NOTICEがNoticeを除外する)
  [error_reporting = E_ALL]の場合、すべてのエラーログを表示する
 ・PHPスタートアップ時のエラーを表示しない
 ・エラーを画面に表示しない
 ・エラーログを出力する
 ・エラーログはsyslogに出力する(messegsを監視対象としている場合)
 # vi /etc/php.ini
;省略
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = syslog
;省略

文字コードの設定

アプリチームに確認し、文字コード関連の設定を行う。以下は設定例である。
 # vi /etc/php.ini
[PHP]
mbstring.language               = Japanese
mbstring.internal_encoding      = UTF-8
mbstring.http_input             = auto
mbstring.http_output            = pass
mbstring.detect_order           = auto
mbstring.substitute_character   = none
default_charset = "UTF-8"
;省略

PHPセキュリティ設定

PHPセキュリティ関連の設定内容
 ・グローバル変数制限
 ・情報の隠蔽
 ・セッション関係(セッション管理をCookieのみで行う)
 # vi /etc/php.ini
;省略
register_globals = Off        
expose_php = Off         
session.use_only_cookies = 1

その他のセキュリティ関連の設定内容

 ・外部の任意のスクリプトを実行される危険性回避
  ※EC-CUBEやWordPressの一部でallow_url_fopen利用しているので注意!!
 ・SHA-1の指定に変更
 ・指定ディレクトリ以外でのphp実行制御
 # vi /etc/php.ini
;省略
allow_url_fopen = Off        
session.hash_function = 1
open_basedir = /usr/share/:/var/www/


PHPのSession設定

Linuxの場合、一つのディレクトリの配下に10000個から15000個程度のファイルを作成することが出来ますが、実際には5000個もファイルを作成するとディスクI/Oの性能が落ち、ファイル読み書きのパフォーマンスが落ちてしまいます。 大量のアクセスがあると、一つのディレクトリに大量のSESSIONファイルを作成する事になり、上記の理由から結果的にレスポンスが落ちる事に繋がってしまいます。
セッションファイルを複数階層に保存する設定
ここではセッションファイルを/var/lib/php/session以下に2階層に分けて保存する。
 # vi /etc/php.ini
session.save_path = "2;/var/lib/php/session"

SESSIONファイルを保存するディレクトリの作成
備考のcreate_dir.shというスクリプトを作成し、sessionディレクトリにサブディレクトリ作成する。
使用例:sh create_dir.sh sessionディレクトリ 階層
 # sh create_dir.sh /var/lib/php/session/ 2

備考

create_dir.sh
#! /bin/sh
#実行例
#sh mod_files.sh /var/lib/php/session 2
if test "$2" = ""; then
	echo "usage: $0 basedir depth"
	exit 1
fi

if test "$2" = "0"; then
	exit 0
fi

for i in a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9; do
	newpath="$1/$i"
	mkdir $newpath || exit 1
	sh $0 $newpath `expr $2 - 1`
done


セッションファイルの定期削除
php.iniのsession.gc_maxlifetime等でガーベッジコレクションの設定ができますが、負荷がかかる ため、ここでは下記のように30分以上更新がないファイルを10分ごとに削除する設定をします。
# crontab -e
*/10 * * * * find /var/lib/php/session -type f -mmin +30 -exec rm -f {} \;


PHPに関連する記事

Apache構築手順【基本設定】
Apache構築手順【仮想ホスト設定】
Apache構築手順【PHP設定】
Nginxでロードバランサー構築


PHPに関するおすすめ書籍

[即戦力になるための PHPシステム開発の教科書]の書籍横断比較とレビュー

即戦力になるための PHPシステム開発の教科書
著者:マッキーソフト株式会社
出版日:2012-09-26
出版社:技術評論社

[CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ]の書籍横断比較とレビュー

CakePHP2.6 ビギナーズガイド: PHPフレームワークをハックせよ! PRIMERシリーズ
著者:掌田津耶乃
出版日:2015-02-05
出版社:Tuyano-Project





拍手[0回]



Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us FC2 ニフティクリップ iza Buzzurl 


最新記事
(09/17)
(04/09)
(04/09)
(03/22)
(01/16)
(12/30)
(12/26)
(09/21)
(09/21)
(09/20)
(09/12)
(06/13)
(06/13)
(03/14)
(02/15)
(01/03)
(01/03)
(10/04)
(09/20)
(09/15)
(09/14)
(09/14)
(09/14)
(09/06)
(08/30)
最古記事
(10/29)
(10/29)
(10/29)
(10/29)
(10/29)
(04/12)
(04/12)
(06/12)
(06/12)
(06/20)
(06/22)
(07/22)
(07/22)
(07/30)
(07/30)
(08/18)
(08/18)
(08/22)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)


PR

Copyright © インフラ構築手順書 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

検索フォーム

カスタム検索

フリーエリア

ESXiの基本設定・運用設定
ESXiのSSH設定
ESXiの NTP設定
VMware ESXiでの時刻同期(NTP)ペストプラクティス
ESXiのゲストOS(仮想マシン)複製
ESXiのOVF形式で複製
異なるESXiバージョン間の複製(移行)
クローン作成後の後処理
仮想マシンのLVM追加
仮想共有ディスクファイルの作成
ESXi上でハイパーバイザーを稼動させる
パフォーマンスがでないとき確認すること


サーバ構築手順
ESXi上でRACを構築する
GFS2+DRBD構築
PaceMaker+MySQLレプリケーション構築
PaceMaker+DRBD構築
HeartBeat2+DRBD構築


Solarisの構築手順
Solarisのネットワーク設定変更
Solarisのホスト名変更
Solaris11のresolv.conf変更手順
Solaris11のHDD増設手順


AWS(Amazon Web Service)の基本設定・運用設定
S3 WEBサイトの構築
S3 WEBサイトのアクセス制限
S3 WEBサイトのリダイレクト設定


Windows Azureの基本設定・運用設定
AzureでWordpress構築
英語版Wordpressを日本語化する
AzureWebサイトの独自ドメイン設定
AzureWebサイトのモード変更
WEBアクセスログ解析ツールの比較


WordPressの基本設定・運用設定
WordPressの基本構造
WordPressのインストール手順
Wordpressマルチサイト機能
「続き読む(more)」カスタマイズ
Wordpressの独自PHP
Wordpressをサブディレクトリに移す
既存サブディレクトリをルートディレクトリとする
Wordpressが利用可能な共用ホスティング


Postfix構築
Postfixにおける暗号化したSMTP認証設定


SoftEtherVPNの構築
ESXi上のSoftEtherVPN構築
DDNSと組み合わせたSoftEtherVPNの設定


LinuxのAD連携
LinuxのActiveDirectory連携について
PAM認証でAD連携
ApacheでAD連携(LDAP認証)
ApacheでAD連携(Kerberos認証)
SAMBAで2台目DCサーバを構築
RedmineとGitのLDAP(AD)認証設定
JenkinsのLDAP(ActiveDirectory)認証設定


Redmine設定
Alminium(RedmineとGit/SVN)のインストール手順
RedmineとGitのLDAP(AD)認証設定
RedmineとGitの移行
JenkinsのLDAP(ActiveDirectory)認証設定


サーバの基本設定・運用設定
Apache
Apacheの基本設定
Apacheの仮想ホスト設定
PHPの基本設定
Nginxのロードバランサ設定
WebDAV構築手順
アンチウィルス
無償アンチウィルス(ClamAV)の導入手順
システム監視
システム監視ソフトMuninの導入手順
システム監視ソフトZabbixの導入手順
sarによるリソース使用情報取得


サーバ移行
Mysqlマイグレーション
MySQLマイグレーション時の問題点と解決策
Windows
Windows OS評価版からの移行
SQL Server評価版からの移行
クラスタソフト
クラスタソフトの比較

ツリーカテゴリ

広告ーSEO





人気ブログランキングへ
にほんブログ村 IT技術ブログ Webサイト構築へ

ブログ王ランキングに参加中!


最新トラックバック

バーコード

アフィリエイト2