[Nginx] 公開ディレクトリのデータファイルをアクセスできないようにする設定方法

nginx
LINEで送る
Share on GREE
Share on LinkedIn

アドレナリンを出す事って、重要なんですね。体にも良いとテレビで言ってたし・・・
 

この間、友達とカラオケに行って、数年ぶりに人前で歌を歌ったんですが、めちゃくちゃアドレナリンが出ている事が分かり、気持ちが良くなりました。
 

アドレナリンって一人で出すよりも、自分以外の人がいる時に出ているとより放出量が多くなると聞いたことがあるんですが、カラオケってそういう効果もあるかもしれませんね。
 

あれ?一人カラオケって流行ってるんだっけ?あれはどうなんだろ?行ったこと無いからわからないや。
 

そういえば、ハッカーの大好物は、人のパスワードを突破した時と、特定の暗号を解読した時に、難しいゲームをクリアした時と同じアドレナリンが放出されるんだそうですね。
 

もしかしたら、それは、他の人がいなくても一人ですごく大量のアドレナリンが出せるのかもしれませんね。
 

今回の記事はインターネットでWEBサイトを公開している人が、そうしたハッカーの餌食になって、アドレナリンを提供しないための、nginxの設定です。
※apacheの場合は.htaccessを使って簡単に対応できるんですが、nginxのやり方を調べておいた備忘録でもあります。

設定方法

locationの「/」(root)に対して、「.json」ファイルを全て、localhost(127.0.0.1)以外をアクセス不可にします。
 

設定したあとは、nginxの再起動を忘れずに。

※Debian,Ubuntuも「service ***」コマンドは使えますが、お作法としてinit.d階層を利用して区別するようにしてます。

データの考え方

公開サイト内で必要なデータを全て***.jsonというファイルにJSON形式で保持して、都度JSONパースをしてからPHPで引き出して上げることで、この設定によるセキュリティが効果的になります。
 

もし、.dataや.csvなども存在していれば、下記のように追記してみてください。

Apacheの「.htaccess」はいい仕様

apacheを触っていた人は、.htaccessの仕様はこうした事を、運用側でスタティックにセットでき、モジュール再起動などしなくてもよかったので、便利に使っていた人も多いと思います。
 

そもそもデータはSQLやデータベースに入れておけば問題ないと考えているエンジニアも多いかと思いますが、SQLインジェクションを理解しているエンジニアは少ないのが現実のようです。
 

平文データではなく、暗号化してファイリングしておいても、解読はさほど大した時間がかからずできてしまいます。
 

どういうデータ保持をしておくにせよ、MVCのDBアクセス部分以外はデータアクセス負荷にしてしまう事が設計思想として必須なのでしょう。
 

一報、.htaccessは、サーバー負荷を高めてしまうので、設定していなかった人もいるかと思いますが、実際に大手企業で、こうしたテキストファイルへの直接アクセスにより、個人情報漏洩という最悪のシナリオになって社会事件になったケースも少なくありません。
 

個人情報漏洩事件一覧 | サイバーセキュリティ.com
 

スクリーンショット 2017-08-06 10.37.09

こちらのページに過去の情報漏洩事件がまとめられていますが、「不正アクセス」というのが、こうした設定を怠っていたと考えると、最新になるほど多いことが分かります。
 

セキュリティに対する考え方

サーバー管理者だけでなく、サイト設計を行う人も、運用に関わる人も全て、こうした知識を持って、ユーザーデータを預かる思考が必要なのですね。
 

事件の一覧を見てもわかると思いますが、こうした設計や運用を、大手会社は外部会社に丸投げして、自社で何も確認や対策検討を行なっていない事が、大きな穴となっているようですね。
 

セキュリティインシデントを見つけるというのはというのは、サイト運営の質として非常に重要な要素なんですね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*