WEBサイトを運営している際、気にしなければならないのが外部からの不正アクセスを防ぐ、ということです。
システムを導入しているサイトならなおさらですが、システムを導入していないサイトであっても、悪意を持ったアクセスの集中攻撃は同様に受けることになり、このような攻撃からサーバーを守らなければなりません。アクセスを集中させる攻撃はいわゆるDos攻撃といわれるものですが、昨今ではDDos(分散型サービス妨害攻撃)攻撃とよばれる、不特定多数のコンピュータから攻撃をするといった手の込んだものも出てきています。
今回はそういったDos攻撃、DDos攻撃からサイトを守る方法の紹介になります。
「.htaccess」によるアクセス制限
Dos攻撃、DDos攻撃を防ぐ一番簡単にできる方法といえば、やはりIPアドレスによるアクセス制限になると思います。
昨今提供されているサーバーでは、サーバーの設定を調整することができる「.htaccess」ファイルを利用することができるものがほとんどですので、まずはこの「.htaccess」によるIPアドレス制限の方法について説明します。
「.htaccess」では「Deny」と「Allow」ディレクティブを使って通信を許可するIPアドレスと、通信を拒否するIPアドレスの設定をすることができます。また、「Deny」と「Allow」の設定をどちらを先に反映するかの順番を決めることができるため、すべてのIPアドレスを「Allow」とした後に、通信を拒否したいIPアドレスを「Deny」することで特定のIPアドレスからのアクセスを防ぐことができるようになります。反映の順番は「Order」ディレクティブで設定します。
記載例としては下記になります。
例)
——————————
Order Allow Deny
Allow From ALL
Deny From 111.111.111.111
Deny From 222.222.222.222
——————————
このように記載すると
Deny From で記載した「111.111.111.111」「222.222.222.222」からのアクセスを拒否することができます。
注意しなければいけないのは「Order」の順番です。「Order Deny Allow」と記載すると「Deny」の設定項目が反映された後「Allow」の設定が反映されることになるため、全てのIPアドレスからのアクセスが許可されてしまいます。
このように「.htaccess」を使ってアクセス制御をかけることで外部からの攻撃を防ぐことができるようになります。
どのIPアドレスからのアクセスを防ぐかはアクセスログを参考にするしかないですが、自信でIPアドレスを調査して設定するのが面倒だ、ということであれば、不正サーバーのIPアドレスを「.htaccess」にまとめたものもネット上に出回っていますので、そちらを導入してみるのも良いと思います。
「iptables」によるアクセス制限
前章では「.htaccess」によるアクセス制限を説明してきましたが、「.htaccess」自体はWEBサーバーに依存する機能のため、IPアドレスを追加すればするほど、WEBサーバーの負荷が上がってしまいます。アクセスの多いサイトであればやはりWEBサーバーに依存させるのではなく、Firewallなどの別の仕組みによって防ぐのが良いと思います。
とはいえ、本格的にFirewall等の仕組みを導入するとなるとコストがかかってしまいます。コストをかけたくない、ということであれば、LinuxOSであれば標準で「iptables」というFirewallソフトが搭載されていますので、簡単なIPアドレス制御であればこの「iptables」を使って行なうのが良いと思います。
今回はいくつか簡単ではありますがこの「iptables」を使ってIPアドレスのアクセスを制御する方法を説明します。
「iptables」で特定のIPアドレスからのアクセスを防ぐのは簡単です。
iptables -I INPUT -s 111.111.111.111 -j DROP
というコマンドを実行するだけです。
このコマンドを実行することで「111.111.111.111」からのアクセスを拒否する設定になります。
ただ、コマンドを実行しただけでは設定が保存されず、サーバーをリブート(再起動)することで、元に戻ってしまうため、
「service iptables save」
というコマンドを入力して、設定を保存する必要があります。
追加した拒否設定をはずすためには
iptables -A INPUT -s 111.111.111.111 -j ACCEPT
とします。
こちらも同様にコマンドを実行した後に「service iptables save」を実行して設定を保存します。
「iptables」には特定のIPアドレスからの接続に関してだけでなく、特定のポート、プロトコルに対しても制御を行なうこともできます。
iptables -p tcp –dport 80 -j DROP
と書くと80番ポートへのアクセスを制御することになります。
そのほかにもいろいろと細かく設定できますので、興味のある方は調べてみると良いと思います。
まとめ
いかがでしたでしょうか。
今回はWEBサイトをDos攻撃、DDos攻撃から守るための方法を説明してきました。今回はIPアドレス制御のみを話してきましたが、外部からの攻撃は他にもいろいろあり、対策も様々です。対策によってはコストがかかるものもありますし、設定の工数もそれなりにかかってきます。自身のサイト、サービスに応じてどのような対策を打つのか考えるのが良いと思います。