ホームページ > php教程 > php手册 > WIN2000 Apache php mysql インストールおよびセキュリティ マニュアル

WIN2000 Apache php mysql インストールおよびセキュリティ マニュアル

WBOY
リリース: 2016-06-21 09:08:28
オリジナル
931 人が閲覧しました

apache|mysql|セキュリティ

この記事は、win2k プラットフォーム上に安全な Web サイトをセットアップしたい友人向けに書かれています。
必要なプログラム:

apache
http://www.apache.org/dist/httpd/binaries/win32/
apache_1.3.28-win32-x86-no_src.msi または apache_2.0.47-win32- x86- を選択します。 no_ssl.msi
はすべて問題ありません。下位バージョンのプログラムは使用しないでください。それらは欠陥があり、インターネット

php
http://cn2.php.net/get/php-4.3.3-Win32 で簡単に攻撃される可能性があります。 zip/from/a/mirror
php-4.3.3

mysql
http://www.mysql.com/get/Downloa... 5-win.zip/from/pick
mysql-4.0.15
メモ: これより前の Mysql バージョンには欠陥があるため、使用しないでください

ZendOptimizer-2[1].1.0a-Windows-i386.exe
php オプティマイザー、暗号化された php スクリプトをサポートします

MySQL-Front
1 回の実行 に基づく mysql マネージャー非常に使いやすいMSプラットフォームのGUI

phpMyAdmin-2.5.0-php.zip
PHPスクリプトに基づくMysqlマネージャー

phpencode.exe
php暗号化コンパイラ


install~
1 .Apacheをインストール
からインストールは非常に簡単です、パス~!、システム パーティションにインストールしないように注意してください
バックアップ、メンテナンス、災害復旧の点で利点があるため
インストールが d:\ に達したとします
2.
具体的なインストール手順については、phpディレクトリのinstall.txtを参照してください
なお、cgiメソッドは使用しないでください
以下は参考情報です
----------- -- ------------------------------------------------ -- ---
タイトル 2002/2/17
Windows 用 PHP の任意ファイル実行 (GIF、MP3)
概要
PHP.EXE を通じて、攻撃者は、拡張子が
であっても、PHP にあらゆるファイルを PHP ファイルとして解釈させることができます。これにより、リモート攻撃者が任意のコマンドを実行できるようになり、システムが侵害される可能性があります。
脆弱なシステム:
Windows 上の PHP バージョン 4.1.1
Windows 上の PHP バージョン 4.0.4
攻撃者は、無害なファイルをアップロードする可能性があります。 WebExplorer (またはアップロード機能を持つその他の PHP プログラム) などのアップロード システムを通じて、
ファイル (mp3、txt、または gif 拡張子付き) をアップロードし、PHP にその実行をリクエストします。 例:
ファイルをアップロードした後、「gif」 " 拡張子 (この例では huh.gif) には、次のような
PHP コードが含まれています:
#-----------
phpinfo();
?>
#- -- ---------
攻撃者は次のアドレスを入力して侵入し、PHP ファイルを
実行させることができます:
http://www.example.com/php/php.exe/UPLOAD_DIRECTORY /huh .gif
注意: php/php.exe が URL に含まれています。
追加情報
この情報は CompuMe および RootExtractor によって提供されています。
ps: 一部の最新バージョンではこの問題が発生します。 CGI を使用してインストールすることを覚えておいてください...
3. mysql をインストールします
これも非常に簡単で、具体的なプロセスはパスです
mysql のインストール後のデフォルト設定は本当に心配です
以下は元記事より引用
- -------------------------------------- ---------- ------------------------------
2002/12/21
前に書いた:どうすることもできない、人生が台無しになる 消耗して痛い~~~なのでこの記事はオリジナルでまとめたものではありません!
デフォルトでインストールされている mysql サービスの安全でない要因は次のとおりです:
1. mysql のデフォルトの認証テーブル
2. ロギング機能の欠如
3. my.ini ファイルからパスワードが漏洩する
4. サービスは次の方法ですべてのネットワーク インターフェイスにバインドされていますデフォルト
5. デフォルトのインストール パス下の Mysql ディレクトリのアクセス許可
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~~~~~~~~
1.mysql デフォルト認可テーブル
mysql 認証は mysql データベースに基づいているため、認可テーブルとも呼ばれます。すべての権限設定はここにあります。
最も重要なテーブルであるユーザー テーブルについてのみ説明します。接続を受け入れるか拒否するかを制御します。
最初に見てください
ホスト、ユーザー、パスワード、ユーザーからの削除を選択します
+----------+------+--------------- ------+----------+
| パスワード | - -------+-----------+
| 67457e226a1a15bd | |
|
| - --------+---------------+
新バージョンでは、インストール後にパスワードを設定するクイック設定画面が表示されます。
上記はユーザーテーブルの内容です(少し省略しています)何か問題があるでしょうか?
mysql の検証方法は 2 つの情報に基づいていることがわかります
1. そこから接続します
2. ユーザー名
最初のものは問題ありません、もちろんパスワードは安全でなければなりません。
記事 2: どのホストからでも、パスワードなしでユーザー root として接続でき、権限はすべての権限です。 (注: ここでの権限はグローバル権限です)
3 番目の記事はローカルホストからのもので、任意のユーザー名 (注: ユーザーは空白です。ユーザー名が必要ないという意味ではありません)、パスワードは不要で、接続できます。 、すべての権限
4 番目 任意のホスト、任意のユーザー名から接続でき、パスワードは必要なく、権限も必要ありません。
2、3、4 はすべて安全ではないことがわかります。これらを攻撃する方法についてはここでは説明しません。情報ライブラリを参照してください。
MySQL がローカル接続のみを許可する場合は、host の % と user の null (空を意味します) を削除します。
host='%'; から user=' から削除します。
最終的な user テーブルを参照してください。こんな感じ
+-----------+------+----------------------+---- --- ------+
| パスワード |
+----------+------+-------- -------+----------+
| 67457e226a1a15bd | --+-----------------+---------------+
最後に、認可テーブルを更新して有効にする必要がありますすぐに権限をフラッシュします。mysql をリモートで使用する必要がある場合は、% セグメントの root アカウントに安全なパスワードを追加する必要があります。user set password=password('youpass') where host='%'; を追加します。 youpass はパスワードです
mysql> select host,user,password,Delete_priv from user; --- ------+----------+
ユーザーのパスワード | --- -+------+-----------+
| 67457e226a1a15bd | % | 77c590fa148bc9fb |
+----------+------+-- --- --------+
より良い方法は、リモート ホストへの接続を特定のホストとして指定することです。
ホストの % を、接続を許可するホストに変更します。例:
192.168.0.%特定のサブネットを許可します
www.sandflee.net は特定のホストを許可します
アカウントのデフォルト名も懸念事項です。ブルートフォースクラッキングにつながる可能性があります
update user set user='localadmin' where host='localhost';
update user set user='remoteadmin' where host='%';
​​ 最終的なユーザーテーブルは次のようになります
mysql>ホスト、ユーザー、パスワード、ユーザーからの削除_privを選択
+----------+-------------+------------- -------+----------+
| ユーザーのパスワード |
+----------+-- --- -------+------+-----------+
| ローカルホスト | 67457e226a1a15bd | |
| リモート管理者 | 77c590fa148bc9fb | -------+---------------+
さらに詳しい情報については、Yanzi の「MySQL 中国語リファレンス マニュアル」を参照してください。
2. ロギング機能の欠如
mysql のインストールが完了すると、my.ini 設定ファイルが %SystemRoot% ディレクトリに生成されます
デフォルトの内容は次のとおりです:
———————— ———— ——————————————————
basedir=C:/mysql
#bind-address=192.168.0.1
datadir=C:/mysql/data
# language =C:/mysql/share/あなたの言語ディレクトリ
#スロークエリログ#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=C:/mysql/bin /mysqld-nt .exe
user=root
password=root
————————————————————————————————
次の点に注意してください。 log#=this
it 定義されていないため登録が解除されています。
次のような適切なパスに変更します:
log=c:/mysql/logs/mysql.log
3 つの.my.ini ファイルでパスワードが漏洩しています
my.ini の最後に次の 2 つの文があることがわかります
ユーザー=root
パスワード=root
インストール完了時に mysql が提供するクイックセットアップ機能を使用すると、(新しいバージョン) アカウントとパスワードが my.ini ファイルに書き込まれます。
これは、mysql がスタートアップ グループに書き込む winmysqladmin.exe ツールでもあり、実行時に読み取る必要があります。 mysql サービス
にいくつかの監視機能を提供します。このようにして、winmysqladmin.exe は mysql サービスのステータス情報を取得できます。
実際には、これは脆弱性ではありません。my.ini のデフォルトの権限を見てみましょう。ユーザー グループ内のユーザーが読み取ることができます。
これによりパスワードが漏洩します
解決策:
my.ini ファイルのアクセス許可をリセットします
アカウントとパスワードをリセットします
クイック設定を使用しないでください
4. サービスはデフォルトですべてのネットワーク インターフェイスにバインドされています。 is binding すべてのネットワーク インターフェイスにバインドされます。たとえば、内部ネットワーク上で実行する mysql サービスのみが必要であるが、マシンが外部ネットワーク上にインターフェイスを備えている場合、mysql もバインドされるため、不必要なトラブルが発生します。脅かす。
my.iniのこの文
#bind-address=192.168.0.1
デフォルトではログアウトされています
開いてください
ローカルでのみ使用する場合は、
bind-address=127.0.0.1に変更してください
もしそれがあれば、この場合、適切なネットワーク インターフェイスを選択する必要があります
5. デフォルトのインストール パスの Mysql ディレクトリのアクセス許可
mysql のデフォルトのインストール パスは c:\mysql ですが、これは基本的に変更するのが難しく、変更するのも面倒です。 .ini を変更する必要があります。
ただし、これには問題があります。
通常、c:\ の権限は、Everyone グループのすべての権限です。これはデフォルトです。継承により、mysql の下のデータ ディレクトリには、Everyone の group-all 権限も付与されます。これにより、ランダムアクセス、読み取り、削除が行われ、データが漏洩したり破壊される可能性があります。
mysql ディレクトリを適切で安全なアクセス許可に変更します。
終わった...
-------------------------------------------- ------ -------------------------------------------- -
ここには小さな構文エラーがあります。自分で見つけてください:)

setup~
3 構成ドキュメント
httpd.conf---apache
php.ini-----php
my.ini--- --- mysql
1.http.conf
Apache の ms バージョンには *nix のような
ユーザーおよびグループの命令がないため、
*Nix のようにサーバーの応答を iusr_name アカウントにマップすることは期待できません。 nobody なので、Apache は個人のホームページサーバーをセットアップするのには適していませんが、基本的に変更する必要があるのは次の場所です。 htdocs ディレクトリ内のすべてのファイルを削除します。cgi-bin 内のすべてのファイルを削除します。これらはテスト用であり、保持する必要はありません。 - デフォルトのホームページの名前
AccessFileName .htaccess -- ファイル名を制御します。オフにするか名前を変更することをお勧めします。Windows
ServerSignature では、「.」で始まるファイル名は許可されません -- エラー メッセージ, こうすることで、Apacheのバージョン番号が表示されなくなりますので、オフにすることをお勧めします。 ---- ------------
エイリアス/manual/ "D:/Apache/htdocs/manual/"

オプション インデックス FollowSymlinks マルチビュー
AllowOverride なし クリア
順序許可、拒否
すべてから許可

--------------------------- --------- ----------------
AddHandler cgi-script .cgi .pl --cgi をサポートする必要がある場合は、それを開く必要があります。そうでない場合は、コメントアウトします

LoadModule php4_module d:/php/sapi /php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php --php スクリプトのサポートを追加します
2.php.inf

engine = On --php のサポートをオンにします。php の動作が許可されていない場合は、エンジン = Off
safe_mode = Off --セーフ モード、オンにする必要があります。safe_mode = On
safe_mode_exec_dir = --プログラムを実行できるディレクトリを設定します。セーフモード
disable_functions = 閉じる関数を「,」で区切ります。 phpinfo 、 get_cfg_var を閉じることをお勧めします
expose_php = On ヘッダーに PHP バージョン番号が表示されないように、expose_php = Off にすることをお勧めします
display_errors =On すべてのエラー メッセージがオフになるように、display_errors =Off にすることをお勧めします
register_globals = Off 自動グローバル変数、一般的に register_globals = On にする必要がありますが、多くのセキュリティ上の問題、特に不適切に記述されたものを引き起こす可能性がありますWeb サーバーを危険にさらす可能性のある PHP スクリプト。 File_uploads = ファイルのアップロードを許可するかどうかを指定します。必要がない場合はオフにします。
allow_url_fopen = Off 機能をリモートで開くかどうかを指定します。オフにすることをお勧めします。
;extension=php_gd.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll いくつかの要件を開く サポートされているライブラリ (グラフィックス関数の使用など)
次のことが必要ですphp/extensions/php_gd.dll をシステム ディレクトリにコピーして削除します。
Apache を再起動すると使用できます
3.my.ini
上記のとおりです。
セキュリティ提案を通過し、上記の 3 つの設定の権限を設定します。ファイルをすべてのシステム権限とすべての管理者権限に設定します

4. 仮想ディレクトリのセキュリティを強化します
いくつかの重要な手順
具体的な例:
オプション インデックス
AllowOverride None
順序許可、拒否
すべてから許可

php_flag エンジン オフ 開く 0-off
php_admin_value open_basedir d:/Apache/htdocs/tools; これにより、php スクリプトが d:/Apache/htdocs/tools の下にあるファイルのみを開くように制限されます。
次のコードは役に立ちません
----------------------------------------------------- -------------------- -----------
$fd = fopen( $filename, "r" ); ($fd, filesize($filename));
echo "

"; <br>echo htmlspecialchars("$view"; <br>echo "
";
fclose( $fd );
--- -------------------- ------------------------------ ------
Apache-http 検証機能を有効にする
<ディレクトリ " d:/Apache/htdocs/home">
...
...
allowoverride authconfig


パラメータallowoverride authconfig
ここで d:/Apache/htdocs/home は、私のためにインストールされたApacheサービスのWebルートディレクトリを示していることに注意してください。デフォルトでは、allowoverrideがないようです。 authconfig パラメータ。
allowoverride authconfig パラメータの意味。
これは、ルート ディレクトリ以下のすべてのディレクトリのアクセス制御が、そのディレクトリ内の .htaccess ファイルによって設定されることを意味します。
ここで、もう少しくだらない話をします。
なぜ他のファイル名ではなく、このファイル名が .htaccess なのか。
これは AccessFileName パラメーターで定義されます。デフォルトはこれです。
AccessFileName .htaccess
必要なのは、allowoverride authconfig パラメータをクリアすることです (# を追加するか削除します)
これを行う理由
1. 面倒だと思う (すべてのディレクトリに .htaccess ファイルが必要であり、Windows システムでは「.」で始まるファイル名は許可されない)
2. あまり安全ではない (見られる可能性がある)他の人)
指定したいディレクトリを確認するには?

//検証するディレクトリパスを定義します
AuthType Basic //方法、Windowsはmd5をサポートしていないため、基本的な方法を使用してください
AuthName TEST / /表示の定義 ダイアログボックスのフィールド名
AuthUserFile d:/Apache/user //パスワードファイルを定義
ErrorDocument 401 "Error Password //検証が失敗した後に表示される内容を定義します。もちろんファイルでも構いません
require valid-ユーザー 注、ここではエラーパスワードを直接表示します。「」で始まるだけです。
は 1 つだけです。
httpd.conf の末尾に直接追加します。
Apache インストール ディレクトリの bin ディレクトリに htpasswd.exe ファイルがあります
cmd で実行してください
d:\Apache\bin>htpasswd.exe
使用法:
htpasswd [-cmdps] パスワードファイル ユーザー名
htpasswd - b [cmdps] パスワードファイル ユーザー名 パスワード

htpasswd -n[mdps] ユーザー名
htpasswd -nb[mdps] ユーザー名 パスワード
-c 新しいファイルを作成します (初めてなのでこれを使用します)。パラメータ)
-n ファイルを更新せず、結果を標準出力に表示します。 // パスワードの MD5 暗号化を強制します (デフォルト) // パスワードを暗号化します (MD5 モード) デフォルト
-d CRYPT 暗号化を強制します。 //パスワードを暗号化するために CRYPT を使用します
-p パスワードを暗号化しません (平文)。 //パスワードを暗号化しません
-s パスワードの SHA 暗号化を強制します
- b パスワードを要求するのではなく、コマンドラインからパスワードを使用します。 //対話方式
Windows、TPF、および NetWare システムでは、「-m」フラグがデフォルトで使用されます。
他のすべてのシステムでは、「-p」フラグが使用されます。おそらくうまくいきません
————————————————————————————————————————
リージ:
d :\Apache \bin>htpasswd.exe -c d:\apache\user taotao
Windows で MD5 形式を自動的に使用します
新しいパスワード: ***
新しいパスワードを再入力します: ***
ユーザー taotao のパスワードを追加します
作成は完了しました
その中で、
passwordfile は Web ディレクトリに配置すべきではないことに注意してください。パスワードは md5 されていますが、他の人によってダウンロードされるため、これは非常に愚かです
-c パラメータは作成に使用されます新しいパスワードファイル。
d:\apache\user パスは、
AuthUserFile d:/Apache/user で設定したものと一致している必要があります。
その後、Apache サービスを再起動します

httpd.conf、php.ini、my.ini を忘れずにバックアップしてください

ZendOptimizer-2[1].1.0a-Windows-i386.exe をインストールします
それは非常に簡単で、自動的に実行されますphp.ini (c:\winnt\php.ini) ファイルを変更し、次の内容を追加します:
[Zend]
zend_optimizer.optimization_level=15
zend_extension_ts="C:\Program Files\Zend\lib\ZendOptimizer.dll "

PHP オプティマイザーのインストールには多くの利点があります
PHP の実行速度が向上します
最も重要なことは、PHP スクリプトを暗号化できることです
これにより、PHP スクリプトに記述したユーザーとパスを適切に保護できます
さらに、Apache ヘッダーを変更することもできます。utraedit32 を使用して ApacheCore.dll を開きます
対応する Apache バージョン番号を探して、それを他のものに変更します。たとえば、私はそれを
2000

に変更します。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート