一部のLinuxディストリビューションでは、MySQLをインストールした後にポート3306が開いています。この記事では、管理されていないサーバーのポート3306へのアクセスを制限またはブロックする2つの方法について説明します。
この記事の情報は、管理されていない製品にのみ適用されます。以下に説明する手順を実行するには、サーバーへのルートアクセス権が必要です。方法#1:MySQLネットワーキングを無効にする
外部コンピュータからMySQLにアクセスする必要がない場合は、MySQLネットワーキングを無効にすることができます。
Linuxディストリビューションについては、以下の適切な手順に従ってください。
MySQLネットワーキングが無効になっている場合でも、必要に応じてリモートコンピューターからMySQLに安全にアクセスできます。これを行うには、SSHトンネルを構成できます。これを行う方法については、この記事を参照してください。CentOSとFedora
CentOSおよびFedoraでMySQLネットワーキングを無効にするには、次の手順に従います。
- SSHを使用してサーバーにログインします。
- コマンドプロンプトで、お好みのテキストエディタを使用して /etc/my.cnfを開きます。 ファイル。
- my.cnfで次の行を見つけます ファイル:
#skip-networking
この行がmy.cnfにない場合 ファイル、追加します。 -
#を削除します 行の先頭に署名して、行が次のようになるようにします。
skip-networking
- 変更を/etc/my.cnfに保存します ファイルを作成し、テキストエディタを終了します。
-
次のコマンドを入力して、MySQLサービスを再起動します。
service mysqld restart
これで、サーバーでポート3306が閉じられました。
デフォルトでは、DebianおよびUbuntu上のMySQLは localhostのみを使用するように構成されています。 ネットワーキング用のインターフェース(IPアドレス127.0.0.1)。これは、ポート3306が外部接続に対して閉じられていることを意味します。これがサーバーの構成であることを確認するには、次の手順に従います。
- SSHを使用してサーバーにログインします。
- コマンドプロンプトで、お好みのテキストエディタを使用して /etc/mysql/my.cnfを開きます。 ファイル。
- MySQLを見つけます バインドアドレス my.cnfの行 ファイル。次のようになります。
bind-address = 127.0.0.1
MySQLの場合 バインドアドレス 行は0.0.0.0に設定されます (またはアドレスがまったくない場合)、接続はすべてのインターフェイスで開かれます。 - /etc/my.cnfに変更を加えた場合 ファイルを作成して保存し、テキストエディタを終了します。
-
MySQLサービスを再起動するには、次のコマンドを入力します。
service mysql restart
これで、サーバーでポート3306が閉じられました。
方法#2:ファイアウォールルールを構成する
iptablesを使用して、ポート3306へのアクセスを制限するファイアウォールルールを作成できます。この方法の利点は、IPアドレスまたはその他の基準に基づいてポート3306へのアクセスを選択的に許可または拒否できることです。
たとえば、ポート3306への外部アクセスを完全にブロックするには、次のコマンドを入力します。
iptables -A INPUT -p tcp --dport 3306 -j DROP
同様に、特定のIPアドレスへのアクセスを許可し、他のすべてのIPアドレスをブロックするには、次のコマンドを入力します。 xxx.xxx.xxx.xxxを置き換えます アクセスを許可するIPアドレス:
iptables -A INPUT -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j DROP
INPUT にルールを挿入することで、MySQLに追加のIPアドレスへのアクセスを許可できます。 DROPの前のチェーン ルール。例:
iptables -I INPUT 1 -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT