← 対処の手順の一覧

データベースをインターネットから見えないようにする

この手順で使う値

  • ポート:1433・3306・5432・6379・9200・27017

Pengolin のアプリでは、お使いのPCで見つかったポートとネットワークの範囲を入れた手順を表示します。

これは何か

データベースは、アプリやサイトのデータをためておく仕組みです。インターネットから直接つながると、パスワードの総当たりや、設定の弱さを突いた情報の持ち出し・書き換えに使われます。今は、1433・3306・5432・6379・9200・27017番のデータベースが外から見えています。データベースは、同じ機械か、決まったアプリのサーバーからだけ使うのが基本です。

使っているかの確かめ方

データベースを動かしている機械で、1433・3306・5432・6379・9200・27017番で待っているかを確かめます。Linux では端末で次を実行し、出力に「:1433・3306・5432・6379・9200・27017」を含む行があれば待っています。「:1433・3306・5432・6379・9200・27017」の前が 0.0.0.0 や * なら全部のネットワークから受けています。127.0.0.1 なら同じ機械からだけです。

ss -tln

手順

  1. ルーターの管理画面で、ポート開放(ポートフォワード)の設定に 1433・3306・5432・6379・9200・27017番の転送が残っていれば消します。外から使う予定がないなら、これだけで外からは届かなくなります。画面の名前はルーターごとに違うので、ルーターの説明書を見てください。

  2. 管理者権限が必要

    同じ機械からだけ使うなら、データベースの設定で、待ち受けを 127.0.0.1(localhost)だけにします。PostgreSQL は postgresql.conf の listen_addresses を 'localhost' に、MySQL・MariaDB は設定ファイルの [mysqld] の節の bind-address を 127.0.0.1 に、MongoDB は net.bindIp を localhost に、Redis は bind を 127.0.0.1 にします。Elasticsearch は elasticsearch.yml の network.host と http.host の行を消して、既定(同じ機械からだけ)に戻します(最初の起動で http.host: 0.0.0.0 が自動で足されていることがあります)。変えたあと、データベースを再起動します。

  3. 管理者権限が必要

    別のサーバーから使う場合は、ファイアウォールで、そのサーバーのアドレスからだけ 1433・3306・5432・6379・9200・27017番を受けるようにします。SQL Server(Windows)では、Windows ファイアウォールのルールの「スコープ」で接続元を絞ります。

  4. データベースのパスワードを長いものに変え、認証がオフのもの(Redis や MongoDB の既定の設定など)は認証をオンにします。

  5. もう一度 Pengolin で診断して、データベースの項目が出なくなったことを確かめます。

直したら、もう一度診断すると確かめられます

アプリで診断する

出典

確認日:2026-11-03