UNIX/ServerSoft/Apache
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-Apache全般情報。現在の主流は1.3と2.2系
#contents
*基本情報 [#mc9886f1]
**バージョン毎の特徴 [#e6d442f0]
-1.3.x
2010年1月でついに新規リリース停止。2007年あたりからバイナ...
-2.0.x
スレッドを使えるようになったが、実際にはこれまでと同じプ...
-2.2.x
最新バージョンだが、すでにFedoraや比較的安定志向のVineで...
-2.4系
**設定ファイルの場所 [#q3373e35]
たいていのOSにはバイナリパッケージも用意されていてその場...
|RedHat系|/etc/httpd/conf|
|Debian系|/etc/apache/conf|
*内部IP対応 [#x5a8934b]
-private IPを別のログに出したい
SetEnvIf Remote_Addr 192.168.1. no_log
CustomLog /var/log/httpd/access_log common env=!no_log
-private IPならカスタムヘッダーをリクエストヘッダーに追加
SetEnvIf Remote_Addr 192.168.1. no_log
RequestHeader add MyHeader "%D %t mytext" env=no_log
*DOS対策 [#o905c9fa]
+mod_evasive
+mod_dosdetector
+mod_limitipconn
+fail2 ban
**mod_evasive [#gd9023e2]
-yumがあり導入が簡単
-ブラックリストは設定できない。
-レスポンスは403固定
-プロセス単位で見ているので、mod_dosdetectorに比べると精...
yum search mod_evasive --enablerepo=epel
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 30
# DOSEmailNotify "-s 'DoS Alert' hoge@example.com"
DOSLogDir "/var/tmp/"
# DOSWhitelist 127.0.0.1
# DOSWhitelist 192.168.1.*
</IfModule>
***パラメータの意味 [#iaf7c522]
上記の例だと同一ページに1秒間5アクセス、もしくは同一サ...
|DOSHashTableSize|内部のメモリ、小さいと記憶できるIPが少...
|DOSPageCount|一つのページに対する閾値|
|DOSSiteCount|サイト全体に対する閾値|
|DOSPageInterval|一つのページに対するDOSと判定する計測時間|
|DOSSiteInterval|サイト全体に対する計測時間|
|DOSSystemCommand|OSコマンドを実施できる。内部での通知に...
|DOSWhitelist|DOS検地除外IPなど|
**mod_dosdetector [#fe170d82]
-はてなの人が作成。
-こちらはコンパイル必要である。httpd-devel,gccが必要。
-forkバージョンもあり、ホワイトリスト対応
-Apache2.4系でコンパイルする場合はパッチ必要
***コンパイル [#pb5e3d54]
sudo yum install -y httpd-devel gcc
wget http://downloads.sourceforge.net/project/moddosdete...
tar xvzf mod_dosdetector-0.2.tar.gz
cd mod_dosdetector-0.2/
make
make install
***設定 [#jdb142fa]
-make installするとhttpd.confにモジュール有効化の記載がさ...
-直接エラーを返すことはできず、あくまで環境変数をセットす...
DoSDetection On
DoSPeriod 10
DoSThreshold 10
DoSHardThreshold 20
DoSBanPeriod 15
DoSTableSize 10
DoSIgnoreContentType image/*
RewriteEngine on
RewriteCond %{ENV:SuspectHardDoS} .+
RewriteRule .* - [R=503,L]
**mod_limitipconn [#bbedb89b]
*コンパイル [#k538e786]
**2.0.x系 [#i526c73c]
./configure --enable-mods-shared=all --enable-shared=yes...
※SSLを有効にした場合opensslのライブラリが必要
再コンパイル時の注意./configure でやるとLoadModule一切な...
そのあと--enable-mods-shared=allしてもhttpd.confはそのま...
いったん消してmake installする
-成功事例
--Vine2.6r4,3.0
--MiracleLinux2.1,3
--RedHatLinux8.0,9,3
--CentOS3.4
**2.2.x系 [#p945c70b]
./configure --prefix=/usr/local/apache22 --enable-mods-s...
**[[mod_sslを静的に組み込む:http://www.stackasterisk.jp/t...
**PHP [#w6eb0f41]
LoadModuleは自動で入る。残りはhttpd.confに以下の設定をする
# for PHP
AddType application/x-httpd-php .php
***PHP4.x [#g4cd15b8]
コンパイルにbison,flex必要gnuからとってきて、bison,flex...
今回はPostgresを有効にしてコンパイル
./configure --with-apxs2=/usr/local/apache2/bin/apxs --w...
PostgresもMYSQLも入ってれば以下でOK(MiracleLinux3.0 フ...
./configure --with-apxs2=/usr/local/apache2/bin/apxs --w...
***PHP5.x [#b3734f30]
flex,libxml-devel,libxml2-devel,postgresql-devel必要
./configure --with-apxs2=/usr/local/apache2/bin/apxs --...
*Apacheの動作モード [#k329f1f0]
preforkとworkerとがありApache2.0より追加されたスレッドで...
ps -ef | grep apache
*httpd.confの設定 [#i226af0b]
**インストール後のtodo [#td7a690d]
実行ユーザーはwwwにする
groupadd www
useradd -g www -s /sbin/nologin www
+AddDefaultCharSetコメントアウト(2.0.53より削除されている)
+LanguagePriority ja
+User www
+Group www
実行時のバージョンを隠す
ServerSignature Off
-[[NameVirtualHost:http://www.ns-labs.com/linux/tsubo5.ht...
**LocationとDirectoryの使い分け [#u6f7d664]
Locationはファイルシステムの外にあるものを設定するときに...
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168.0.1
</Location>
**ユーザーディレクトリ使用可能にする [#td7b9ca2]
rootでchmod 751 username
**CGIディレクトリ [#e1e92006]
<Directory /home/httpd/cgi-bin>
Options ExecCGI
</Directory>
CGI実行は
httpdの実行者がapacheユーザーとなるので755にしないと500...
#For UserDir CGI
ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.+) /home/...
<Directory /home/*/cgi-bin/>
Options ExecCGI
AddHandler cgi-script .cgi
</Directory>
**ログの設定 [#q6aa89b3]
***ログ設定の基本commonとcombined [#g7843ad0]
|combined|LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Refere...
|common|LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common|
+リモートホスト
+認証領域
+認証ユーザー
+時間
+リクエストの最初の行
+ステータス
+送信バイト
+リファラー
+UA
***ワームログの除去と家庭内アクセス(192.168.1.0/24)を別の...
#Log setting
SetEnvIf Remote_Addr 192.168.1. homelog nolog
SetEnvIf Request_URI "default.ida" wormlog nolog
SetEnvIf Request_URI "root.exe" wormlog nolog
SetEnvIf Request_URI "cmd.exe" wormlog nolog
SetEnvIf Request_URI "Admin.dll" wormlog nolog
SetEnvIf Request_Method "(GET)|(POST)|(PUT)|(DELETE)|(HE...
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(swf)$" ...
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\"...
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/home_log common env=homelog
CustomLog logs/worm_log common env=wormlog
CustomLog logs/access_log combined env=!nolog
**SSLの設定 [#r55d5b05]
LoadModule ssl_module modules/mod_ssl.so
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLSessionCache shm:/var/cache/ssl_gcache_data(524288)
<VirtualHost _default_:443>
DocumentRoot /usr/local/apache2/htdocs
SSLEngine on
SSLCertificateFile conf/ssl/server.crt
SSLCertificateKeyFile conf/ssl/server.key
<Files ~ "\.(cgi|shtml)$">
SSLOptions +StdEnvVars
</Files>
<Directory /home/httpd/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-s...
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
**SSIの利用 [#g941a4c6]
<Directory "xxx">
Options Includes or IncludesNoExec
AddHandler server-parsed .shtml
AddType text/html .shtml
</Directory>
上記設定でxxxディレクトリ以下で.shtmlのみ利用可能になる
**リバースプロキシ [#i610af17]
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#Proxy
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /tu/ http://192.168.1.78/
ProxyPassReverse /tu/ http://192.168.1.78/
-SSLに対してリバースプロキシをする場合は下記を追加
SSLProxyEngine On
**WebDAVの設定 [#y3e36cee]
1.3系は日本語問題ありなのでできれば2.0系で運用すべし
+mod_dav.soをインストール
+httpd.confに以下のように追加
**Windowsで2.0とjkで連携 [#p0404a8a]
mod_jk.soはバイナリを入れる。configの設定はlinuxとまった...
*ワンテク [#pabebdbe]
|BASIC認証回避|http://id:pass@URL/|
**コマンドラインログ解析 [#rb50316c]
awk -F " " '{print $1}' access_log | uniq
-Fの後がデリミター。ここではスペースを指定している。さら...
awk -F " " '{print $1}' access_log | sort | uniq -c | ...
-応用編。IP毎にアクセス数を算出する。
*利用しているモジュール解説 [#td8b003f]
**mod_rewrite [#ga8cd507]
URL書き換えできるモジュール。ローカルアドレスをそのまま...
AllowOverride FollowSymLinks
RewriteEngine On
RewriteRule ^/app/(.*)$ http://転送先/$1
-サーバー環境変数も使える
RewriteRule ^hoge\.html /hogehoge\.html?%{QUERY_STRING} ...
**mod_header [#xeddebc9]
レスポンスヘッダーに付け加えたりできる。キャッシュコント...
SetEnvIf Remote_Addr xx.xx.xx.xx internal
RequestHeader add X-INTERNAL-LAN "true" env=internal
RequestHeader add X-ENV "staging"
*パフォーマンスについて [#e92fa4a2]
**KeepAliveについて考察する [#g765cc0c]
時間切れまでつなぎっぱなしという恐るべきリソース消費。詳...
なおPHPを有効にするとプロセスのサイズが膨れるのでKeepAliv...
*有用リンク [#a0e09bcc]
-[[パフォーマンスチューニング:http://tech.bayashi.net/svr...
#counter
終了行:
-Apache全般情報。現在の主流は1.3と2.2系
#contents
*基本情報 [#mc9886f1]
**バージョン毎の特徴 [#e6d442f0]
-1.3.x
2010年1月でついに新規リリース停止。2007年あたりからバイナ...
-2.0.x
スレッドを使えるようになったが、実際にはこれまでと同じプ...
-2.2.x
最新バージョンだが、すでにFedoraや比較的安定志向のVineで...
-2.4系
**設定ファイルの場所 [#q3373e35]
たいていのOSにはバイナリパッケージも用意されていてその場...
|RedHat系|/etc/httpd/conf|
|Debian系|/etc/apache/conf|
*内部IP対応 [#x5a8934b]
-private IPを別のログに出したい
SetEnvIf Remote_Addr 192.168.1. no_log
CustomLog /var/log/httpd/access_log common env=!no_log
-private IPならカスタムヘッダーをリクエストヘッダーに追加
SetEnvIf Remote_Addr 192.168.1. no_log
RequestHeader add MyHeader "%D %t mytext" env=no_log
*DOS対策 [#o905c9fa]
+mod_evasive
+mod_dosdetector
+mod_limitipconn
+fail2 ban
**mod_evasive [#gd9023e2]
-yumがあり導入が簡単
-ブラックリストは設定できない。
-レスポンスは403固定
-プロセス単位で見ているので、mod_dosdetectorに比べると精...
yum search mod_evasive --enablerepo=epel
LoadModule evasive20_module modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 30
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 30
# DOSEmailNotify "-s 'DoS Alert' hoge@example.com"
DOSLogDir "/var/tmp/"
# DOSWhitelist 127.0.0.1
# DOSWhitelist 192.168.1.*
</IfModule>
***パラメータの意味 [#iaf7c522]
上記の例だと同一ページに1秒間5アクセス、もしくは同一サ...
|DOSHashTableSize|内部のメモリ、小さいと記憶できるIPが少...
|DOSPageCount|一つのページに対する閾値|
|DOSSiteCount|サイト全体に対する閾値|
|DOSPageInterval|一つのページに対するDOSと判定する計測時間|
|DOSSiteInterval|サイト全体に対する計測時間|
|DOSSystemCommand|OSコマンドを実施できる。内部での通知に...
|DOSWhitelist|DOS検地除外IPなど|
**mod_dosdetector [#fe170d82]
-はてなの人が作成。
-こちらはコンパイル必要である。httpd-devel,gccが必要。
-forkバージョンもあり、ホワイトリスト対応
-Apache2.4系でコンパイルする場合はパッチ必要
***コンパイル [#pb5e3d54]
sudo yum install -y httpd-devel gcc
wget http://downloads.sourceforge.net/project/moddosdete...
tar xvzf mod_dosdetector-0.2.tar.gz
cd mod_dosdetector-0.2/
make
make install
***設定 [#jdb142fa]
-make installするとhttpd.confにモジュール有効化の記載がさ...
-直接エラーを返すことはできず、あくまで環境変数をセットす...
DoSDetection On
DoSPeriod 10
DoSThreshold 10
DoSHardThreshold 20
DoSBanPeriod 15
DoSTableSize 10
DoSIgnoreContentType image/*
RewriteEngine on
RewriteCond %{ENV:SuspectHardDoS} .+
RewriteRule .* - [R=503,L]
**mod_limitipconn [#bbedb89b]
*コンパイル [#k538e786]
**2.0.x系 [#i526c73c]
./configure --enable-mods-shared=all --enable-shared=yes...
※SSLを有効にした場合opensslのライブラリが必要
再コンパイル時の注意./configure でやるとLoadModule一切な...
そのあと--enable-mods-shared=allしてもhttpd.confはそのま...
いったん消してmake installする
-成功事例
--Vine2.6r4,3.0
--MiracleLinux2.1,3
--RedHatLinux8.0,9,3
--CentOS3.4
**2.2.x系 [#p945c70b]
./configure --prefix=/usr/local/apache22 --enable-mods-s...
**[[mod_sslを静的に組み込む:http://www.stackasterisk.jp/t...
**PHP [#w6eb0f41]
LoadModuleは自動で入る。残りはhttpd.confに以下の設定をする
# for PHP
AddType application/x-httpd-php .php
***PHP4.x [#g4cd15b8]
コンパイルにbison,flex必要gnuからとってきて、bison,flex...
今回はPostgresを有効にしてコンパイル
./configure --with-apxs2=/usr/local/apache2/bin/apxs --w...
PostgresもMYSQLも入ってれば以下でOK(MiracleLinux3.0 フ...
./configure --with-apxs2=/usr/local/apache2/bin/apxs --w...
***PHP5.x [#b3734f30]
flex,libxml-devel,libxml2-devel,postgresql-devel必要
./configure --with-apxs2=/usr/local/apache2/bin/apxs --...
*Apacheの動作モード [#k329f1f0]
preforkとworkerとがありApache2.0より追加されたスレッドで...
ps -ef | grep apache
*httpd.confの設定 [#i226af0b]
**インストール後のtodo [#td7a690d]
実行ユーザーはwwwにする
groupadd www
useradd -g www -s /sbin/nologin www
+AddDefaultCharSetコメントアウト(2.0.53より削除されている)
+LanguagePriority ja
+User www
+Group www
実行時のバージョンを隠す
ServerSignature Off
-[[NameVirtualHost:http://www.ns-labs.com/linux/tsubo5.ht...
**LocationとDirectoryの使い分け [#u6f7d664]
Locationはファイルシステムの外にあるものを設定するときに...
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 192.168.0.1
</Location>
**ユーザーディレクトリ使用可能にする [#td7b9ca2]
rootでchmod 751 username
**CGIディレクトリ [#e1e92006]
<Directory /home/httpd/cgi-bin>
Options ExecCGI
</Directory>
CGI実行は
httpdの実行者がapacheユーザーとなるので755にしないと500...
#For UserDir CGI
ScriptAliasMatch ^/~([a-zA-Z0-9_-]+)/cgi-bin/(.+) /home/...
<Directory /home/*/cgi-bin/>
Options ExecCGI
AddHandler cgi-script .cgi
</Directory>
**ログの設定 [#q6aa89b3]
***ログ設定の基本commonとcombined [#g7843ad0]
|combined|LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Refere...
|common|LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common|
+リモートホスト
+認証領域
+認証ユーザー
+時間
+リクエストの最初の行
+ステータス
+送信バイト
+リファラー
+UA
***ワームログの除去と家庭内アクセス(192.168.1.0/24)を別の...
#Log setting
SetEnvIf Remote_Addr 192.168.1. homelog nolog
SetEnvIf Request_URI "default.ida" wormlog nolog
SetEnvIf Request_URI "root.exe" wormlog nolog
SetEnvIf Request_URI "cmd.exe" wormlog nolog
SetEnvIf Request_URI "Admin.dll" wormlog nolog
SetEnvIf Request_Method "(GET)|(POST)|(PUT)|(DELETE)|(HE...
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(swf)$" ...
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\"...
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/home_log common env=homelog
CustomLog logs/worm_log common env=wormlog
CustomLog logs/access_log combined env=!nolog
**SSLの設定 [#r55d5b05]
LoadModule ssl_module modules/mod_ssl.so
<IfDefine SSL>
LoadModule ssl_module modules/mod_ssl.so
Listen 443
SSLSessionCache shm:/var/cache/ssl_gcache_data(524288)
<VirtualHost _default_:443>
DocumentRoot /usr/local/apache2/htdocs
SSLEngine on
SSLCertificateFile conf/ssl/server.crt
SSLCertificateKeyFile conf/ssl/server.key
<Files ~ "\.(cgi|shtml)$">
SSLOptions +StdEnvVars
</Files>
<Directory /home/httpd/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-s...
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
**SSIの利用 [#g941a4c6]
<Directory "xxx">
Options Includes or IncludesNoExec
AddHandler server-parsed .shtml
AddType text/html .shtml
</Directory>
上記設定でxxxディレクトリ以下で.shtmlのみ利用可能になる
**リバースプロキシ [#i610af17]
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
#Proxy
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /tu/ http://192.168.1.78/
ProxyPassReverse /tu/ http://192.168.1.78/
-SSLに対してリバースプロキシをする場合は下記を追加
SSLProxyEngine On
**WebDAVの設定 [#y3e36cee]
1.3系は日本語問題ありなのでできれば2.0系で運用すべし
+mod_dav.soをインストール
+httpd.confに以下のように追加
**Windowsで2.0とjkで連携 [#p0404a8a]
mod_jk.soはバイナリを入れる。configの設定はlinuxとまった...
*ワンテク [#pabebdbe]
|BASIC認証回避|http://id:pass@URL/|
**コマンドラインログ解析 [#rb50316c]
awk -F " " '{print $1}' access_log | uniq
-Fの後がデリミター。ここではスペースを指定している。さら...
awk -F " " '{print $1}' access_log | sort | uniq -c | ...
-応用編。IP毎にアクセス数を算出する。
*利用しているモジュール解説 [#td8b003f]
**mod_rewrite [#ga8cd507]
URL書き換えできるモジュール。ローカルアドレスをそのまま...
AllowOverride FollowSymLinks
RewriteEngine On
RewriteRule ^/app/(.*)$ http://転送先/$1
-サーバー環境変数も使える
RewriteRule ^hoge\.html /hogehoge\.html?%{QUERY_STRING} ...
**mod_header [#xeddebc9]
レスポンスヘッダーに付け加えたりできる。キャッシュコント...
SetEnvIf Remote_Addr xx.xx.xx.xx internal
RequestHeader add X-INTERNAL-LAN "true" env=internal
RequestHeader add X-ENV "staging"
*パフォーマンスについて [#e92fa4a2]
**KeepAliveについて考察する [#g765cc0c]
時間切れまでつなぎっぱなしという恐るべきリソース消費。詳...
なおPHPを有効にするとプロセスのサイズが膨れるのでKeepAliv...
*有用リンク [#a0e09bcc]
-[[パフォーマンスチューニング:http://tech.bayashi.net/svr...
#counter
ページ名: