ホームページのセキュリティを強化しよう!内部と外部から対策方法をまとめます

ホームページのセキュリティを強化しよう!内部と外部から対策方法をまとめます
こんにちは、フロントエンドのたくとです。
今回は「ホームページのセキュリティを強化しよう!」ということで、ホームページのセキュリティ対策を記載します。
一言にセキュリティと言っても、ホームページの内部対策に関するものと、社内外の担当者による対策の2種類があります。

ITが普及され、ビジネスの殆どがパソコンでの操作となり、セキュリティの見直しは非常に重要なものとなります。
今回記載する記事内容が少しでもお役に立てればと思います。

なぜ、ホームページが狙われるのかを考えよう

よくあるクラッキングの内容として、改竄や乗っ取りがあります。
改竄や乗っ取りを行う側にメリットがあるのかというと、殆どありません。

クラッキングはハッキングと同様、コンピューターを利用した技術ですので、悪戯や技術の見せつけなどを目的として行うケースがあります。

実際のところ、CMSを利用したWebサイトは案外簡単にクラッキングできます。
中でもWordpressに至っては、セキュリティの懸念から導入を見送る企業様もあります。

例として、Wordpressを導入しているサイトで以下のURLにアクセスしてみてください。
http(s)://ドメイン名/wp-json/wp/v2/users

上記のURLへアクセスすると、特に対策をしていない場合、ログインユーザー名が表示されませんか?
ユーザー名がわかれば、あとはユーザー名から推測されうるパスワードを生成して総当たりをすれば完了です。
個人でWordpressを利用している方の場合、ログイン情報がSNSと同様のケースもありますのでSNSも簡単にのっとれます。

では、どのように対策をすればいいのでしょうか。
順を追って見てみましょう。

WordpressのREST APIを無効にしよう

前述しました通り、下記のURLへのアクセスするとログインユーザー名が表示される
http(s)://ドメイン名/wp-json/wp/v2/users

これは、Webシステムを外部から利用するためのAPIの一つで、RESTと呼ばれる設計原則に従って策定されたもので、昨今のWordPressでは、標準搭載されています。
本来は非常に便利な機能で、SPA(シングルページアプリケーション)などでは、Wordpressの記事を取得したり、更新したりできるので、利用するケースが多いです。

WordPressのREST APIの問題点として、Wordpressに掲載した記事の情報のみならず、登録したユーザー名も取得できるということ、そしてダッシュボードからREST APIを無効にできないことが問題となります。

REST APIを無効にするには、プラグインによる対応とfunctions.phpへの記述、および.htaccessへの記述があります。
今回はfunctions.phpへの記述のみ記載しますが、コピペすると「contactform7」や「jetpack」などのプラグインが正常に動作しない可能性がありますのでご注意ください。

function disableRestApi($result, $wp_rest_server, $request){
    $namespaces = $request->get_route();
    return new WP_Error(
        'rest_disabled',
        __('The REST API on this site has been disabled.'),
        array('status' => rest_authorization_required_code()));
}
add_filter( 'rest_pre_dispatch', 'disableRestApi', 10, 3 );

レンタルサーバーの機能を利用しよう

レンタルサーバーには多くのセキュリティ対策設定が施されています。
ここでは「国外IPフィルタ」および「WAF」について説明します。

国外IPフィルタ

改竄や乗っ取りなどのクラッキングが多いのは、海外からのIPが多いのは事実です。
そのため、レンタルサーバーの機能で国外IPフィルタがある場合、有効にしましょう。
デメリットとして、あらゆる国外からのアクセスを遮断してしまうので、
logwatchなどでアクセスのログを取得し、フィルタリング対象を絞って導入した方が良いと思います。

WAF

WAF(Web Application Firewall)は名前の通り、Webサイトのアプリケーションに適したファイアウォールです。
ひと昔前のWAFはコストが高く、導入に数十万円必要でしたが、現在ではレンタルサーバーの標準機能として無償で使えるのが大きな魅力ですね。
WAFはサーバーへの通信を監視し、サーバーへの攻撃や通信を遮断をしたり、解析したりと様々なことを行ってくれます。
WAFの種類もいくつかあり、昨今ではクラウド型が人気なのではないでしょうか。

FTPによる接続はやめよう

制作会社がサーバーへファイルを転送するためにファイル転送プロトコル/FTPを利用するケースがあります。
FTPを利用した接続は「ユーザー名」「パスワード」「ホスト名」の3つがわかれば誰でも簡単にアクセスできるのが特徴です。
また、その接続内容は暗号化されていないので、重要な情報をネットワーク上に流すことになります。

そのため、SSHを利用した暗号化した転送方法 SFTPやFTPSなどを用いて通信するのが、定石となります。
例としてSFTPでは秘密鍵/公開鍵による認証、パスフレーズの設定などFTPと比較してより専門的な知識を要します。ポート番号もデフォルトの22ではなく、きちんと変更することで外部からの接続を抑制することができます。

パスワードは長く複雑にしよう

パスワードイメージ

基本的なところですが、覚えづらいという理由で短縮しがちなパスワード
しかし、絶対に短くしてはいけません。

よく、覚えられないという理由で「簡単なパスワードに変更したい」という方がいらっしゃいますが、
むしろ覚えなくていいのです。覚えられるパスワードではダメなのです。

ブルートフォースアタック(総当たり攻撃)を行うという前提で、
2007年(13年前)でのIPA調べによると4桁の英字のみのパスワードなら3秒程度で破られます。
当時のPCのスペックといえば、Core2のCPUが当たり前の時代・・・。
現在のPCスペックならお察しですね。

あくまで想定ですが、仮に量子コンピュータなるものがあったら10桁くらいまでの英数字なら秒で破られそうな予感です。

社内体制を見直そう

外部からの攻撃もさることながら、社内の体制もきちんと整えることが大事です。
パソコンのログイン情報や、NASやWifiのパスワードまできちんと設定されていますか?

会社によって、社内の共通パスワードなど設定されているかと思いますが、パスワードは共通してはいけません。
それぞれのパスワードを複雑にし、きちんと管理しなければスタッフが退職した際でも不正にアクセスできてしまいます。
こういった対策もまたセキュリティを強める要因になると考えます。

まとめ

いかがだったでしょうか。
今回はセキュリティーについての記事となりました。

ホームページのセキュリティーは運用する側も作る側も気をつけなければなりません。
とくにパスワードの管理に関してはSNSをはじめとしたインターネットの普及により、厳重な管理をしなければならない要因となっています。
私たち制作者側も日々の技術進化に遅れないよう学び続けるのが大切です。
重要な情報を守るために、それぞれが適した対策が行えるような社会づくりをしなければいけないですね。

フロントエンドのたくとでした。