ロードバランサを筆頭に最近のWEB開発の現場では Proxy サーバがよく出てきます。で Proxy サーバが存在するとよく問題になるのが「ユーザの本当の接続元IP」を知りたいという要求で、通常それは Proxy サーバがバックエンドのリクエストに X-Forwarded-For ヘッダを付けてくれることで大体解決します。でその値を更に便利に使えるようにしてくれる mod_remoteip ってのがあって、今まではほぼメリット部分が大きく、その副作用で困ることはあまりなかったんですが、今回ちょっとハマったケースがあったので備忘録としてその内容を記録しておく。 X-Forwarded-For ヘッダの役割と仕組み X-Forwarded-For ヘッダは ip1[, ip2[, ip3[, ...]]] といった構造の値が入ることになっていて、ip1が「ユーザが最初に直接アクセスしたProx

はじめに Webサーバをセキュアに保つ為、個人的に行っている設定をざっくりまとめてみました。 設定内容はApache 2.4での運用を想定していますので、他のHTTPdをお使いの方は適宜読み替えてください。 各設定項目は以下のオンラインテストサイトでA+相当を取ることを目指しています。 設定ファイル生成 Mozilla SSL Configuration Generator オンラインテスト MozillaObservatory Qualys SSL Server Test 前提条件 以下で設定する項目は特にHTTPS接続や攻撃防止に関するものになります。 HTTPdそのものに関する基本設定については別記事をご参照ください。 SSLProtocol 危殆化した古いプロトコルを有効にしている場合、古いプロトコルを標的としたダウングレード攻撃等を受ける可能性がある為、新しいプロトコルのみを有

ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフーTechBlog こんにちは、TechnicalYahoo の中谷です。 今回は、Yahoo! JAPANからオープンソースとして公開した高速ファイル/メッセージ転送システムの K2HFTFUSE の紹介をします。 K2HFTFUSEは、確実で高速なファイル/メッセージ転送を低コストで実現するために開発されたシステムです。 K2HFTFUSE(K2Hash File Transaction by FUSE-based file system)とは、FUSE(Filesystem in Userspace)によるユーザースペースでのマウント機能を利用したファイル/メッセージ転送システムです。 K2HFTFUSEは、仮想ファイルシステムを提供し、マウ

cat << _EOF_ > /etc/httpd/conf.d/security.conf # バージョン情報の隠蔽 ServerTokens ProductOnly Header always unset "X-Powered-By" # httpoxy 対策 RequestHeader unset Proxy # クリックジャッキング対策 Header always set X-Frame-Options "SAMEORIGIN" # XSS対策 Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" # XST対策 TraceEnable Off <Directory /var/www/html> # .htaccess の有効化 Al

Linux系のサーバー管理ツールといえば Webmin や、有料なら cPanel なんかが有名。 だけど他にフリーなのないかなと探してみると Ajenti というのが最近人気があるっぽい感じだった。 Ajenti 公式サイト http://ajenti.org/ インストール インストールは簡単で、例えば CentOS6 なら以下のコマンドで一発。 (すべて yum で入れてくれる模様) Ubuntuとか他のものは以下のページにインストール方法がある。 http://support.ajenti.org/list/27624-kb/?category=9290Pythonで動いてるらしく、上記インストールコマンドでそれら必要なものは全て揃えてくれる。 (ちなみに CentOS6.5 に入れた時はPython2.6.6 が入ってた) インストール後に起動すると https://loca

.htaccess とは.htaccess のルールファイル名コメントアウト文字コードと改行httpd.conf転送と有効範囲正規表現Apache のモジュールと .htaccess で利用可能なディレクティブモジュールとディレクティブ一覧HTTP環境変数後方参照RewriteRuleの後方参照RewriteCondの後方参照まとめ.htaccess とは[1] Apache HTTP Server Webサーバソフトウェアが "Apache" である必要があります。 .htaccess とは、Webサーバの動作を制御するための設定ファイル [1] です。設定例としては、特定のファイルやディレクトリのアクセスを禁止したり、HTTP 404(Not Found:未検出)エラーページをカスタマイズすることもできます。.htaccess は設置しなくともWebサイトは問題なく動作しますが、セキュ

先日の日記『「10日でおぼえるPHP入門教室 第4版」はセキュリティ面で高評価』では、同書のアップロード機能のセキュリティ面を評価しつつ、「もうひと踏ん張り確認して欲しい内容がある」として、画像XSSの可能性について指摘しました。では、これを直せば完璧かというと、実はそうとも言えないという微妙な問題があります。それは、アップロード先の場所とファイル名の問題です。 ファイルをアップロードするディレクトリ: ドキュメントルート下の /php10/doc/ ファイル名: ブラウザから送信されたファイル名そのまま これらのうちファイル名の拡張子については、gif/jpg/jpeg/pngのみを許すという、いわゆるホワイトリスト検査がされていて、またgetimagesize()関数により、画像ファイルであることの簡易的なチェックをしています。しかし、この状態では、環境によってはアップロードしたファイ

HTTPS(SSL利用)サイトがSEO的に優遇されるトレンドで、世間的にもHTTPS接続でサイト運用するサービスが増えてきています。 これが、ハイトラフィックサイトになってくると、このフロントエンドでSSL処理させることが負荷的にもなかなか辛いのです。 で、Apache 2.3以降では、Shared Object Cache Providerとして、memcachedが選択できるようになっています。 この仕組みを利用して、Apacheとmemcachedを並べることで、各サーバでユーザのSSLSession Cacheを共有しながらHTTPSリクエストを負荷分散できる構成を作ってみました。 WebサーバでSSLオフロード 常時SSLを利用したWebサイトを運用するために、SSLアクセラレータといったアプライアンス製品だとか、ソフトウェアだとApacheやNginxのSSLモジュールを使う

はじめにrailsとwebサーバを連携する場合はapache × passengerまたはnginx × unicornのどちらかを使用することが多いかと思います。 昔はwebサーバといえばapacheでしたが、最近はかなりnginxが使われてきています。 apacheとnginxのを比較したときに、静的ファイルはnginxが動的ファイルはapacheが早いと言われています。 そこで今回はnginxにリバースプロキシの設定をし、apacheと連携してみました。つまりhtmlや画像などの静的ファイルはnginxで処理し、railsの処理はapache経由で処理させることをやってみました。 開発環境 今回はmacのvirtual boxにubuntuをインストールし環境を構築しました。 ubuntu 12.04 32bit apache 2.2nginx 1.6ruby 2.00 rai

SSL アクセラレータの価格に胃を痛めている貴兄、それが買えず SSL のためだけにサーバの台数をニョキニョキ増やしている貴兄、そうでなくとも SSL のパフォーマンスでお嘆きの貴兄のために、いろいろまとめてみましたよ。 SSLセッションキャッシュのタイムアウト設定を長くしよう SSL の負荷のほとんどはセッションの生成によるものなので、当然のようにサーバ側の SSL セッションキャッシュを有効にしておられると思いますが、そのタイムアウトの設定がデフォルトのままという方が多いのではないでしょうか。 たとえばApacheでしたら、設定サンプルのまま SSLSessionCache shm:/usr/local/apache/logs/ssl_gcache_data(512000) SSLSessionCacheTimeout 300 としている方が多いのではないでしょうか。 各サーバのデフォ

IEはSSL通信で何かと問題が出る あるWebサイトを運営していると、IEからSSL通信したときだけサーバーの応答が遅くなることがあります。これは、サーバー側がApacheの時のみに起こる問題です。Apacheの設定ファイルで、User-AgentがIEのときにKeepAlive設定をOFFにしてしまうためです。なぜOFFにするかというと、SSL通信処理周辺で問題があるためです。今回は、この問題を回避して、応答時間を短くしたいと思います。 Apacheのデフォルト設定 ApacheをSSLモジュール付きでインストールすると、初期設定済みの設定ファイルもインストールされます。インストールから設定まで見てみましょう。

完全に釣りタイトルですけど中身は真面目に書くよ。 近年、ウェブサイトのHTTPS化が流行のようになっている。私の知る限り、Googleの各種サービスやTwitter、Facebookなどが完全にHTTPSで通信を行うようになっている。HTTPS、つまりSSLによる通信の暗号化によって、ユーザにこれまでよりも安全なウェブサイトを提供できる。 しかし、あなたが作っているサイトをふと思いつきでHTTPS化してしまうと、たぶん、これまでよりもサイトが遅くなる。ここでは、HTTPSで通信する場合の問題を解説する。 なぜ遅くなるのか HTTPで通信する場合、クライアントがサーバへと接続するためにはTCP/IPの3ウェイハンドシェイクという手順が必要になる。めんどくさいのでここでは詳しくは説明しないが、要するにクライアントがリクエストを投げる前にパケットを1往復させないといけないのである。パケットの往復
既に報道されているように、ロリポップ!レンタルサーバーに対する改ざん攻撃により、被害を受けたユーザー数は8428件にのぼるということです。ここまで影響が大きくなった原因は、報道によると、(1)「WordPressのプラグインやテーマの脆弱性を利用」し、不正なファイルがアップロードされた、(2)パーミッション設定の不備を悪用されて被害が拡大した、ということのようです。 29日夜の時点では、攻撃者の改ざん手法について「WordPressのプラグインやテーマの脆弱性を利用」し、不正なファイルがアップロードされて「wp-config.phpの」の設定情報が抜き出されたと説明していたが、30日午後7時過ぎの説明で、この脆弱性が侵入経路となって同社のパーミッション設定の不備を悪用されたことが原因だったことを明らかにした。 「ロリポップ」のWordPressサイト改ざん被害、原因はパーミッション設定不備

マルウェア「Linux/Cdorked.A」はApacheだけでなくNginxやLighttpdのWebサーバにも感染を広げ、これまでに400を超すWebサーバで感染が確認されているという。 Webサーバを改ざんし、悪質サイトにリクエストをリダイレクトするマルウェア「Linux/Cdorked.A」が見つかった問題で、セキュリティ企業のESETは5月7日、このマルウェアがApacheだけでなく、NginxおよびLighttpdのWebサーバにも感染を広げていることが分かったと報告した。Linux/Cdorked.Aは侵入先のコンピュータにバックドアを開き、脆弱性悪用ツールキットの「Blackhole」を仕掛けたWebサイトにトラフィックをリダイレクトするなどの機能を持つ。ESETによると、7日の時点で400を超すWebサーバで感染が確認され、人気の高いWebサイトがそのうちの50を占める

はい、これは僕がいつも良く見るApacheとNginxの性能差に見えます。大体、ApacheはNginxの75%程度の性能に落ち着きます。数十バイトの静的コンテンツに対するリクエスト処理はNginxの得意分野だと思っていたので、大体こんなものです。 そこで、真面目にevent_mpmのチューニングを行ってみました。で、幾度となくベンチを試した結果導き出した、静的コンテンツに対する同時接続数100程度に対して最高のパフォーマンスを示すevent_mpmの設定は以下のようになりました。 [program lang=’apache’ escaped=’true’] StartServers 4 MinSpareThreads 4 MaxSpareThreads 4 ThreadsPerChild 2 MaxRequestWorkers 2 MaxConnectionsPerChild 0 [/p

.htaccess For All 下記は各ポイントを意訳したものです。 「.htaccess」ファイルを編集する際は、必ずバックアップをとることをお勧めします。 .htaccessファイルの作成とアップロード .htaccessの使い方・有効範囲 .htaccessのよく使う設定のまとめ .htaccessファイルの作成とアップロード 「.htaccess」ファイルを作成することは非常に簡単です。 テキストベースのアプリケーションを開き、ワードラップ機能をオフにしてコードを記述し、ファイルを保存します。Windowsのメモ帳などを使用すると保存する際、ファイル名に「.txt」が加わってしまいます。 .htaccess.txt これは特に問題ありません。 ファイルをアップロードした後、サーバー上でリネームしてください。 .htaccess ファイルをアップロードする際は、ASCIIモード
接続数とリクエスト/秒はserver-statusハンドラーで取得したものです。使用帯域については、2.2のserver-statusは正確な値を返さないので2.4.1とは比較できません。そこでネットワークインターフェイスの出力帯域の直近の5分平均を採りました。メモリーの使用量とCPUの使用率は、httpdのプロセスの合計の値をprstat -aで調べました。 出力帯域を見る限り、どちらのバージョンも同様な負荷状況にあります。出力帯域にはFTPやrsyncも含まれていますが、HTTPがほとんどだからです。しかし、接続数やリクエスト/秒は2.2.22より2.4.1のほうがずっと小さいです。まだソースコードを読んでいないので正確なことはわかりませんが、計測方法が異なっているためではないかと思います。問題のメモリーとCPUの使用状況ですが、2.2.22よりも2.4.1のほうが2倍以上大きくなって
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く