ブラウザからのIPアドレスでのアクセスを禁止する

更新日:2021/01/27

先日、本サイトのサーバーへのIPアドレスでのアクセスを禁止しました。

 

IPアドレスのみのサイトから大量にリンクされていた

以前から気になっていたのですが、Google Serch Consoleを見ると、IPアドレスのみのサイトから大量にリンクが貼られていました。

リンクしているサイト

気持ち悪いなと思いつつ忙しかったので放置していたのですが…

よく考えると、自分のサーバーのアドレスだということに気が付きました。

このまま放置しておくのもセキュリティ上問題があるような気がするので、IPアドレスでのアクセスを禁止してみます。

 

設定方法

以前サーバー設定について調べて詳しくなったのですが、1年以上経った今では記憶が跳んでどこかへ行ってしまいました。
そのため、ネットで再調査です。

すると、次の記事がヒットしました。

Apache 2.4のhttpとhttpsでIPアドレスや違うFQDNによるアクセスを拒否する

他にも有効な記事があったのですが、こちらの方法は既存ファイルを変更する必要がなかったので、めちゃくちゃ簡単に設定できました。

  1. 設定ファイルが格納されているディレクトリを開く

    ※ssl.confなどがあるディレクトリ

    
    cd /etc/httpd/conf.d
    
    
  2. アルファベット順で一番初めに来るような名前(xxxx.conf)で、新規ファイルを作成する
    
    vi 00-reject.conf
    
    
  3. 次の内容を入力して保存
    
    <VirtualHost *:80>
    ServerName any
    <Location />
    Require all denied
    </Location>
    </VirtualHost>
    
    <VirtualHost *:443>
    ServerName any
    SSLEngine on
    SSLCertificateFile サーバー証明書ファイルのパス
    SSLCertificateKeyFile 秘密鍵ファイルのパス
    <Location />
    Require all denied
    </Location>
    </VirtualHost>
    
    

    ファイルは、SSLを設定したときに作成されたファイル

  4. 設定を確認して、再起動
    
    apachectl configtest
    systemctl restart httpd
    
    

 

IPアドレスで接続された…失敗か?

設定が終わったので、IPアドレスでアクセスしてみました。

すると…

この接続ではプライバシーが保護されません

『SSLの警告が出たってことは、IPアドレスで接続されたってことか???』

と思いつつ、「詳細設定」→「XXX.XX.XX.XXXにアクセスする(安全ではありません)」の手順でWebページを表示してみると…

Forbidden

Forbiddenが表示された!

どうやら、上手く設定ができていたようです。

よかったよかった。

 

Let’ Encrytpの更新でエラー

数日後、Let' Encrytpの更新でエラーが出ました。

「なんでだー!!」と思いながら、サーバーにログインしてLet' Encrytpのテスト更新コマンドを実行してみました。


#certbot renew --dry-run

MPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: affi-sapo-sv.com
   Type:   unauthorized
   Detail: Invalid response from
   http://affi-sapo-sv.com/.well-known/acme-challenge/vbet7YEPNcQOcghT-Yui-Op8aSDfGhJklz1qWer4t5d
   [123.45.67.890]: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
   2.0//EN\">\n<html><head>\n<title>403
   Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.

どうやらhttpでサイトにアクセスできないため、エラーになっていたようです。

よく考えると、先ほどの00-reject.confの設定でhttpへのアクセスを無効にしています。


<VirtualHost *:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>

しかし、httpでドメイン名でのVirtualHost設定をしていなかったため、httpへのアクセス全てが無効になっていました。

そこで次のように、00-reject.confを変更しました。


<VirtualHost *:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot ルートパス
  ServerName affi-sapo-sv.com
</VirtualHost>

<VirtualHost *:443>
ServerName any
SSLEngine on
SSLCertificateFile サーバー証明書ファイルのパス
SSLCertificateKeyFile 秘密鍵ファイルのパス
<Location />
Require all denied
</Location>
</VirtualHost>

コンフィグの書式確認→httpd再起動後に再度、Let’ Encrytpのテスト更新コマンドを実行。


#httpd -t
Syntax OK
#systemctl restart httpd
#certbot renew --dry-run
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/affi-sapo-sv.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

成功したので、実際に更新してみます。


# certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/affi-sapo-sv.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificates are not due for renewal yet:
  /etc/letsencrypt/live/affi-sapo-sv.com/fullchain.pem expires on 2021-05-26 (skipped)
No renewals were attempted.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The following certs are not due for renewal yet
「次の証明書はまだ更新の期限ではありません」
と表示されました…

証明書の期限を確認してみます。


# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: affi-sapo-sv.com
    Serial Number: 1a23bd567cd8e901fgh12i345j6789kfg1
    Key Type: RSA
    Domains: affi-sapo-sv.com
    Expiry Date: 2021-05-26 07:24:35+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/affi-sapo-sv.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/affi-sapo-sv.com/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

いつの間にか更新されています。
なんでだろう…

更新日:2021/01/27

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。