Apache .htaccess によるアクセス制御でハマった時にやった事 DIY

No ImageプログラミングDIY

我が家ではDIYした自作家計簿システムが稼働しているのですが、最近、インターネット・プロバイダーを変更したので、外部から自宅の家計簿サーバーにアクセスする娘の為に、Webのアクセス制御を変更しようとしてハマったので、原因と解決策について書いておきます。

システム構成

自作家計簿システムですが、4年程まえからコツコツと作ってきたもので、古いThinkPadがあったので、CentOSに入れ替えて、死にかけてたHDDをSSD(30Gb)に換装したらまだまだ使えるなぁって事になり、電源入れっぱなしのサーバーとして利用してます。万が一瞬断とか停電があってもバッテリーで数時間は落ちない点も良いかと思います。

プログラムは、PHPとJavascriptで開発し、DatabaseとしてはMySQLを使用しています。WebサーバーはApache2.4です。所謂LAMPPです。

セキュリティー対策

以前のインターネットプロバイダーではGlobal IPの契約もしており、固定IPアドレスをもらっておりました。したがって、そのIP目指して、DMZに設置したThinkpadに外からもアクセス可能としてました。

DMZに設置したとたん、外部から恐ろしいほど毎日攻撃されます。その殆どが自動でスキャンしてくるのでしょうけど、tcp_wrapperでDenyされたログみるのも楽しいと言うか、怖いと言うか、腹立つと言うか(←これが一番、気分的には近い)、世間一般でITセキュリティーに詳しくない方は、結構踏み台にされてたりするんだろうなぁ・・・と思います。おもに、SSH接続やWebのDefaultのAdmin系のURLがつつかれてます。一応私は万全の対処をしてるので大丈夫ですが、逆にハニートラップを仕掛けて、不正アクセスを試みる連中を調べてみたい気持ちにもなります。^^; 不正アクセスのIPアドレスは全て記録してますが、その大方が中国やロシアのようです。あまりに頻繁にやってくるIPはブロックしますが、いたちごっこになるので基本は必要なポート以外は全部閉じてます。

Webアクセスの制限

Webポートへのアクセスの制御に関しては、.htaccessにホスト名で制御を入れてましたが、なぜかルーターが変わってからは逆引き関連でうまくできず、apacheのLogには、in-addr.arpaが記録されていました。恐らくルーターを変えた事くらいしか思いあたる違いはないです。ルータになんらかの原因があるのかな?と考えてます。

Webサーバーは以前からName Resolutionをさせていて、logにはFQDNが残るようにしてます(さほど外部アクセスがあるサイトではないので、名前解決させてlogしておいた方が分かりやすいので)
mod_access_compatも入ってますが、なぜか403 forbiddenとなってしまいます。さんざん苦労したあげく、やっと解決しました。ドメイン名で指定していたけど、結局はIPレンジと同じ事なので、IPレンジを指定することで無事に解決しました。ただ、ドメイン名の場合は、ホスト名部分を省略したりして、以前はSoftbankの場合、以下のようなエントリーの指定で使用出来ていたのですが、

allow from .panda-world.ne.jp

IP Rangeにすると、rangeが複数存在するので結構面倒ですが、私の場合、娘のアクセスdeny になったら、都度調べて登録してます。Softbankだと以下のレンジが使用されてるようです。

  • allow from 126.182.0.0/16
  • allow from 126.166.0.0./17
  • allow from 126.156.0.0/17

IPレンジは、maxmindのデモページで簡単に見つける事ができます。こちらのURLで利用できます。https://www.maxmind.com/en/geoip-dem

まとめ

何故かルーターを交換してから、 htaccess でのドメイン名でのアクセス制御が正しく動作しなくなりました。mod_access_compatも入ってるけど、なぜか403 forbiddenとなってしまう。さんざん苦労したあげく、やっと解決したのがドメイン名指定をやめて、IP rangeを指定する方法でした。でもちょっと不便です。IP rangeは、プロバイダーによっては複数の登録が必要です。娘のスマホはドコモですが、時々いつもとは異なる別のIP RangeのIPが使われていたりします。確認すると ドコモ のIP rangeには間違いないのですが、繋がらないと言われたらログをみて、.htaccess に登録する作業が必要です。

もしかして何か方法があるのかも知れませんが、私の解決策はIPレンジでの指定でした。ドメイン名でも大丈夫だよ~ と言う方がいらっしゃれば、教えていただけると幸いです。

最後まで読んで頂きありがとうございました。

投稿者プロフィール

diy-hs
diy-hs
”なんでも自分でやってみる” をテーマに、ブログを書いてます。素人には無理と思う様な事も、実際にやってみるとあっさりと出来たりする事もあります。失敗もありますが、失敗する事で経験となり、次は少し上達したりします。それが楽しいです。そんなDIYの情報を発信して行けたらと思ってます。仕事はAIやクラウド関連を担当してます。そんな訳でプログラミングやシステム構築も趣味と実益を兼ねてDIYを楽しんでます。ギターはもともとクラシックギターを学び、インストルメンタル専門でしたが、高校生の頃にテレビでみた卒業の映画でPaul Simonの曲に憧れて、それ以降いろんなジャンルの弾き語りも楽しんでます。S&Gの曲なら楽譜なしで弾けます。^^; Twitterの方でも発信していますので、ぜひフォロー下さい。

コメント

タイトルとURLをコピーしました