みなさま、こんにちは!
今回はサーバー管理ツールPlesk(プレスク)に標準搭載されている、無料のセキュリティ機能中から、不正アクセスに対して有効な「Fail2ban(フェイルツーバン)」についてご紹介いたします!
セキュリティ対策として、不正アクセスは即時に遮断する必要がありますが、通常ご利用のWebサイトに頻繁にアクセスしてくれているファンと、攻撃のために頻繁に不正アクセスしている悪意をもった第三者かを判断するのは時間と労力がかかります。
今回ご紹介する「Fail2ban」は、不正アクセスに対して時間と労力をかけることなく、自動で不正アクセスを検出して遮断してくれる機能です。
それでは「Fail2ban」について詳しく解説していきたいと思います。
1.Fail2banで防げる攻撃とは?
2.Fail2banの仕組みとそのメリットとは?
3.実際にPleskでFail2banを利用してみよう!
4.より堅牢なセキュリティにしよう!(Fail2ban+WAF[ModSecurity])
5.最後に
1.Fail2banで防げる攻撃とは?
昨今、さまざまなサイバー攻撃がニュースやインターネットを通じて確認されておりますが、その中でもサーバーの管理ツールのIDとパスワードを盗み取るための攻撃があります。
攻撃の種類として、ブルートフォースアタック(総当たり攻撃)、辞書攻撃、パスワードリスト攻撃などのパスワードクラックなどがあります。
また、サーバーを高負荷状態にしてサービスを停止させる攻撃、何度も連続した通信をサーバーに送るDoS/DDoS攻撃などがあげられます。
これらの攻撃は頻繁にWebサイトにアクセスしておこなうため、Webサイト管理者側からみると不正アクセスとなります。
不正アクセスの防御は、ご利用サーバー側でファイアーウォールの制限やパスワードを複雑強固な情報に設定するなどがあげられますが、これらの防御だけでは必ずしも安全であるとは言い切れません。
不正アクセスの防御として「Fail2ban」も有効な手段となります。
以下は、Fail2ban導入前後のイメージ図となります。早速みてまいりましょう。
上記イメージ図の通りFail2banとは、外部からのさまざまな攻撃を防いでくれる(banする)サーバーアプリケーションソフトで、主に以下事例の対策に効果を発揮します。
[事例1] Webアプリケーションの不正ログイン
WordPress管理画面へ何千、何万回と総当たりにログインが試行された結果、パスワードが破られ不正ログインを許してしまい、サイトの改ざんや、不正なスクリプトが埋め込まれ、Webサイトを閲覧した端末がウイルス感染するなどの被害を受けてしまう攻撃です。
[事例2] メールサーバー攻撃
メールアカウント情報などが盗まれる(乗っ取られる)ことにより、ユーザーが意図しない大量のウイルスメールやスパムメールが配信されてしまい、多くの方に迷惑をかけてしまうだけでなく、メール内容が盗み見られ、機密情報などが含まれたメールであれば、情報漏えいにつながり、被害が甚大化する恐れがあります。
[事例3] DoS/DDoS攻撃
標的になったサーバーは、トラフィックが異常に上昇してしまい、Webサイトで提供しているサービスなどが遅延、停止につながります。
サービス遅延、停止から復旧まで業務停滞や機会損失、売り上げ減少、別のサイバー攻撃の足がかりにされる等、被害は計り知れないものとなる可能性があります。
※上記はあくまで一般的な事例のご紹介となりますので、あらかじめご了承ください。
2.Fail2banの仕組みとメリットとは?
サーバーを運用するうえで、ファイアーウォールを利用されている方は大勢いらっしゃると思います。
ファイアーウォールは、事前に定義された設定(IPアドレス、ポート、プロトコルなど)を基に、通信の許可、禁止を判断する仕組みですが、その通信が不正であるか否かまでは判断することができません。
一方、Fail2banでは、ファイアーウォールと比較し優れた点として、その通信が不正であるか否かを自動で判断するところです。また、通信のログファイルを管理者が分析して手動登録するといったわずらわしさがありません。
通信のログファイルをシステムが監視し、悪意のある攻撃や不正なアクションの兆候が発見された場合、そのIPアドレスを自動的に遮断する仕組みとなっています。
さらにFail2banは、遮断時間やログファイルの監視時間、IPアドレスの遮断ルールなどをユーザー自身で細かく決めることが可能であり、例えば、何度ブロックしても執拗に攻撃してくるIPアドレスを長期間ブロックすることもできます。
サーバー管理ツールのPleskご利用の方であれば、Fail2banは無料でインストールされておりますので、サーバーの管理画面にアクセスしなくても、Pleskの設定画面から利用開始ができます。
コマンド操作が苦手な方にとっても簡単に設定ができますので、今回はPleskからの利用方法を紹介していきます。
3.実際にPleskでFail2banを利用してみよう!
早速、PleskでFail2banの各種設定をみていきましょう。
【1】Fail2ban有効化の設定手順
[Plesk Onyxの場合]
(1) Plesk Onyx管理画面へログインし、項番①[ツールの設定] -->項番②[IPアドレスによるアクセス制限(Fail2ban)] の順にすすめみます。
(2) 項番③[設定タブ] -->項番④[侵入検知を有効化]にチェック-->項番⑤[OK]をクリックします。これでFail2banは有効となりました。
[Plesk Obsidianの場合]
Pleskの最新版Obsidianでは、Fail2banはデフォルトで有効となっております。(赤枠参照)
では、自由にカスタマイズしてみましょう!
■IPアドレスのアクセス制限期間
アクセスを制限する(はじく)時間を秒単位で決めることができます。
標準で600秒ですが、ブロックされたら10分間アクセスできないということです。
10分経過後は制限が解除されてしまいますので、長くブロックしたい場合、秒数を延ばしておきましょう!長時間ブロックすることで、攻撃を諦めてくれる確率が高まるかもしれません。
■IPアドレスがアクセス制限される失敗回数
ログインに失敗できる回数を決めることができます。
標準は3回ですが、正当なユーザーがログインに失敗したことでブロックされてしまう
ケースもあるため、注意が必要ですね。
■攻撃を検知する期間
SSHやWordPressなどのログイン失敗や不正アクセスの攻撃回数を検知する時間を
秒単位で決めることができ、標準で600秒となります。
例えば、以下のように設定されていたとします。
・IPアドレスのアクセス制限期間:60480秒(一週間)
・攻撃を検知する期間:600秒(10分間)
・IPアドレスがアクセス制限される失敗回数:5回
もし、10分の間に同一IPアドレス(以下、A)からログイン失敗など、5回に達すると一週間は
Aからアクセスができない状態となりますが、A以外のIPアドレスからはアクセスは可能と
なります。
※ログファイル監視と制限実施までにタイムラグがございますので、あらかじめご了承ください。
【2】Jail(ルール)の設定手順
Jailではどのログにどのような文字列が存在した場合、検知対象となるかなど、接続禁止のルールを詳細に設定することができます。Pleskでは、標準で数種類のjailが既に提供されております。ここでは、WordPressのjailをオンにする手順をみていきましょう。
[Plesk Onyx の場合]
(1) [jail]タブ-->項番⑥[plesk-wordpress] -->項番⑦[オンにする] をクリックします。
(2) 項番⑧[ステータス]はアクティブになりました。(設定反映にはお時間を要す場合がございます。)
そのほかに、ご利用サーバーのセキュリティニーズに応じ、そのほかjailを有効にしてください。
[Plesk Obsidian の場合]
Obsidianでは、全jailはデフォルトで有効となっております。(赤枠参照)
【3】Jail(ルール)に関係なく、特定のIPアドレスを許可する場合
自拠点(自社)などのグローバルIPアドレスが、誤ってFail2banによりブロックされたくない場合、あらかじめIPアドレスへ登録をしておけば、ブロックされることはありません。
[Plesk Onyx、Obsidian 共通]
(1)項番⑨[信頼できるIPアドレス] -->項番⑩[信頼できるIPを追加]をクリックします。
(2)項番⑪[IPアドレス] 欄の自拠点のIPアドレスを入力-->項番⑫[OK]をクリックします。
※上記はあくまで一般的な設定例となりますため、ご利用サーバーのセキュリティを保証するものではありません。あらかじめご了承ください。ご利用サーバーのセキュリティニーズに促した設定をご検討ください。
【4】執拗な攻撃は恒久的にブロック
先述しました通り、Fail2banは一定時間経過後にアクセス制限が解除されてしまうため、解除された途端、また執拗に攻撃してきますので、そのような場合は恒久的にブロックしてしまいましょう。
一般的にはfirewallやiptablesでブロックをかけますが、Pleskであればそのようなコマンド操作は必要なく、jailのログファイルをカスタマイズすることで、恒久的にブロックさせることができます。
では、[plesk-wordpress]のjailを参考に設定方法をみていきましょう。
[Plesk Onyx、Obsidian 共通]
(1)項番⑬[jail] -->項番⑭[plesk-wordpress]をクリックします。
(2)項番⑮[iptables-allports-iptables ファイアーウォール経由で禁止、すべてのポート]を選択-->項番⑯[追加]をクリック-->項番⑰[OK]をクリックします。
(3)ログを開き、ban状況を確認します。
項番⑱[ログ]をクリック-->項番⑲[/var/log/fail2ban.log]をクリックします
(4)項番⑳【IPアドレス:***.***.230.126】が【Ban(ブロック)】されております。
※BanされたIPアドレスは【アクセス制限中の IP アドレス】欄にも表示されます。
※ログはブラウザ上での確認となります。テキスト形式ではございませんのであらかじめご了承ください。
4.より堅牢なセキュリティにしよう!
(Fail2ban+WAF[ModSecurity])
多様化するサイバー攻撃の脅威からサーバーを守るためには、セキュリティ対策の強化が必要不可欠です。
Pleskのセキュリティ機能にはFail2ban の他にWAF[ModSecurity]があります。
それぞれ、防げるサイバー攻撃が異なり、ModSecurityはSQLインジェクション(※注1)やクロスサイトスクリプティング(XSS)(※注2)といったWebサイトを狙ったサイバー攻撃を防ぐことができます。
では、Fail2nbanとWAF[ModSecurity]の機能の違いをイメージ図でみていきましょう。
「Fail2ban」は不正アクセス、不正ログインなどを防ぎ、「ModSecurity」はウェブアプリケーションやソフトウエアの脆弱性を突いた攻撃を防ぐことができ、よりセキュリティ対策が強化されます。
SQLインジェクション攻撃とは、脆弱性のあるWebサイトに不正な内容含むSQL文(命令文)を注入(インジェクション)することにより、データベース内にある情報を改ざん、漏えいさせる攻撃手法です。
クロスサイトスクリプティング(XSS)とは、攻撃対象のWebサイトに、脆弱性がある掲示板のようなWebアプリケーションへ罠を仕掛け、サイト訪問者の個人情報を盗む攻撃手法です。
また、二つのセキュリティ機能の相乗効果として「ModSecurity」で得たサイバー攻撃の痕跡データ(ログ)を「Fail2ban」にログを反映させる方法があります。
なお、WAF[ModSecurity]とログを反映させる方法につきましては、こちらの記事で詳しく扱っておりますので、ぜひ併せてご覧になってみてください。
Fail2banとWAFの[ModSecurity]の組み合わせで、サイバー攻撃からサーバー、Webサイトを守っていきましょう!
5.最後に
みなさま、最後までご覧いただき、誠にありがとうございました!
いかがだったでしょうか。
IPA(独立行政法人情報処理推進機構)の「情報セキュリティ白書2019」によりますと、Webサイトを一般に公開するうえで安全性を確保することは、Webサイト運営者に求められる責務であるとし、また、Webサイト運営者だけでなくWeb サイトを構築する事業者に対しては、自ら安全Web サイトを提案し Web サイト運営者の理解を得て構築することが求められるとしています。
Fail2ban、ならびにWAF[ModSecurity]は、セキュリティ対策の運用方針の一つとして、大きな効果を発揮する大変便利なアプリケーションソフトとなりますので、ご利用サーバーのセキュリティ向上を図るうえで、ぜひご活用いただくことをおすすめいたします。
最後に、今回紹介したFail2banは、サーバー管理ツールのPleskを導入している場合、記事で紹介した通り、とても簡単に導入できます。これからPleskの導入を検討いている方には、Plesk国内シェアNo1※の下記GMOクラウドのサーバーがおすすめです。
※ Plesk社調べ(2018年12月時点)
■クラウドサーバー『ALTUS byGMO』(14日無料)
本サービスはサーバーおよびPleskの初期構築・設定を無料で提供しております。
詳細はこちらよりご確認ください。
また、サーバー構築に不安な方向けに、導入前のコンサルティングから構築・運用まで、お客さまのお悩みやご要望に合わせて、クラウド導入をトータルに支援するサービスをご提供しておりますので、ぜひ、ご相談ください!