ホームページ php教程 php手册 PHP のサーバー側機能を構成して PHP のセキュリティを強化する

PHP のサーバー側機能を構成して PHP のセキュリティを強化する

Jun 13, 2016 pm 12:44 PM
php 強化する 安全性 サーバ 合格 構成


PHP のサーバー側機能を構成して PHP のセキュリティを強化する

by san@xfocus.org

Shaun Clowes と rfp が PHP および CGI プログラムのプログラミングをより詳しく紹介しています 問題
アプリケーションの脆弱性を介してシステムを突破する方法について、この記事では、PHP のサーバー側の機能をいくつか設定することで PHP のセキュリティを強化します。
CGI スクリプトを作成するときは、さまざまなセキュリティ問題に注意し、ユーザー入力を厳密にフィルタリングする必要があります。しかし、有名なプログラムであっても、靴を濡らさずに海岸を歩くことができたり、ゴマを失わずに食べることができるのでしょうか。 phpnuke や phpMyAdmin などは深刻な
問題を経験しており、ましてや私のようなパンクが書いたスクリプトは同様です。そこで、PHP スクリプトで重大な問題が発生したと仮定します。たとえば、少し前、
phpnuke は PHP スクリプトをアップロードできるかどうかで大きな問題を抱えていました。スクリプト内でそのような問題が発生しないようにサーバーを設定するにはどうすればよいでしょうか。
システムを突破します。

1. コンパイル時に既知の脆弱性へのパッチ適用に注意してください
 4.0.5 以降、PHP のメール関数には 5 番目のパラメータが追加されましたが、PHP アプリケーションが問題を突破できるように適切にフィルタリングされていません。
safe_mode の制限とコマンドの実行。したがって、4.0.5 および 4.0.6 を使用する場合は、コンパイル前に php ソース コード パッケージ内の
ext/standard/mail.c ファイルを変更して、メール関数の 5 番目のパラメーターを無効にするか、シェル文字をフィルターする必要があります。 mail.c ファイルの 152 行目
、これは次の行です:
if (extra_cmd != NULL) {
 の後に extra_cmd=NULL または extra_cmd = php_escape_shell_cmd(extra_cmd) ;次に、php
をコンパイルします。次に、この脆弱性を修正します。

2. php.ini 設定ファイルを変更します
PHP ディストリビューション バージョンの php.ini-dist に基づいて変更を加えます。
1)エラー処理とログ
「エラー処理とログ」セクションでいくつかの設定を行うことができます。最初の検索:
display_errors = On
php はデフォルトでエラー メッセージ表示をオンにします。これを次のように変更します。
display_errors = Off
エラー表示をオフにした後、PHP関数実行エラー情報はユーザーに表示されなくなります。これにより、攻撃者は、少なくともブラック ボックス検出の原因として、スクリプトの物理的な場所やその他の有用な情報を知ることができなくなります。特定の障害物
。これらのエラー メッセージは、指定されたファイルに書き込んでから、次のように変更できます:
log_errors = オン
指定されたファイルで、次の行を見つけます。
;error_log = filename
前のコメントを削除し、ファイル名を /usr/local/apache/logs などの指定したファイルに変更します。 /php_error.log
error_log = /usr/local/apache/logs/php_error.log
このようにして、すべてのエラーが php_error.log ファイルに書き込まれます。
2)セーフモード
PHP のセーフモード関数は、多くの機能を制限または無効にし、PHP のセキュリティ問題を大幅に解決します。
セーフ モード セクションを見つけます:
safe_mode = Off
に変更されました:
safe_mode = On
これにより、safe_mode 機能がオンになります。 shell_exec() や `` など、システムコマンドを実行できる一部の関数は禁止され、exec()、system()、passthru()、popen() などの他の実行関数は制限されます。 指定されたディレクトリ内のプログラムを実行します。
safe_mode_exec_dir によって。いくつかのコマンドまたはプログラムを実際に実行したい場合は、以下を見つけます:
safe_mode_exec_dir =
実行するプログラムのパスを指定します。たとえば、
safe_mode_exec_dir = /usr/ local/php/ exec
次に、使用するプログラムを /usr/local/php/exec ディレクトリにコピーします。これにより、上記のような制限された機能は
 ディレクトリ内のプログラムも実行できるようになります。 。
セーフ モードでの制限された機能の詳細については、メインの PHP サイトの手順を参照してください:
http://www.php.net/manual/en/features.safe-mode。 php
3) disable_functions
一部の関数の有害性が不明で使用しない場合は、単にこれらの関数を無効にします。次の行を見つけます:
disable_functions =
無効にする機能を「=」の後に追加し、複数の機能を「,」で区切ります。

3. httpd.conf を変更します
php スクリプト プログラムの動作を Web ディレクトリ内でのみ許可する場合は、httpd.conf ファイルを変更して php の動作パスを制限することもできます。たとえば、
Web ディレクトリが /usr/local/apache/htdocs の場合、次の行を httpd.conf に追加します。

 php_admin_value open_basedir /usr/local/apache/htdocs

このように、スクリプトが /usr/local/apache/htdocs 以外のファイルを読み込もうとした場合、それは許可されません。エラー表示がオンになっている場合
 次のようなエラーが表示されます:
 警告: ファイルが
の間違ったディレクトリにあります /usr/local/apache/htdocs/ open.php の 4 行目
お待ちください。

4. PHP コードのコンパイル
Zend は PHP に多大な貢献をしており、php4 のエンジンは Zend に基づいており、ZendOptimizer と ZendEncode
およびその他の多くの PHP 拡張機能も開発しました。コンポーネント。オプティマイザー ZendOptimizer は、http://www.zend.com に登録するだけで無料で入手できます。
以下は、4.0.5 および 4.0.6 のファイル名です。
ZendOptimizer-1.1.0-PHP_4.0.5-FreeBSD4.0-i386.tar.gz ZendOptimizer-1.1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz
ZendOptimizer-1.1 。 0-PHP_4.0.5-Solaris-sparc.tar.gz
ZendOptimizer-1.1.0-PHP_4.0.5-Windows-i386.zip
オプティマイザーのインストールは非常に便利で、詳細な手順が記載されていますパッケージにイラストが載っています。 UNIX バージョンを例として、オペレーティング システムを明確に確認し、パッケージ内の
ZendOptimizer.so ファイルを /usr/local/lib の下にあると想定してディレクトリに抽出します。 php.ini に次の 2 つの文を追加します。
zend_optimizer.optimization_level=15
zend_extension="/usr/local/lib/ZendOptimizer.so"
以上です。 phpinfo() を使用して、Zend アイコンの左側に次のテキストを表示します:
Zend Optimizer v1.1.0、著作権 (c) 1998-2000、Zend Technologies による
これで、オプティマイザは無事にマウントされました。
ただし、コンパイラ ZendEncode は無料ではありません。これは http://www.PHPease.com の Ma Yong によって設計されたコンパイラ シェルです。
商用目的で使用する場合は、http: Contact に問い合わせてください。 //www.zend.com でライセンス契約を取得します。
PHP スクリプトがコンパイルされると、スクリプト ファイルでは文字化けが発生するだけで、攻撃者がサーバー上のスクリプト プログラムをさらに分析できなくなります。 このスクリプトはもともと PHP で書かれています。mysql パスワードなど、スクリプト内に平文で保存されたパスワードも機密として保持されます。ただし、サーバー上でスクリプトを変更するのは面倒です
。ローカルで変更してからアップロードすることをお勧めします。

5. ファイルおよびディレクトリの権限設定
アップロードディレクトリを除き、Web ディレクトリ内の他のディレクトリおよびファイルに対する権限は、nobody ユーザーに書き込み権限を与えないようにする必要があります。そうしないと、攻撃者がホームページ ファイルを
変更する可能性があるため、Web ディレクトリのアクセス許可を適切に設定する必要があります。
また、セーフモードでファイルを読み取る機能は、読み取りファイルの所有者に制限されているため、php スクリプトの所有者は root であってはなりません。
現在実行中のスクリプトの所有者は、読み取ります。そうでない場合、エラー表示がオンになっていると、次のようなエラーが表示されます:
警告: セーフ モード制限が有効です。uid が 500 のスクリプトは、/etc にアクセスできません。 /usr/local/apache/htdocs/open.php の uid 0 が所有する /passwd
行 3
この方法で、/etc/passwd などの多くのシステム ファイルが読み取られるのを防ぐことができます。 、など。
アップロード ディレクトリとアップロード スクリプトの所有者も同じに設定する必要があります。そうしないと、セーフ モードでエラーが発生します。

6. Mysql の起動権限の設定
Mysql は root で起動しないように注意してください。別の mysqladm ユーザーを作成するのが最善です。 /etc/rc.local などのシステムの起動スクリプトに次の文を追加できます:
su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"
Thisシステムの再起動後、mysql プロセスが mysqladmin ユーザーとして自動的に開始されます。

7. ログ ファイルとアップロード ディレクトリの確認
このような大きなログ ファイルから攻撃の痕跡を見つけるのは、干し草の山から針を探すようなものです。そしてそれは存在しないかもしれない。
Web によってアップロードされたディレクトリ内のファイルも頻繁にチェックする必要があります。プログラムに問題があり、ユーザーが実行スクリプト
スクリプトなどの違法なファイルをアップロードした可能性があります。

8. オペレーティング システム自体のパッチ
同様に、システム内の既知の脆弱性にパッチを適用することは、システム管理者の最も基本的な責任であり、最後の防御線でもあります。

上記の設定後は、難攻不落とは言えませんが、PHP スクリプト プログラム
が重大な問題を抱えている場合でも、攻撃者のテストにかなりの問題を引き起こしました。脆弱性のため、攻撃者はそれを実際に破壊することはできません。
もっと奇妙で倒錯的な設定方法がある場合は、共有していただければ幸いです;) (出典: viphot)

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles