Ubuntu18.04にMemcachedをインストールして保護する方法
序章
Memcachedなどのメモリオブジェクトキャッシングシステムは、情報をメモリに一時的に保存し、頻繁にまたは最近要求されたレコードを保持することで、バックエンドデータベースのパフォーマンスを最適化できます。 このようにして、データベースへの直接リクエストの数を減らします。
Memcachedのようなシステムは、不適切に構成されている場合、サービス拒否攻撃の原因となる可能性があるため、Memcachedサーバーを保護することが重要です。 このガイドでは、インストールをローカルまたはプライベートネットワークインターフェースにバインドし、Memcachedインスタンスの承認済みユーザーを作成することにより、Memcachedサーバーを保護する方法について説明します。
前提条件
このチュートリアルは、ルート以外でサーバーがセットアップされていることを前提としています sudo
ユーザーと基本的なファイアウォール。 そうでない場合は、次のように設定します。
- 1つのUbuntu18.04サーバー。Ubuntu18.04チュートリアルを使用した初期サーバーセットアップに従ってセットアップします。
これらの前提条件が整っていると、Memcachedサーバーをインストールして保護する準備が整います。
ステップ1—公式リポジトリからMemcachedをインストールする
サーバーにMemcachedをまだインストールしていない場合は、公式のUbuntuリポジトリからインストールできます。 まず、ローカルパッケージインデックスが更新されていることを確認します。
- sudo apt update
次に、公式パッケージを次のようにインストールします。
- sudo apt install memcached
インストールすることもできます libmemcached-tools
、Memcachedサーバーと連携するためのいくつかのツールを提供するライブラリ:
- sudo apt install libmemcached-tools
これで、Memcachedが、接続をテストできるツールとともに、サーバーにサービスとしてインストールされます。 これで、構成設定の保護に進むことができます。
ステップ2—Memcached構成設定の保護
Memcachedインスタンスがローカルインターフェースでリッスンしていることを確認するには 127.0.0.1
、にある構成ファイルでデフォルト設定を確認します。 /etc/memcached.conf
. UbuntuとDebianに同梱されているMemcachedの現在のバージョンには、 -l
ネットワークからのサービス拒否攻撃を防ぐローカルインターフェイスに設定されたパラメータ。 この設定を調べて、正しく設定されていることを確認できます。
開くことができます /etc/memcached.conf
と nano
:
- sudo nano /etc/memcached.conf
インターフェイス設定を調べるには、ファイル内で次の行を見つけます。
. . .
-l 127.0.0.1
. . .
デフォルト設定が表示されている場合 -l 127.0.0.1
その場合、この行を変更する必要はありません。 この設定をよりオープンに変更する場合は、UDPも無効にすることをお勧めします。これは、サービス拒否攻撃で悪用される可能性が高いためです。 (TCPに影響を与えずに)UDPを無効にするには、このファイルの最後に次のオプションを追加します。
. . .
-U 0
完了したら、ファイルを保存して閉じます。
Memcachedサービスを再起動して、変更を適用します。
- sudo systemctl restart memcached
次のように入力して、Memcachedが現在ローカルインターフェースにバインドされており、TCP接続のみをリッスンしていることを確認します。
- sudo netstat -plunt
次の出力が表示されます。
OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 2279/memcached
. . .
これはそれを確認します memcached
にバインドされています 127.0.0.1
TCPのみを使用するアドレス。
ステップ3—許可ユーザーの追加
認証されたユーザーをMemcachedサービスに追加するには、認証手順をアプリケーションプロトコルから切り離すフレームワークであるSimple Authentication and Security Layer(SASL)を使用できます。 Memcached構成ファイル内でSASLを有効にしてから、認証資格情報を持つユーザーの追加に進みます。
SASLサポートの構成
最初に、Memcachedインスタンスとの接続をテストできます。 memcstat
指図。 これは、構成ファイルに変更を加えた後、SASLとユーザー認証が有効になっていることを確認するのに役立ちます。
Memcachedが稼働していることを確認するには、次のように入力します。
- memcstat --servers="127.0.0.1"
次のような出力が表示されます。
OutputServer: 127.0.0.1 (11211)
pid: 2279
uptime: 65
time: 1546620611
version: 1.5.6
. . .
これで、SASLの有効化に進むことができます。 まず、を追加します -S
パラメータから /etc/memcached.conf
. ファイルを再度開きます。
- sudo nano /etc/memcached.conf
ファイルの最後に、以下を追加します。
. . .
-S
次に、を見つけてコメントを外します -vv
オプション。詳細な出力をに提供します。 /var/log/memcached
. コメントされていない行は次のようになります。
. . .
-vv
ファイルを保存して閉じます。
Memcachedサービスを再起動します。
- sudo systemctl restart memcached
次に、ログを調べて、SASLサポートが有効になっていることを確認できます。
- sudo journalctl -u memcached
SASLサポートが初期化されたことを示す次の行が表示されます。
Output. . .
Jan 04 16:51:12 memcached systemd-memcached-wrapper[2310]: Initialized SASL.
. . .
接続を再度確認できますが、SASLが初期化されているため、このコマンドは認証なしで失敗するはずです。
- memcstat --servers="127.0.0.1"
このコマンドは出力を生成しません。 次のように入力して、ステータスを確認できます。
- echo $?
$?
終了した最後のコマンドの終了コードを常に返します。 通常、それ以外のもの 0
プロセスの失敗を示します。 この場合、次の終了ステータスが表示されます。 1
、これは、 memcstat
コマンドが失敗しました。
認証されたユーザーの追加
今、私たちはダウンロードすることができます sasl2-bin
、SASLユーザーデータベースの管理プログラムを含むパッケージ。 これにより、認証されたユーザーを作成できます。
- sudo apt install sasl2-bin
次に、MemcachedがSASL構成設定を確認するディレクトリとファイルを作成します。
- sudo mkdir /etc/sasl2
- sudo nano /etc/sasl2/memcached.conf
SASL構成ファイルに以下を追加します。
mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2
ログレベルを指定することに加えて、 mech_list
に plain
、Memcachedに、独自のパスワードファイルを使用し、プレーンテキストのパスワードを確認する必要があることを通知します。 次に作成するユーザーデータベースファイルへのパスも指定します。 終了したら、ファイルを保存して閉じます。
次に、ユーザー資格情報を使用してSASLデータベースを作成します。 を使用します saslpasswd2
を使用してデータベースにユーザーの新しいエントリを作成するコマンド -c
オプション。 ここでのユーザーはsammyになりますが、この名前を自分のユーザーに置き換えることができます。 を使用して -f
オプションで、データベースへのパスを指定します。これは、設定したパスになります。 /etc/sasl2/memcached.conf
:
- sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 sammy
選択したパスワードを入力して再確認するように求められます。
最後に、 memcache
SASLデータベースに対するユーザーの所有権:
- sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
Memcachedサービスを再起動します。
- sudo systemctl restart memcached
ランニング memcstat
再度、認証プロセスが機能したかどうかを確認します。 今回は、認証資格情報を使用して実行します。
- memcstat --servers="127.0.0.1" --username=sammy --password=your_password
次のような出力が表示されます。
OutputServer: 127.0.0.1 (11211)
pid: 2772
uptime: 31
time: 1546621072
version: 1.5.6 Ubuntu
. . .
Memcachedサービスは、SASLサポートとユーザー認証で正常に実行されています。
ステップ4—プライベートネットワーク経由のアクセスを許可する(オプション)
ローカルインターフェースでリッスンするようにMemcachedを構成する方法について説明しました。これにより、Memcachedインターフェースを外部の第三者にさらされることから保護することで、サービス拒否攻撃を防ぐことができます。 ただし、他のサーバーからのアクセスを許可する必要がある場合があります。 この場合、Memcachedをプライベートネットワークインターフェースにバインドするように構成設定を調整できます。
注:このセクションでは、 UFW を使用してファイアウォール設定を構成する方法について説明しますが、DigitalOceanクラウドファイアウォールを使用してこれらの設定を作成することもできます。 DigitalOceanクラウドファイアウォールの設定の詳細については、DigitalOceanCloudファイアウォールの概要を参照してください。 特定のマシンへの着信トラフィックを制限する方法の詳細については、タグとサーバー名を使用したファイアウォールルールの適用に関するこのチュートリアルのセクションと、ファイアウォールタグの説明を確認してください。
ファイアウォールによるIPアクセスの制限
構成設定を調整する前に、ファイアウォールルールを設定して、Memcachedサーバーに接続できるマシンを制限することをお勧めします。 ファイアウォールルールを構成するには、クライアントサーバーのプライベートIPアドレスを知っている必要があります。 DigitalOceanのプライベートネットワーキングの詳細については、このDigitalOceanプライベートネットワーキングの概要を参照してください。
UFW ファイアウォールを使用している場合は、次のように入力して、Memcachedインスタンスへのアクセスを制限できます。
- sudo ufw allow from client_server_private_IP/32 to any port 11211
ufwエッセンシャルガイドを読むと、UFWファイアウォールの詳細を確認できます。
これらの変更を適切に行うと、サーバーのプライベートネットワークインターフェイスにバインドするようにMemcachedサービスを調整できます。
Memcachedをプライベートネットワークインターフェイスにバインドする
ファイアウォールが設置されたので、Memcached構成を調整して、代わりにサーバーのプライベートネットワークインターフェイスにバインドできます。 127.0.0.1
.
開くことができます /etc/memcached.conf
次のように入力して、ファイルを再作成します。
- sudo nano /etc/memcached.conf
内部で、 -l 127.0.0.1
以前にチェックまたは変更した行、およびサーバーのプライベートネットワークインターフェイスに一致するようにアドレスを変更します。
. . .
-l memcached_server_private_IP
. . .
終了したら、ファイルを保存して閉じます。
次に、Memcachedサービスを再起動します。
- sudo systemctl restart memcached
新しい設定を確認してください netstat
変更を確認するには:
- sudo netstat -plunt
OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
. . .
tcp 0 0 memcached_server_private_IP:11211 0.0.0.0:* LISTEN 2912/memcached
. . .
外部クライアントからの接続をテストして、引き続きサービスにアクセスできることを確認します。 許可されていないクライアントからのアクセスもチェックして、ファイアウォールルールが有効であることを確認することをお勧めします。
結論
このチュートリアルでは、Memcachedサーバーをローカルまたはプライベートネットワークインターフェイスにバインドするように構成し、SASL認証を有効にすることで、サーバーを保護する方法について説明しました。
Memcachedの詳細については、プロジェクトのドキュメントをご覧ください。 Memcachedの操作方法の詳細については、 Ubuntu14.04にMemcacheをインストールして使用する方法に関するチュートリアルを参照してください。