Shaun Clowes と rfp は、プログラミング プロセス中に PHP および CGI プログラムが遭遇する問題と、アプリケーションの脆弱性を通じてシステムを突破する方法について詳しく紹介しました。この記事では、PHP の
サーバー側機能のいくつかについて説明します。 PHP のセキュリティを設定および強化します。 CGI スクリプトを作成するときは、さまざまなセキュリティ問題に注意し、ユーザー入力を厳密にフィルタリングする必要があります。しかし、どうすれば靴を濡らさずに海岸を歩くことができるのでしょうか。私のようなギャングが書いたスクリプトは言うまでもなく、phpnuke、phpMyAdmin、その他のプログラムには深刻な問題があります。そこで、php スクリプトで重大な問題が発生したと仮定します。たとえば、少し前に、phpnuke で php スクリプトのアップロードに大きな問題が発生しました。そのような問題が発生した場合、スクリプトがシステムを突破しないようにサーバーを設定するにはどうすればよいでしょうか。
1. コンパイル時に既知の脆弱性のパッチに注意してください
4.0.5 以降、PHP のメール関数には 5 番目のパラメーターが追加されましたが、これは適切にフィルタリングされないため、PHP アプリケーションはセーフモードの制限を突破できます。したがって、4.0.5 と 4.0.6 を使用する場合は、コンパイルする前に、php ソース コード パッケージ内の ext/standard/mail.c ファイルを変更して、mail 関数の 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 = Off
に変更します。
log_errors = On
次に、ファイルを指定して、次の行を見つけます。 ;error_log = filename
前のコメントを削除し、ファイル名を指定したファイル (例:
/usr/local/apache/logs/php_error.log) に変更します
error_log = /usr/local/apache/logs/php_error.log
このようにして、すべてのエラーが php_error.log ファイルに書き込まれます。
2)セーフモード
phpのsafe_mode関数は、多くの機能を制限または無効にし、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 Web サイトの手順を参照してください:
[url]http://www.php.net/manual/en/features.safe-mode.php[/url ]
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 は、[url]http://www.zend.com[/url] ].1.0-PHP_4.0.5-FreeBSD4.0-i386.tar.gz
ZendOptimizer-1 に登録するだけで無料で使用できます。 [1].1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz
ZendOptimizer-1[1].1.0-PHP_4。0.5-Solaris-sparc.tar.gz
ZendOptimizer-1[1].1.0-PHP_4。 0.5-Windows-i386.zip
オプティマイザーのインストールは非常に便利で、パッケージには詳細な手順が記載されています。 UNIX バージョンを例として、オペレーティング システムを明確に確認し、パッケージ内の ZendOptimizer.so ファイルをディレクトリに抽出します (/usr/local/lib であると想定) 2 つの文を php.ini に追加します:
zend_optimizer.optimization_level=。 15
zend_extension="/usr/local/lib/ZendOptimizer.so"
以上です。 phpinfo() を使用して、Zend アイコンの左側に次のテキストを表示します。
with Zend Optimizer v1.1.0, Copyright (c) 1998-2000, by Zend Technologies
これで、オプティマイザーは正常に接続されました。
しかし、コンパイラ ZendEncode は無料ではありません。これは Ma Yong によって設計された [url]http://www.PHPease.com[/url]... Mi Jiantao の Kangmo胗?/a > [url]http: //www.zend.com[/url] ライセンス契約を取得するには、お問い合わせください。
PHP スクリプトがコンパイルされると、スクリプトの実行速度が大幅に向上します。スクリプト ファイルでは文字化けが確認されるだけで、攻撃者がサーバー上のスクリプト プログラムや元々のパスワードをさらに分析することができなくなります。 PHP スクリプトにクリア テキストで保存された情報 (mysql パスワードなど) も失われます。ただし、サーバー側でスクリプトを変更するのは面倒なので、ローカルで変更してからアップロードする方が良いでしょう。
5. ファイルとディレクトリの権限設定
アップロードディレクトリを除き、Webディレクトリ内の他のディレクトリとファイルの権限は、nobodyユーザーに書き込み権限を与えてはなりません。そうしないと、攻撃者がホームページ ファイルを変更する可能性があるため、Web ディレクトリのアクセス許可を適切に設定する必要があります。また、php スクリプトの所有者は root であってはなりません。セーフモードでのファイルの読み取り機能は、読み取りファイルの所有者が現在実行中のスクリプトの所有者と同じである必要があるためです。そうしないとエラーが表示されます。次のようなエラーが表示されます:
警告: セーフ モード制限が有効です。uid が 500 のスクリプトは、/usr/local/apache の uid 0 が所有する /etc/passwd にアクセスできません。 3 行目の /htdocs/open.php
この方法で、/etc/passwd などの多くのシステム ファイルが読み取られるのを防ぐことができます。
アップロード ディレクトリとアップロード スクリプトの所有者も同じに設定する必要があります。そうしないと、safe_mode でエラーが発生します。
6. Mysql の起動許可設定
Mysql は root で起動しないように注意してください。別の mysqladm ユーザーを作成するのが最善です。 /etc/rc.local のような文をシステム起動スクリプトに追加できます:
su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"
このようにして、mysqladmin は次のようになります。システムの再起動後に自動的に使用されます。 ユーザーが mysql プロセスを開始します。
7. ログ ファイルとアップロード ディレクトリの確認と
ログの表示は、このような大きなログ ファイルから攻撃の痕跡を見つけるのと大きく関係しており、干し草の山から針を探すようなものです。 1つ。 Web によってアップロードされたディレクトリ内のファイルも頻繁にチェックする必要があります。プログラムに問題があり、ユーザーがスクリプトの実行など、違法なファイルをアップロードした可能性があります。
8. オペレーティング システム自体のパッチ
同様に、システム内の既知の脆弱性にパッチを適用することは、システム管理者の最も基本的な責任であり、最後の防御線でもあります。
上記の設定後は、難攻不落とは言えませんが、PHPスクリプトプログラムに重大な脆弱性があったとしても、攻撃者のテストにある程度の支障をきたすことはありません。実際に損害を与える可能性があります。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6
ビジュアル Web 開発ツール
